乐玩


iOS壳包接入头条+微信分享+穿山甲广告

<p>[TOC]</p> <h3>1、SDK资源引入</h3> <pre><code>//可混淆修改 LewanSDK.h LewanSDK.m AES256.h AES256.m LYSDKADUtils.h LYSDKADUtils.m LYSDKShareUtils.h LYSDKShareUtils.m //头条 SDK BDASignalDefinitions.h BDASignalManager.h libBDASignalSDK //BUGLY SDK Bugly.framework //穿山甲 SDK CSJ_SDK 文件夹 //微信分享(无支付) SDK WechatOpenSDK.framework //隐私文件 按需合并自身已有 PrivacyInfo.xcprivacy</code></pre> <h3>[穿山甲官方文档](<a href="https://www.csjplatform.com/supportcenter/5377">https://www.csjplatform.com/supportcenter/5377</a> &quot;穿山甲官方文档&quot;)</h3> <h3>1.1、工程其他配置</h3> <ul> <li>穿山甲SDK的运行环境</li> <li>支持系统iOS 11.0及以上;</li> <li>SDK编译环境 Xcode 14.1及以上;</li> <li>支持架构: x86-64, armv7, arm64,i386</li> </ul> <h4>1.2.1、添加权限</h4> <ul> <li>工程plist文件设置,点击右边的information Property List后边的 &quot;+&quot; 展开添加 App Transport Security Settings,先点击左侧展开箭头,再点右侧加号,Allow Arbitrary Loads 选项自动加入,修改值为 YES。 SDK API 已经全部支持HTTPS,但是广告主素材存在非HTTPS情况。</li> </ul> <pre><code class="language-xml">&amp;lt;key&amp;gt;NSAppTransportSecurity&amp;lt;/key&amp;gt; &amp;lt;dict&amp;gt; &amp;lt;key&amp;gt;NSAllowsArbitraryLoads&amp;lt;/key&amp;gt; &amp;lt;true/&amp;gt; &amp;lt;/dict&amp;gt;</code></pre> <h4>1.2.2、build settings设置</h4> <ul> <li>Build Settings中Other Linker Flags 增加参数</li> </ul> <pre><code>-ObjC -l&amp;quot;c++&amp;quot; -l&amp;quot;c++abi&amp;quot; -l&amp;quot;sqlite3&amp;quot; -l&amp;quot;z&amp;quot; -all_load</code></pre> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=ab7f8a2a07d464995ce13c585d8baa36&amp;amp;file=file.png" alt="" /></p> <h4>1.2.3、添加依赖库</h4> <ul> <li>工程需要在TARGETS -&gt; Build Phases中找到Link Binary With Libraries,点击“+”,依次添加下列依赖库</li> </ul> <pre><code>CoreML.framework (6.3.0.0及以上版本新增) Accelerate.framework AdSupport.framework AppTrackingTransparency.framework AudioToolbox.framework AVFoundation.framework CoreGraphics.framework CoreImage.framework CoreLocation.framework CoreMedia.framework CoreMotion.framework CoreTelephony.framework CoreText.framework ImageIO.framework JavaScriptCore.framework MapKit.framework MediaPlayer.framework MobileCoreServices.framework QuartzCore.framework Security.framework StoreKit.framework SystemConfiguration.framework UIKit.framework WebKit.framework DeviceCheck.framework依赖(4.8.0.3及以上版本新增) libbz2.tbd libc++.tbd libiconv.tbd libresolv.9.tbd libsqlite3.tbd libxml2.tbd libz.tbd libc++abi.tbd</code></pre> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=776631e72af52e93c6c40900fe4032fd&amp;amp;file=file.png" alt="" /></p> <h4>1.2.4、iOS17隐私策略适配说明</h4> <ul> <li>如果您的游戏本身包含PrivacyInfo.xcprivacy文件,请将穿山甲的PrivacyInfo.xcprivacy中的条款补全到自身的PrivacyInfo.xcprivacy中</li> <li>如果没有可以在工程点击 file-new-file 选择 PrivacyInfo 文件,然后使用source code方式打开复制以下内容</li> </ul> <pre><code class="language-xml">&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt; &amp;lt;!DOCTYPE plist PUBLIC &amp;quot;-//Apple//DTD PLIST 1.0//EN&amp;quot; &amp;quot;http://www.apple.com/DTDs/PropertyList-1.0.dtd&amp;quot;&amp;gt; &amp;lt;plist version=&amp;quot;1.0&amp;quot;&amp;gt; &amp;lt;dict&amp;gt; &amp;lt;key&amp;gt;NSPrivacyCollectedDataTypes&amp;lt;/key&amp;gt; &amp;lt;array/&amp;gt; &amp;lt;key&amp;gt;NSPrivacyAccessedAPITypes&amp;lt;/key&amp;gt; &amp;lt;array&amp;gt; &amp;lt;dict&amp;gt; &amp;lt;key&amp;gt;NSPrivacyAccessedAPIType&amp;lt;/key&amp;gt; &amp;lt;string&amp;gt;NSPrivacyAccessedAPICategoryFileTimestamp&amp;lt;/string&amp;gt; &amp;lt;key&amp;gt;NSPrivacyAccessedAPITypeReasons&amp;lt;/key&amp;gt; &amp;lt;array&amp;gt; &amp;lt;string&amp;gt;C617.1&amp;lt;/string&amp;gt; &amp;lt;string&amp;gt;DDA9.1&amp;lt;/string&amp;gt; &amp;lt;/array&amp;gt; &amp;lt;/dict&amp;gt; &amp;lt;dict&amp;gt; &amp;lt;key&amp;gt;NSPrivacyAccessedAPIType&amp;lt;/key&amp;gt; &amp;lt;string&amp;gt;NSPrivacyAccessedAPICategorySystemBootTime&amp;lt;/string&amp;gt; &amp;lt;key&amp;gt;NSPrivacyAccessedAPITypeReasons&amp;lt;/key&amp;gt; &amp;lt;array&amp;gt; &amp;lt;string&amp;gt;35F9.1&amp;lt;/string&amp;gt; &amp;lt;/array&amp;gt; &amp;lt;/dict&amp;gt; &amp;lt;dict&amp;gt; &amp;lt;key&amp;gt;NSPrivacyAccessedAPIType&amp;lt;/key&amp;gt; &amp;lt;string&amp;gt;NSPrivacyAccessedAPICategoryDiskSpace&amp;lt;/string&amp;gt; &amp;lt;key&amp;gt;NSPrivacyAccessedAPITypeReasons&amp;lt;/key&amp;gt; &amp;lt;array&amp;gt; &amp;lt;string&amp;gt;7D9E.1&amp;lt;/string&amp;gt; &amp;lt;string&amp;gt;E174.1&amp;lt;/string&amp;gt; &amp;lt;/array&amp;gt; &amp;lt;/dict&amp;gt; &amp;lt;dict&amp;gt; &amp;lt;key&amp;gt;NSPrivacyAccessedAPIType&amp;lt;/key&amp;gt; &amp;lt;string&amp;gt;NSPrivacyAccessedAPICategoryUserDefaults&amp;lt;/string&amp;gt; &amp;lt;key&amp;gt;NSPrivacyAccessedAPITypeReasons&amp;lt;/key&amp;gt; &amp;lt;array&amp;gt; &amp;lt;string&amp;gt;CA92.1&amp;lt;/string&amp;gt; &amp;lt;/array&amp;gt; &amp;lt;/dict&amp;gt; &amp;lt;/array&amp;gt; &amp;lt;/dict&amp;gt; &amp;lt;/plist&amp;gt;</code></pre> <h4>1.2.5、添加 SKAdNetwork 支持(复制即可)</h4> <ul> <li>将穿山甲的 SKAdNetwork ID 添加到 info.plist 中,以保证 SKAdNetwork 的正确运行</li> </ul> <pre><code class="language-xml">&amp;lt;key&amp;gt;SKAdNetworkItems&amp;lt;/key&amp;gt; &amp;lt;array&amp;gt; &amp;lt;dict&amp;gt; &amp;lt;key&amp;gt;SKAdNetworkIdentifier&amp;lt;/key&amp;gt; // SKAdNetwork方案的穿山甲SKAdNetwork id &amp;lt;string&amp;gt;238da6jt44.skadnetwork&amp;lt;/string&amp;gt; &amp;lt;/dict&amp;gt; &amp;lt;dict&amp;gt; &amp;lt;key&amp;gt;SKAdNetworkIdentifier&amp;lt;/key&amp;gt; // SKAdNetwork方案的穿山甲SKAdNetwork id &amp;lt;string&amp;gt;x2jnk7ly8j.skadnetwork&amp;lt;/string&amp;gt; &amp;lt;/dict&amp;gt; &amp;lt;dict&amp;gt; &amp;lt;key&amp;gt;SKAdNetworkIdentifier&amp;lt;/key&amp;gt; // SKAdNetwork方案的穿山甲SKAdNetwork id &amp;lt;string&amp;gt;22mmun2rn5.skadnetwork&amp;lt;/string&amp;gt; &amp;lt;/dict&amp;gt; &amp;lt;/array&amp;gt;</code></pre> <h4>1.2.6、支持苹果ATT</h4> <ul> <li>要获取 App Tracking Transparency 权限,请更新您的 Info.plist,添加 NSUserTrackingUsageDescription 字段和自定义文案描述。代码示例:</li> </ul> <pre><code class="language-xml">&amp;lt;key&amp;gt;NSUserTrackingUsageDescription&amp;lt;/key&amp;gt; &amp;lt;string&amp;gt;该标识符将用于向您投放个性化广告&amp;lt;/string&amp;gt;</code></pre> <h4>1.2.7、添加注册 URL scheme</h4> <ul> <li>在 Xcode 中,选择你的工程设置项,选中“TARGETS”一栏,在“info”标签栏的“URL type“添加“URL scheme” 1、输入应用对应的包名作为scheme头; 2、添加微信 appid</li> </ul> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=e97beeaca8d524d981bc6d278d3cd42a&amp;amp;file=file.png" alt="" /></p> <h4>1.2.8、添加 Queries URL Schemes</h4> <ul> <li>在 Xcode 中,选择你的工程设置项,选中“TARGETS”一栏,在“info”标签栏的“Queries URL Schemes“添加 weixin、weixinULAPI、weixinURLParamsAPI</li> </ul> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=bd84fdc184b3a793312171d29eae2290&amp;amp;file=file.png" alt="" /></p> <h4>1.2.9、添加Associated Domains</h4> <ul> <li> <p>打开Associated Domains开关,将Universal Links域名加到配置上</p> </li> <li>applinks:ulink.llewan.com</li> </ul> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=a221d6c3439c703c7240a1c79824761f&amp;amp;file=file.png" alt="" /></p> <h3>2、接口说明</h3> <h4>2.1、客户端启动上报接口( 生命周期)</h4> <pre><code>#import &amp;quot;LewanSDK.h&amp;quot; 如使用AppDelegate</code></pre> <pre><code class="language-objectivec">- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {     [[LewanSDK getInstance] application:application didFinishLaunchingWithOptions:launchOptions];     return YES; } - (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary&amp;lt;UIApplicationOpenURLOptionsKey,id&amp;gt; *)options{     [[LewanSDK getInstance] application:app openURL:url options:options];     return YES; } - (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray&amp;lt;id&amp;lt;UIUserActivityRestoring&amp;gt;&amp;gt; * _Nullable))restorationHandler{     [[LewanSDK getInstance] application:application continueUserActivity:userActivity restorationHandler:restorationHandler];     return YES; }</code></pre> <pre><code>如使用SceneDelegate</code></pre> <pre><code class="language-objectivec">- (void)scene:(UIScene *)scene willConnectToSession:(UISceneSession *)session options:(UISceneConnectionOptions *)connectionOptions {     [[LewanSDK getInstance] scene:scene willConnectToSession:session options:connectionOptions]; } - (void)scene:(UIScene *)scene openURLContexts:(NSSet&amp;lt;UIOpenURLContext *&amp;gt; *)URLContexts{     [[LewanSDK getInstance] scene:scene openURLContexts:URLContexts]; } - (void)scene:(UIScene *)scene continueUserActivity:(NSUserActivity *)userActivity{     [[LewanSDK getInstance] scene:scene continueUserActivity:userActivity]; }</code></pre> <h4>2.2、SDK 初始化</h4> <ul> <li>在 H5 游戏界面 WKWebView中调用</li> </ul> <pre><code>    [[LewanSDK getInstance] setupSDK:self];//初始化     [[LewanSDK getInstance] setPageView:WKWebView];//传入 webview 用于交互     //封装旧激活上报代码,如已接入旧的代码可不调用(即 3、客户端上报激活代码demo )     [[LewanSDK getInstance] gameActive];</code></pre> <h4>2.3、注册交互监听</h4> <ul> <li>在 H5游戏界面 WKWebView 初始化中设置 <code>iosWebView</code>(必须)</li> </ul> <pre><code>    WKWebViewConfiguration *config = [[WKWebViewConfiguration alloc]init];     [config.userContentController addScriptMessageHandler:self name:@&amp;quot;iosWebView&amp;quot;]; //webview 初始化传入,或其他方式传入 iosWebView 即可</code></pre> <ul> <li>在WKScriptMessageHandler中调用</li> </ul> <pre><code>- (void)userContentController:(WKUserContentController *)userContentController didReceiveScriptMessage:(WKScriptMessage *)message{     [[LewanSDK getInstance] userContentController:userContentController didReceiveScriptMessage:message]; }</code></pre>

页面列表

ITEM_HTML