跳到主要内容

iOS

环境要求

接入前准备

请联系平台同事获取最新的 SDK 压缩包,解压后选择需要的 framework 和 bundle 导入到您的 project 中。

集成 XDSDK

  1. 下载的压缩包解压后分为两部分 ThirdSDKXDSDK,其中所有的 framework 均为静态库,导入后请设置为 DO Not Embed,具体说明如下:
必选项:
XDSDK/
- XDAccountSDK.framework 登录
- XDPaymentSDK.framework 支付
- XDCommonSDK.framework 基础库
- XDResources.bundle 资源包

必选的 TapSDK:
ThirdSDK/TapSDK/
- LeanCloudObjc.framework
- TapBootstrapSDK.framework
- TapCommonSDK.framework
- TapLoginSDK.framework
- TapDB.framework

可选项:
TapSDK/CN/ 国内三方 SDK ,按需添加
TapSDK/Oversea/ 海外三方 SDK ,按需添加
  1. 前文中的 XDConfig.json 文件 导入到 XCode 工程中。
备注
  • 如果使用 Google 登录或 firebase 埋点,请在 Firebase 后台下载 GoogleService-Info.plist 并添加到项目中。
  • XDSDK 目前版本选择了第三方登录则必须包含第三方埋点,反之同理。

添加系统依赖库

请检查项目中是否已自动添加以下依赖项:

LocalAuthentication.framework
AuthenticationServices.framework
SystemConfiguration.framework
Accelerate.framework
SafariServices.framework
Webkit.framework
CoreTelephony.framework
Security.framework
libc++.tdb
AVFoundation.framework

若运行时遇到相关依赖库加载报错,可改为 Optional 尝试(AuthenticationServices.framework iOS 12 以上才支持,请改为 Optional )。

配置编译选项

Build Setting 中的 Other Link Flag 中添加 -ObjC

Capabilities 中打开 In-App PurchasePush NotificationsSign In With Apple 功能。

配置 URL Types

选择应用 TARGETS,点击 Info 标签,展开 URL Types 。添加以下几项 URL Scheme。大括号内为游戏App对应参数,在各自平台的开发者后台获取。

TapTap   :  tt{taptap-client-id}    
Facebook : fb{facebook-app-id}
Google : {reversed-google-client-id}
Line : line3rdp.{product_bundle_identify}
Twitter : tdsg.twitter.{twitter-consumerKey}

或在 Info.plist 中做以下配置,例:

<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLName</key>
<string>line</string>
<key>CFBundleURLSchemes</key>
<array>
<string>line3rdp.{product_bundle_identify}</string>
</array>
</dict>
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLName</key>
<string>facebook</string>
<key>CFBundleURLSchemes</key>
<array>
<string>fb{facebook-app-id}</string>
</array>
</dict>
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLName</key>
<string>google</string>
<key>CFBundleURLSchemes</key>
<array>
<!-- 反转的google client id : com.googleusercontent.apps.**** -->
<string>{reversed-google-client-id}</string>
</array>
</dict>
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLName</key>
<string>taptapinte</string>
<key>CFBundleURLSchemes</key>
<array>
<string>tt{taptap-client-id}</string>
</array>
</dict>
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLName</key>
<string>twitter-auth</string>
<key>CFBundleURLSchemes</key>
<array>
<string>tdsg.twitter.feOTAapnuXNFngQ2LktBnCpeF</string>
</array>
</dict>
<!-- 微信 相关 -->
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLName</key>
<string>wechat</string>
<key>CFBundleURLSchemes</key>
<array>
<string>wxbdfbe5dbd3e3c64b</string>
</array>
</dict>
<!-- QQ 相关 -->
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLName</key>
<string>qq</string>
<key>CFBundleURLSchemes</key>
<array>
<string>tencent1106148555</string>
</array>
</dict>
<!-- 微博 相关 -->
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLName</key>
<string>weibo</string>
<key>CFBundleURLSchemes</key>
<array>
<string>wb187877851</string>
</array>
</dict>
</array>

