开发指南
权限说明
- Unity
- Android Java
- Android Kotlin
- iOS Swift
- iOS Objective-C
该模块依赖如下权限:
| 权限 | 使用目的 | 权限申请时机 |
|---|---|---|
| 网 络权限 | 用于访问网络数据 | 用户首次使用该功能时会申请权限 |
该模块将在应用中添加如下配置:
<uses-permission android:name="android.permission.INTERNET"/>
该模块依赖如下权限:
| 权限 | 使用目的 | 权限申请时机 |
|---|---|---|
| 网络权限 | 用于访问网络数据 | 用户首次使用该功能时会申请权限 |
该模块将在应用中添加如下配置:
<uses-permission android:name="android.permission.INTERNET"/>
准备集成 SDK
SDK 获取
- Unity
- Android Java
- Android Kotlin
- iOS Swift
- iOS Objective-C
第一步:添加 SDK 所需的外部依赖
SDK 内部使用了部分第三方库,开发者接入时需先确保 SDK 外部依赖库已正常接入,具体设置如下:
- SDK 使用的 JSON 解析库为
Newtonsoft-json,如果当前工程已接入该依赖库,则不需额外处理,否则需在Packages/manifest.json添加如下依赖:
"com.unity.nuget.newtonsoft-json":"3.2.1"
- SDK 使用
com.google.external-dependency-manager管理 Android、iOS 依赖,如果当前工程已接入该依赖库,则不需额外处理,否则需在Packages/manifest.json添加如下依赖:
{
"dependencies": {
"com.google.external-dependency-manager": "1.2.179"
},
"scopedRegistries": [
{
"name": "package.openupm.com",
"url": "https://package.openupm.com",
"scopes": [
"com.google.external-dependency-manager"
]
}
]
}
第二步:添加 SDK 依赖
SDK 支持 Unity Package Manager 及本地文件导入两种集成方式,开发者根据需求选择其中一种即可,推荐使用远程依赖。
远程依赖
SDK 支持通过 NPMJS 及 GitHub 两种方式,开发者选择其中一种即可。
1. NPMJS 接入
在项目的 Packages/manifest.json 文件中添加以下依赖:
"dependencies":{
"com.taptap.sdk.core":"4.10.1",
"com.taptap.sdk.login":"4.10.1",
}
但需要注意的是,需在 Packages/manifest.json 中 dependencies 同级下声明 scopedRegistries:
"scopedRegistries":[
{
"name": "NPMJS",
"url": "https://registry.npmjs.org/",
"scopes": ["com.taptap"]
}
]
2. GitHub 接入
在项目的 Packages/manifest.json 文件中添加以下依赖:
"dependencies":{
"com.taptap.sdk.core":"https://github.com/taptap/TapSDKCore-Unity.git#4.10.1",
"com.taptap.sdk.login":"https://github.com/taptap/TapSDKLogin-Unity.git#4.10.1",
}
在 Unity 顶部菜单中选择 Window > Package Manager 可查看已经安装在项目中的包。
本地文件导入
- 在 下载页 下载下列模块对应
unitypackage文件,并在 Unity 项目中依次通过 Assets > Import Packages > Custom Packages 进行导入,包括:
TapSDK_Core.unitypackageTapTapSDK 核心模块,必选。TapSDK_Login.unitypackageTapTapSDK 登录模块,必选。
- 如果当前项目已集成
Newtonsoft.Json依赖,则忽略该步骤,否则在NuGet.orgNewtonsoft.Json 页面中通过点击右侧 「Download package」 下载库文件,并将下载的文件后缀从.nupkg修改为.zip,同时解压该文件并复制内部的Newtonsoft.Json.dll文件拷贝到工程Assets的Plugins目录下,另外为了避免导出 IL2CPP 平台时删除必要数据,需在Assets目录下创建link.xml文件(如果已有该文件,则添加如下内容),其内容如下:
<linker>
<assembly fullname="System.Core">
<type fullname="System.Linq.Expressions.Interpreter.LightLambda" preserve="all" />
</assembly>
</linker>
iOS 配置
在 Assets/Plugins/iOS/Resource 目录下创建 TDS-Info.plist 文件,复制以下代码并且替换其中的 ClientId。
复制使用以下内容时,请删除空行以及注释,以免出现 XML 解析时报错,ApplicationException: expected a key node。
<?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>taptap</key>
<dict>
<key>client_id</key>
<string>ClientId</string>
</dict>
</dict>
</plist>
- 项目根目录的 build.gradle 添加仓库地址:
repositories {
google()
mavenCentral()
}
- app module 的 build.gradle 添加对应依赖:
dependencies {
implementation 'com.taptap.sdk:tap-core:4.10.1'
implementation 'com.taptap.sdk:tap-kit:4.10.1'
implementation 'com.taptap.sdk:tap-login:4.10.1'
}
如果 targetSdkVersion < 29,还需要添加如下配置:
manifest节点添加xmlns:tools="http://schemas.android.com/tools"application节点添加tools:remove="android:requestLegacyExternalStorage"
- 项目根目录的 build.gradle 添加仓库地址:
repositories {
google()
mavenCentral()
}
- app module 的 build.gradle 添加对应依赖:
dependencies {
implementation 'com.taptap.sdk:tap-core:4.10.1'
implementation 'com.taptap.sdk:tap-kit:4.10.1'
implementation 'com.taptap.sdk:tap-login:4.10.1'
}
如果 targetSdkVersion < 29,还需要添加如下配置:
manifest节点添加xmlns:tools="http://schemas.android.com/tools"application节点添加tools:remove="android:requestLegacyExternalStorage"
添加依赖
iOS 提供通过添加 cocoaPods 远程依赖和使用本地文件导入两种集成方式,推荐使用远程依赖方式。
远程依赖
- 在工程 Podfile 文件中对应模块下添加依赖:
pod 'TapTapSDK/Login', '~> 4.10.1'
-
执行
pod install下载对应依赖文件 -
将工程 Pods 目录下
TapTapLoginSDK/Frameworks/TapTapLoginResource.bundle等资源文件导入工程中
本地文件依赖
TapTap 登录依赖于初始化模块,使用本地文件方式添加依赖时,需先参考 TapSDK 集成 添加对应本地文件依赖项。
- 在 下载页 下载如下文件:
TapTapLoginSDK.xcframework登录依赖库TapTapLoginResource.bundle登录资源文件
- 在工程中添加
framework静态库,注意添加时选择 Embed 方式为 Do Not Embed,导入bundle资源文件
工程配置
TapTap 客户端应用跳转配置
-
打开
info.plist,添加如下配置(请替换clientID为你在控制台获取的 Client ID):
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLName</key>
<string>taptap</string>
<key>CFBundleURLSchemes</key>
<array>
<!-- 这里注意下,中括号需要去掉,最终是 Client ID 前拼接上 `tt` 的形式,例如:ttFwFdCxxxxxxxQDQwQN -->
<string>tt[clientID]</string>
</array>
</dict>
</array>
<key>LSApplicationQueriesSchemes</key>
<array>
<string>tapiosdk</string>
<string>tapsdk</string>
<string>taptap</string>
</array> -
配置 openUrl
a) 如果项目中有
SceneDelegate.swift,请先删除,然后请添加如下代码到AppDelegate.swift文件:
import TapTapLoginSDK
func application(_ app: UIApplication, open url: URL) -> Bool {
return TapTapLogin.open(url: url)
}
func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
return TapTapLogin.open(url: url)
}
func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool {
return TapTapLogin.open(url: url)
}
b) 删除 info.plist 里面的 Application Scene Manifest

