Unity 集成 V4 版本的 Tap 登录与防沉迷服务

本文档主要介绍 unity 如何集成 V4 版 Tap 登录和防沉迷 SDK。

一、集成前准备

  1. 通过 Tap 开发者后台开启 Tap 登录服务和合规认证服务;

合规认证服务如果没有版号就选择「暂无版号」选项即可。

  1. 配置包名和签名(必须,十分重要!!!

测试的 APK 的包名和签名一定要在开发者后台进行配置,不然登录会闪退。

二、导入依赖库

导入依赖有手动下载离线文件导入和使用 npmJS 远程依赖两种方式,本文只介绍 npmJS 方式导入,

在项目的 Packages/manifest.json 文件中添加以下依赖:

{
"dependencies": {
"com.unity.nuget.newtonsoft-json":"3.2.1",
"com.google.external-dependency-manager": "1.2.179",
"com.taptap.sdk.core":"4.3.12",
"com.taptap.sdk.login":"4.3.12",
"com.taptap.sdk.compliance":"4.3.12",

...
},
"scopedRegistries": [
{
"name": "package.openupm.com",
"url": "https://package.openupm.com",
"scopes": [
"com.google.external-dependency-manager"
]
},
{
"name": "NPMJS",
"url": "https://registry.npmjs.org/",
"scopes": ["com.taptap"]
}
]
}

三、初始化 SDK

  1. 合规认证的回调函数
private Action<int, string> ComplianceCallback => (code, s) => {
switch (code)
{

case 500: // 玩家未受限制,可正常进入
Debug.Log(code + "玩家未受到限制,正常进入游戏");
break;

case 1000:
// 防沉迷认证凭证无效时触发
Debug.Log(code+ "退出防沉迷认证及检查,当开发者调用 Exit 接口时或用户认证信息无效时触发,游戏应返回到登录页");
break;
case 1001:
// 当玩家触发时长限制时,点击了拦截窗口中「切换账号」按钮
Debug.Log(code+ "用户点击切换账号,游戏应返回到登录页");
break;
case 1030:
// 用户当前时间无法进行游戏,此时用户只能退出游戏或切换账号
Debug.Log(code+ "用户当前时间无法进行游戏,此时用户只能退出游戏或切换账号");
break;
case 1050:
// 用户无可玩时长,此时用户只能退出游戏或切换账号
Debug.Log(code+ "用户无可玩时长,此时用户只能退出游戏或切换账号");
break;
case 9002:
// 实名认证过程中玩家关闭了实名窗口
// 如果游戏有其他账户系统,此时也应执行退出
// TODO: 切换到登录页面
Debug.Log(code+ "实名过程中点击了关闭实名窗,游戏可重新开始防沉迷认证");
break;
case 1100:
// 当前用户因触发应用设置的年龄限制无法进入游戏
// TODO: 游戏应自行绘制适龄限制提示,并引导玩家退出游戏
Debug.Log(code+ "当前用户因触发应用设置的年龄限制无法进入游戏");
break;
case 1200:
// 数据请求失败,应用信息错误或网络连接异常
// TODO: 引导玩家确认网络连接是否正常,并重新调用开始认证接口
Debug.Log(code+ "数据请求失败,游戏需检查当前设置的应用信息是否正确及判断当前网络连接是否正常");
break;
default:
break;
}};
  1. 初始化部分
// 初始化部分
TapTapSdkOptions coreOptions = new TapTapSdkOptions
{
// 开发者后台获取 clientid
clientId = "h2*******47n",
// 开发者后台获取 Client Token
clientToken = "JknZ*******************MPDHK",
// 地区,CN 为国内,Overseas 为海外
region = TapTapRegionType.CN,
// 语言,默认为 Auto,默认情况下,国内为 zh_Hans,海外为 en
preferredLanguage = TapTapLanguageType.zh_Hans,
// 是否开启日志,Release 版本请设置为 false
enableLog = true
};
// 合规认证配置
TapTapComplianceOption complianceOption = new TapTapComplianceOption
{
showSwitchAccount = true,
useAgeRange = true,
};
// 其他模块配置项
TapTapSdkBaseOptions[] otherOptions = new TapTapSdkBaseOptions[]
{
complianceOption
};
// 初始化 Tap 登录和合规认证
TapTapSDK.Init(coreOptions, otherOptions);、
// 注册合规认证的回调函数
TapTapCompliance.RegisterComplianceCallback(ComplianceCallback);

四、功能接口

  1. 开始登录
TapTapAccount account = await TapTapLogin.Instance.GetCurrentTapAccount();

if (account == null) {
// 未登录
Debug.Log("当前未登录,接下来开始登录。。。");
List<string> permissions = new List<string>();
// permissions.Add(TapTapLogin.TAP_LOGIN_SCOPE_BASIC_INFO);
permissions.Add(TapTapLogin.TAP_LOGIN_SCOPE_PUBLIC_PROFILE);
// permissions.Add(TapTapLogin.TAP_LOGIN_SCOPE_USER_FRIENDS);
// permissions.Add(TapTapLogin.TAP_LOGIN_SCOPE_EMAIL);
Task<TapTapAccount> task = TapTapLogin.Instance.LoginWithScopes(permissions.ToArray());
var result = await task;
if (task.IsCompleted)
{
// 登录成功,获取登录成功的用户信息
TapTapAccount currentUser = await TapTapLogin.Instance.GetCurrentTapAccount();
Debug.Log("登录成功,当前账户的信息:");
Debug.Log( currentUser.ToJson());

}
else if (task.IsCanceled)
{
// 取消
Debug.Log("登录取消。。。");
}
else
{
// 失败
Debug.Log("登录失败。。。");

}

} else {
// 已登录
Debug.Log("当前已登录,可以进入游戏!");
}
  1. 开始实名
TapTapAccount account = await TapTapLogin.Instance.GetCurrentTapAccount();
if (account != null) {
string userIdentifier = account.uniontId;
TapTapCompliance.Startup(userIdentifier);
}

完整代码请点击下载,然后替换代码中的 Clientid 与 ClientToken ,然后直接挂载到你的项目中进行测试。


五、常见问题

  1. 如何进行手动输入身份信息进行实名?

合规认证默认执行快速实名,当使用已经实名的 Tap 账号登录游戏,然后进行实名就会走快速认证不会弹出实名弹窗,回调方法中直接返回实名结果。

当执行实名方法前没有执行 Tap 登录操作时,会弹出让选择是否使用快速认证的按钮,如果点击【不使用】这时会弹出手动输入身份信息的弹窗。

  1. 执行登录操作时出现闪退,黑屏,或者报错 signature not match

请检查测试的 APK 的包名和签名是否和开发者后台配置的包名签名保持一致。获取 APK 的包名和签名的方法可以通过安装这个获取 APK md5 签名工具获取.

  1. 执行登录方法都是成功的,但是执行防沉迷方法一直回调返回 code =1200

这可能是因为你的应用是 V3 版本的不支持 V4 版本的 SDK。 请进入开发者后台查看自己的应用后台是否有内建账户、数据存储服务,如果有就说明是 V3 的应用。这时可以使用 V3 版本的 SDK ,或者提工单联系官方的技术支持将你的应用升级到 V4 版本,这样就可以使用 V4 版本的 SDK.