跳到主要内容

iOS

环境要求

接入前准备

下载 XDSDK iOS,解压后选择需要的 framework 和 bundle 导入到您的 project 中。

集成 XDSDK

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

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

可选项:
XDSDK/
- XDThirdLoginSDK.framework 海外第三方登录平台
- XDThirdTrackSDK.framework 海外第三方埋点平台

- XDThirdLoginCNSDK.framework 国内第三方登录和分享

其余文件夹内容均为可选项,请根据自己的需求添加对应文件夹内的所有文件。

TapSDK 版本信息参见:TapSDK RELEASE NOTE

备注
  • XDSDK 包含了登录、支付及一些基础功能,游戏可自行选择需要接入的模块,第三方登录、第三方埋点同理。
  • XDSDK 本身不强制绑定 TapSDK 的版本,TapSDK 未有重大 API 变动时,游戏可根据自身需求依赖对应的 TapSDK 版本。
  1. 前文中的 XDConfig.json 文件 导入到 XCode 工程中。

第三方登录配置相关

XDSDK 默认只提供 TapTap 登录、Apple 登录和游客登录,其他第三方登录功能集成在 XDThirdLogin 模块中,游戏可根据自身需要添加对应第三方平台登录配置。

第三方埋点配置相关

XDSDK 默认只提供 TapDB 埋点功能(内含支付成功埋点事件),其他第三方埋点功能集成在 XDThirdTrack 模块中,游戏可根据自身需要添加对应第三方平台埋点配置。

备注
  • 如果使用 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 的数据,则需要在应用中导入下列系统库:

iAd.framework
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 文件。