配置 Schemes

在应用的 info.plist 中配置以下内容。

<key>LSApplicationQueriesSchemes</key>
<array>
<string>tapsdk</string>
<string>tapiosdk</string>
<string>fbapi</string>
<string>fbapi20130214</string>
<string>fbapi20130410</string>
<string>fbapi20130702</string>
<string>fbapi20131010</string>
<string>fbapi20131219</string>
<string>fbapi20140410</string>
<string>fbapi20140116</string>
<string>fbapi20150313</string>
<string>fbapi20150629</string>
<string>fbapi20160328</string>
<string>fbauth</string>
<string>fb-messenger-share-api</string>
<string>fbauth2</string>
<string>fbshareextension</string>
<string>lineauth2</string>
<!-- 微博 相关 -->
<string>sinaweibo</string>
<string>weibosdk</string>
<string>weibosdk2.5</string>
<string>weibosdk3.3</string>
<!-- QQ 相关 -->
<string>mqqopensdkapiV2</string>
<string>mqq</string>
<string>mqqapi</string>
<string>tim</string>
<string>mqqopensdknopasteboard</string>
<!-- 微信 相关 -->
<string>weixin</string>
<string>weixinULAPI</string>
<string>weixinURLParamsAPI</string>
</array>

配置权限列表

SDK 涉及到的权限请求如下:

权限说明配置方式备注
相机权限在 info.plist 中配置 NSCameraUsageDescription 及描述文案。如:请允许 xxx 获取并使用您的相机。客服页面可能需要拍摄相关照片或视频
麦克风权限在 info.plist 中配置 NSMicrophoneUsageDescription 及描述文案。如:请允许 xxx 获取并使用您的麦克风。客服页面可能需要拍摄相关视频
相册权限在 info.plist 中配置 NSPhotoLibraryAddUsageDescription 及描述文案。如:请允许 xxx 获取并使用您的相册。客服页面可能需要访问照片

配置 IDFA

如果您的应用需要打开 IDFA,则需要:

  1. 现在 XDConfig.jsonidfa_enabled 设置为 true
  2. 在应用中导入下列系统库:
    AdSupport.framework
    AppTrackingTransparency.framework -> 需要在 Build Phases - Link Binary With Libraries 中设置为 Optional
  3. info.plist 中配置 NSUserTrackingUsageDescription 及对应的文案。

做完上述配置后应用会在您调用初始化时自动尝试请求获取 IDFA 权限,此时会弹出系统的隐私权限请求弹窗。

配置 ASA

如果您在 IDFA 的基础上想要打开 ASA 的数据,则需要在应用中导入下列系统库:

AdServices.framework -> 需要在 Build Phases - Link Binary With Libraries 中设置为 Optional

配置 App 所需能力

如果您的 APP 具有苹果登录、微信分享、推送等功能,需要在项目的 Target 下,点击 + Capabilities 按钮,添加自己所需的功能,具体开启方式如下图: img

如果您的项目并不是一个 Xcode 项目(比如说是Unity项目),您需要生成一个 YourProjectName.entitlements 文件,值得注意的是, Entitlements 里面申请的功能必须和你 iOS 的证书包含的功能一致,否则打包失败 (这个证书功能开启需要到Apple开发者平台去配置。简单一点的话,可以用上述Xcode的+ Capabilities 功能,会自动帮我们配置)。Entitlements 示例如下,不用的可以删掉:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<!-- 苹果登录需要的权限 -->
<key>aps-environment</key>
<string>development</string>
<key>com.apple.developer.applesignin</key>
<array>
<string>Default</string>
</array>
<!-- 实现通用链接 universal link 的配置,微信、QQ 等分享需要 -->
<key>com.apple.developer.associated-domains</key>
<array>
<string>webcredentials:example.com</string>
<string>applinks:www.xd.com</string>
</array>
</dict>
</plist>

最后在 Build Setting -> Code Signing Entitlements 的路径里配置成你生成的 Entitlements 文件。