REP 开发指南
权限说明
- Unity
- Android Java
- Android Kotlin
- iOS Swift
- iOS Objective-C
该模块依赖权限如下:
| 权限 | 使用目的 | 权限申请时机 |
|---|---|---|
| 网络权限 | 用于打开网页版页面 | 用户每次使用该功能时会申请权限 |
| 设备指定应用信息 | 获取已安装的 TapTap 客户端信息 | 用户每次使用该功能时会申请权限 |
该模块将在应用中添加如下权限:
<uses-permission android:name="android.permission.INTERNET" />
<queries>
<package android:name="com.taptap" />
</queries>
该模块依赖权限如下:
| 权限 | 使用目的 | 权限申请时机 |
|---|---|---|
| 网络权限 | 用于打开网页版页面 | 用户每次使用该功能时会申请权限 |
| 设备指定应用信息 | 获取已安装的 TapTap 客户端信息 | 用户每次使用该功能时会申请权限 |
该模块将在应用中添加如下权限:
<uses-permission android:name="android.permission.INTERNET" />
<queries>
<package android:name="com.taptap" />
</queries>
集成前准备
使用 TapTap REP 功能前,需要确保:
- 已在 TapTap 开发者中心创建游戏应用
- 已获取游戏的 Client ID 和 Client Token
- 已从 TapTap REP 平台 获取需要打开的页面链接
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.9.1",
"com.taptap.sdk.rep":"4.9.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/tapsdk-unity-dist.git?path=/Core#4.9.1",
"com.taptap.sdk.rep":"https://github.com/taptap/tapsdk-unity-dist.git?path=/Rep#4.9.1",
}
说明:自 4.7.2 起,Unity Packages 仓库已统一为大仓
tapsdk-unity-dist,所有包通过目录区分并使用?path=指定子目录、#指定版本标签。例如 Core 模块:"com.taptap.sdk.core": "https://github.com/taptap/tapsdk-unity-dist.git?path=/Core#4.7.2"
在 Unity 顶部菜单中选择 Window > Package Manager 可查看已经安装在项目中的包。
本地文件导入
- 在 下载页 下载下列模块对应
unitypackage文件,并在 Unity 项目中依次通过 Assets > Import Packages > Custom Packages 进行导入,包括:
TapSDK_Core.unitypackageTapTapSDK 核心模块,必选。TapSDK_Rep.unitypackageTapTapSDK REP 模块,必选。
- 如果当前项目已集成
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>
- 项目根目录的 build.gradle 添加仓库地址:
allprojects {
repositories {
google()
mavenCentral()
}
}
- app module 的 build.gradle 添加对应依赖:
dependencies {
implementation 'com.taptap.sdk:tap-core:4.9.1'
implementation 'com.taptap.sdk:tap-rep:4.9.1'
}
- 项目根目录的 build.gradle 添加仓库地址:
allprojects {
repositories {
google()
mavenCentral()
}
}
- app module 的 build.gradle 添加对应依赖:
dependencies {
implementation 'com.taptap.sdk:tap-core:4.9.1'
implementation 'com.taptap.sdk:tap-rep:4.9.1'
}
iOS 提供通过添加 CocoaPods 远程依赖和使用本地文件导入两种集成方式,推荐使 用远程依赖方式。
远程依赖
- 在工程 Podfile 文件中对应模块下添加依赖:
pod 'TapTapSDK/Rep', '~> 4.9.1'
- 执行
pod install下载对应依赖文件
本地文件依赖
TapTap REP 依赖于初始化模块,使用本地文件方式添加依赖时,需先参考 TapSDK 集成 添加对应本地文件依赖项。
- 在 下载页 下载如下文件:
TapTapRepSDK.xcframeworkREP 依赖库
- 在工程中添加
framework静态库,注意添加时选择 Embed 方式为 Do Not Embed
工程配置
由于 SDK 需判断当前设备是否安装 TapTap 客户端,开发者需在 Xcode 工程的 info.plist 文件 LSApplicationQueriesSchemes 字段中添加 taptap 参数
iOS 提供通过添加 CocoaPods 远程依赖和使用本地文件导入两种集成方式,推荐使用远程依赖方式。
远程依赖
- 在工程 Podfile 文件中对应模块下添加依赖:
pod 'TapTapRepSDK', '~> 4.9.1'
- 执行
pod install下载对应依赖文件
本地文件依赖
TapTap REP 依赖于初始化模块,使用本地文件方式添加依赖时,需先参考 TapSDK 集成 添加对应本地文件依赖项。
- 在 下载页 下载如下文件:
TapTapRepSDK.xcframeworkREP 依赖库
- 在工程中添加
framework静态库,注意添加时选择 Embed 方式为 Do Not Embed
工程配置
由于 SDK 需判断当前设备是否安装 TapTap 客户端,开发者需在 Xcode 工程的 info.plist 文件 LSApplicationQueriesSchemes 字段中添加 taptap 参数
初始化
TapSDK 初始化
- Unity
- Android Java
- Android Kotlin
- iOS Swift
- iOS Objective-C
using TapSDK.Core;
// 核心配置项
TapTapSDKCoreOptions coreOptions = new TapTapSDKCoreOptions
{
clientId = clientId, // 必须,开发者中心对应 Client ID
clientToken = clientToken, // 必须,开发者中心对应 Client Token
region = TapTapRegionType.CN, // TapTapRegionType.CN:中国大陆,TapTapRegionType.Overseas:其他国家或地区
enableLog = true, // 是否开启 log,建议 Debug 开启,Release 关闭,默认关闭 log
preferredLanguage = TapTapLanguageType.Auto // 语言设置,默认跟随系统,当系统语言不支持时,国内为中文,海外为英文
};
// 初始化 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.CN // 游戏可玩区域: [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.CN,
preferredLanguage = TapTapLanguage.ZH_HANS,
enableLog = false
),
)
TapTapSdkOptions 详细参数见 入门指南#快速开始
import TapTapCoreSDK
// 核心配置项
let options = TapTapSdkOptions()
options.clientId = "your_client_id" // 必须,开发者中心对应 Client ID
options.clientToken = "your_client_token" // 必须,开发者中心对应 Client Token
options.region = .CN // .CN:中国大陆,.overseas:其他国家或地区
options.enableLog = enableLog.selectedSegmentIndex == 0 // 是否开启 log,建议 Debug 开启,Release 关闭,默认关闭 log
options.preferredLanguage = TapLanguageType.auto // 语言设置,默 认跟随系统,当系统语言不支持时,国内为中文,海外为英文
// 初始化 SDK
TapTapSDK.initWith(options)
TapTapSdkOptions 详细参数见 入门指南#快速开始
#import "TapTapCoreSDK/TapTapSDK.h"
// 核心配置项
TapTapSdkOptions *options = [[TapTapSdkOptions alloc] init];
options.clientId = @"your_clientId"; // 必须,开发者中心对应 Client ID
options.clientToken = @"your_client_token"; // 必须,开发者中心对应 Client Token
options.region = TapTapRegionTypeCN; // CN:中国大陆,overseas:其他国家或地区
options.enableLog = YES; // 是否开启 log,建议 Debug 开启,Release 关闭,默认关闭 log
options.preferredLanguage = TapLanguageType_Auto; // 语言设置,默认跟随系统,当系统语言不支持时,国内为中文,海外为英文
// 初始化 SDK
[TapTapSDK initWithOptions:options];
打开链接
- Unity
- Android Java
- Android Kotlin
- iOS Swift
- iOS Objective-C
using TapSDK.Rep;
// 打开指定 URL
string url = ""; // 替换为实际的 URL
TapTapRep.Open(url, (errorCode, errorMessage) =>
{
if (errorCode == 0)
{
// 打开成功
Debug.Log("打开成功");
}
else
{
// 打开失败
Debug.LogError($"打开失败: {errorCode}, {errorMessage}");
}
});
import com.taptap.sdk.rep.TapTapRep;
// 打开指定 URL
String url = ""; // 替换为实际的 URL
TapTapRep.open(url, (errorCode, errorMessage) -> {
if (errorCode == 0) {
// 打开成功
Log.d("TapRep", "打开成功");
} else {
// 打开失败
Log.e("TapRep", "打开失败: " + errorCode + ", " + errorMessage);
}
});
import com.taptap.sdk.rep.TapTapRep
// 打开指定 URL
val url = "" // 替换为实际的 URL
TapTapRep.open(url) { errorCode, errorMessage ->
if (errorCode == 0) {
// 打开成功
Log.d("TapRep", "打开成功")
} else {
// 打开失败
Log.e("TapRep", "打开失败: $errorCode, $errorMessage")
}
}
import TapTapRepSDK
// 打开指定 URL
let url = "" // 替换为实际的 URL
TapTapRep.open(openUrl: url) { errorCode, errorMessage in
if errorCode == 0 {
// 打开成功
print("打开成功")
} else {
// 打开失败
print("打开失败: \(errorCode), \(errorMessage ?? "")")
}
}
#import "TapTapRepSDK/TapTapRepSDK-Swift.h"
// 打开指定 URL
NSString *url = @""; // 替换为实际的 URL
[TapTapRep openWithOpenUrl:url completion:^(NSInteger errorCode, NSString * _Nullable errorMessage) {
if (errorCode == 0) {
// 打开成功
NSLog(@"打开成功");
} else {
// 打开失败
NSLog(@"打开失败: %ld, %@", (long)errorCode, errorMessage);
}
}];
参数说明
| 参数 | 说明 |
|---|---|
| openUrl/url | 要打开的 URL 地址,必须是完整的链接(包含 http:// 或 https://)。建议使用 TapTap REP 平台 生成的链接 |
| callback/completion | 回调函数,返回打开结果。errorCode 为 0 表示成功,其他值表示失败;errorMessage 为错误信息 |
错误码说明
| 错误码 | 说明 |
|---|---|
| 0 | 成功 |
| 100002 | 参数错误(URL 为空或格式不正确) |
| 100003 | 客户端配置错误(SDK 未初始化) |
| 100004 | 未知错误 |