c) 删除 AppDelegate.swift 文件中的两个管理 Scenedelegate 生命周期代理方法
func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration {
}
func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set<UISceneSession>) {
}
d) 在 AppDelegate.swift 中添加 UIWindow
var window: UIWindow?
添加依赖
iOS 提供通过添加 cocoaPods 远程依赖和使用本地文件导入两种集成方式,推荐使用远程依赖方式。
远程依赖
- 在工程 Podfile 文件中对应模块下添加依赖:
pod 'TapTapSDK/Login', '~> 4.10.1'
-
执行
pod install下载对应依赖文件 -
将工程 Pods 目录下
TapTapLoginSDK/Frameworks/TapTapLoginResource.bundle等资源文件导入工程中
本地文件依赖
TapTap 登录依赖于初始化模块,使用本地文件方式添加依赖时,需先参考 TapSDK 集成 添加对应本地文件依赖项。
- 在 下载页 下载如下文件:
TapTapLoginSDK.xcframework登录依赖库TapTapLoginResource.bundle登录资源文件
- 在工程中添加
framework静态库,注意添加时选择 Embed 方式为 Do Not Embed,导入bundle资源文件
工程配置
TapTap 客户端应用跳转配置
-
打开
info.plist,添加如下配置(请替换clientID为你在控制台获取的 Client ID):
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLName</key>
<string>taptap</string>
<key>CFBundleURLSchemes</key>
<array>
<!-- 这里注意下,中括号需要去掉,最终是 Client ID 前拼接上 `tt` 的形式,例如:ttFwFdCxxxxxxxQDQwQN -->
<string>tt[clientID]</string>
</array>
</dict>
</array>
<key>LSApplicationQueriesSchemes</key>
<array>
<string>tapiosdk</string>
<string>tapsdk</string>
<string>taptap</string>
</array> -
配置 openUrl
a) 如果项目中有
SceneDelegate.m,请先删除,然后请添加如下代码到AppDelegate.m文件:#import "TapTapLoginSDK/TapTapLoginSDK-Swift.h"
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
return [TapTapLogin openWithUrl:url];
}
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
return [TapTapLogin openWithUrl:url];
}b) 删除
info.plist里面的 Application Scene Manifest
c) 删除
AppDelegate.m文件中的两个管理Scenedelegate生命周期代理方法#pragma mark - UISceneSession lifecycle
- (UISceneConfiguration *)application:(UIApplication *)application configurationForConnectingSceneSession:(UISceneSession *)connectingSceneSession options:(UISceneConnectionOptions *)options {
return [[UISceneConfiguration alloc] initWithName:@"Default Configuration" sessionRole:connectingSceneSession.role];
}
- (void)application:(UIApplication *)application didDiscardSceneSessions:(NSSet<UISceneSession *> *)sceneSessions {
}d) 在
AppDelegate.h中添加UIWindow@property (strong, nonatomic) UIWindow *window;
SDK 初始化
TapTap 登录模块依赖于 TapTapSDK 初始化,具体参考 TapSDK 集成
- Unity
- Android Java
- Android Kotlin
- iOS Swift
- iOS Objective-C
using TapSDK.Core;
// 核心配置 详细参数见 [TapTapSDK]
TapTapSdkOptions coreOptions = new TapTapSdkOptions();
// TapSDK 初始化
TapTapSDK.Init(coreOptions);
TapTapSdkOptions 详细参数见 入门指南#快速开始
import com.taptap.sdk.core.TapTapRegion;
import com.taptap.sdk.core.TapTapSdk;
import com.taptap.sdk.core.TapTapSdkOptions;
/* 必选配置 */
// 开发者中心对应 Client ID
String clientId = "";
// 开发者中心对应 Client Token
String clientToken = "";
// 是否开启 log,建议 Debug 开启,Release 关闭,默认关闭 log
boolean enableLog = BuildConfig.DEBUG;
TapTapSdkOptions tapSdkOptions = new TapTapSdkOptions(
clientId, // 游戏 Client ID
clientToken, // 游戏 Client Token
TapTapRegion.GLOBAL // 游戏可玩区域: [TapTapRegion.CN]=国内 [TapTapRegion.GLOBAL]=海外
);
tapSdkOptions.setEnableLog(enableLog);
// 初始化 TapSDK
TapTapSdk.init(context, tapSdkOptions);
TapTapSdkOptions 详细参数见 入门指南#快速开始
import com.taptap.sdk.core.TapTapSdk
import com.taptap.sdk.core.TapTapSdkOptions
import com.taptap.sdk.core.TapTapRegion
import com.taptap.sdk.core.TapTapLanguage
TapTapSdk.init(
context = context,
sdkOptions = TapTapSdkOptions(
clientId = clientId,
clientToken = clientToken,
region = TapTapRegion.GLOBAL,
preferredLanguage = TapTapLanguage.ZH_HANS,
enableLog = false
)
)
import TapTapCoreSDK
// 核心配置项
let options = TapTapSdkOptions()
options.clientId = "your_client_id" // 必须,开发者中心对应 Client ID
options.clientToken = "your_client_token" // 必须,开发者中心对应 Client Token
options.region = .overseas // .CN:中国大陆,.overseas:其他国家或地区
options.enableLog = enableLog.selectedSegmentIndex == 0 // 是否开启 log,建议 Debug 开启,Release 关闭,默认关闭 log
options.preferredLanguage = TapLanguageType.auto // 语言设置,默认跟随系统,当系统语言不支持时,国内为中文,海外为英文
// 初始化 SDK
TapTapSDK.initWith(options)
#import "TapTapCoreSDK/TapTapSDK.h"
// 核心配置项
TapTapSdkOptions *options = [[TapTapSdkOptions alloc] init];
options.clientId = @"your_clientId"; // 必须,开发者中心对应 Client ID
options.clientToken = @"your_client_token"; // 必须,开发者中心对应 Client Token
options.region = TapTapRegionTypeOverseas; // CN:中国大陆,overseas:其他国家或地区
options.enableLog = YES; // 是否开启 log,建议 Debug 开启,Release 关闭,默认关闭 log
options.preferredLanguage = TapLanguageType_Auto; // 语言设置,默认跟随系统,当系统语言不支持时,国内为中文,海外为英文
// 初始化 SDK
[TapTapSDK initWithOptions:options];