找回密码
 立即注册
查看: 192|回复: 0

三分钟集成 Tap 防沉迷 SDK(Unity 版)

[复制链接]
发表于 2022-12-9 13:49 | 显示全部楼层 |阅读模式
一、SDK 介绍


基于国家对上线所有游戏必须增加防沉迷功能的政策下,TapTap 推出防沉迷 SDK,供游戏开发者进行接入;允许未成年用户在周五、六、日以及法定节假日晚上 8:00-9:00进行游戏,防沉谜时间段进入游戏会弹窗进行提示!


弹窗提示

开发环境要求:
    Unity 2019.4 或更高版本iOS 10 或更高版本Android 5.0(API level 21)或更高版本

Unity 集成 Demo 参考链接
Unity TapSDK 功能体验 APK 下载链接
二、集成前准备

1. 创建应用


进入开发者后台,按照提示开始创建应用;
2. 开通服务


在使用 TDS 实名认证和防沉迷服务之前,需要在上面创建的应用里找到 游戏服务 > 生态服务 > 合规认证 开通服务。
开通服务有两种方式:
    已有版号: 开通方式可以参考官方文档
    暂无版号: 可在开发者后台直接点击“立即开通”即可(选择该方式,不影响防沉迷功能测试)


    images

如果使用 TapTap 快速授权,也需要开通 TapTap 登录功能,并且需要配置包名和签名,并且在打包时设置的包名和签名要和后台配置的保持一致!
三、开始集成

1. 导入依赖库


导入依赖库有两种方式,分别为Unity Package Manager(UMP)导入或手动导入(二者选其一即可):

  • UMP 方式导入(这种更方便,比较推荐):
    在项目的 Packages/manifest.json 文件中添加以下依赖:
"dependencies":{    "com.tapsdk.antiaddiction":"https://github.com/taptap/TapAntiAddiction-Unity.git#3.16.1",    "com.leancloud.storage": "https://github.com/leancloud/csharp-sdk-upm.git#storage-1.0.2",    "com.taptap.tds.common":"https://github.com/TapTap/TapCommon-Unity.git#3.16.1",}

    手动导入(因为要下载离线包,相对耽误时间):

    1、先从官方 SDK 下载页找到 TapSDK UnityLeanCloud C# SDK 下载地址,分别下载 TapSDK-UnityPackage.zipLeanCloud-SDK-Storage-Unity.zip

    2、解压 TapSDK-UnityPackage.zip 分别双击 TapTap_Common.unitypackage、TapTap_AntiAddiction_3.16.1.unitypackage 然后导入包。

    3、将 LeanCloud-SDK-Storage-Unity.zip 解压后 Plugins 文件夹,拖拽到 Unity 项目就好了;
2. 初始化 DK

using TapTap.AntiAddiction;using TapTap.AntiAddiction.Model;AntiAddictionConfig config = new AntiAddictionConfig(){    gameId = "your_client_id",      // TapTap 开发者中心对应 Client ID    useTapLogin = true,             // 是否启动 TapTap 快速认证    showSwitchAccount = false,      // 是否显示切换账号按钮};         Action<int, string> callback = (code, errorMsg) => {    //code == 500;   //登录成功    //code = 1000;   //用户登出    //code = 1001;   //切换账号    //code = 1030;   //用户当前无法进行游戏    //code = 1050;   //时长限制    //code = 9002;   //实名过程中点击了关闭实名窗    UnityEngine.Debug.LogFormat($"code: {code} error Message: {errorMsg}");};AntiAddictionUIKit.Init(config, callback);3. 开始实名

string userIdentifier = "玩家的唯一标识";AntiAddictionUIKit.Startup(userIdentifier);
判断是否实名是通过传入的‘玩家唯一标识’进行判断的,如果同一个玩家,每次调用实名接口传入的唯一标识不同,会导致重复认证,所以一般建议玩家唯一标识可以传入该玩家的唯一ID,例如:使用 Tap 登录返回的 objectId、openid、unionid;重点是只要该唯一标识是和玩家唯一绑定就行。
4. 其他功能接口

登出


玩家在游戏内退出账号时调用,重置防沉迷状态。
AntiAddictionUIKit.Exit();获取玩家年龄段

int ageRange = AntiAddictionUIKit.AgeRange;获取剩余时长(单位:秒)

int remainingTimeInSeconds = AntiAddictionUIKit.RemainingTime;获取剩余时长(单位:分钟)

int remainingTimeInMinutes = AntiAddictionUIKit.RemainingTimeInMinutes;检查消费上限


检查消费上限功能需要游戏在用户每次消费成功后上报消费金额(方法在下面);
long amount = 100; // 金额的单位为 分AntiAddictionUIKit.CheckPayLimit(amount,    (result) => {        // status 为 1 时可以支付        int status = result.status;        if (status == 1) {            // 可以进行支付        }    },    (exception) => {        // 处理异常    });上报消费金额


客户端直接调用上报金额的可靠性比较低,建议用户使用服务端上报,REST API 接口可以参考官方 API 使用说明,一般无服务端的单机游戏会使用客户端进行调用。
long amount = 100; // 金额单位为 分AntiAddictionUIKit.SubmitPayResult(amount,    () => {        // 成功    }, (exception) => {        // 处理异常    });上报游戏时长

AntiAddictionUIKit.EnterGame();停止上报时长

AntiAddictionUIKit.LeaveGame();四、打包 Android APK


    通过 File -> Build Settings;弹出 Build Settings 页面;

    选择 Android,点击 Switch Platform,然后如下图:


    image


    点击 Player Settings,然后点击 Publishing Settings 设置签名文件


    images


    点击 Other Settings 设置 Package Name


    images


    最后直接点击 Build 开始构建,构建成功后就可以打包成功!到此就结束了!


    images


注意此处设置的包名以及签名文件要和开发者后台配置的包名签名要保持一致!
五、导出 XCode 项目


如果是手动下载 unitypackage 进行 SDK 导入,需要将 Assets/TapTap/Common/Plugins/iOS/TapTap.Common.dll 设置为只支持 iOS。
    iOS 配置

1.1、 在 Assets/Plugins/iOS/Resource 目录下创建 TDS-Info.plist 文件,复制以下代码并且替换其中的 ClientId。如果游戏使用了 TapTap 内嵌动态或数据分析服务,需要配置相关权限并替换授权文案:
<?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>    <!--使用内嵌动态服务,需要相册、相机、麦克风权限-->    <key>NSPhotoLibraryUsageDescription</key>    <string>说明为何应用需要此项权限</string>    <key>NSCameraUsageDescription</key>    <string>说明为何应用需要此项权限</string>    <key>NSMicrophoneUsageDescription</key>    <string>说明为何应用需要此项权限</string>    <!--使用数据分析服务需要 IDFA 权限。如应用程序不想弹框,可以设置 TapDB.AdvertiserIDCollectionEnabled(false)-->    <key>NSUserTrackingUsageDescription</key>    <string>说明为何应用需要此项权限</string></dict></plist>
1.2、 使用 Xcode 13.0 beta 5 编译,检查 Unity 输出的 Xcode 工程:
    请确保设置 Xcode - General - Frameworks, Libraries, and Embedded Content 中的 AntiAddictionService.framework 和 AntiAddictionUI.framework 为 Do Not Embed。如果编译报错找不到头文件或者模块,请确保 Xcode-Build Settings - Framework Search Paths 中的路径以保证 Xcode 正常编译。确保 Xcode 工程的 Build Settings 的 Swift Compile Language/Swfit Language Version 为 Swift5。添加依赖库 libz.tbd libc++.tdb开始代码接入
  • 将 AntiAddiction-Unity/Assets/Plugins/iOS/Resource/AntiAdictionResources.bundle 拷贝到游戏项目下 (如果 unity 项目没有正确导入 AntiAddictionResources.bundle)
    *防沉迷 SDK 需要联网和发送请求数据的权限,请开发者注意在项目中声明相应权限。

    通过 File -> Build Settings;弹出 Build Settings 页面;

    选择 iOS,点击 Switch Platform,然后如下图:


    images


    点击 Player Settings,开始设置 Bundle Identifier、Version、Company Name、Product Name 信息;


    images


images


    最后直接点击 Build 然后开始选择导出项目文件夹路径进行开始导出;

    接着就是使用 XCode 打开导出项目中的 Unity-iPhone.xcodeproj 文件;

    开始设置证书和 Bundle Identifier,结果如下:


    images


    最后开始运行就可以了,至此所有集成介绍全部完成!
六、常见问题


官方常见问题汇总

问题排查思路:
    对照文档检查依赖以及集成方式是否按照正确集成;检查初始化配置信息是否和开发者平台一致;检查调用的实名接口的唯一标识是否唯一;检查调用的方法是否正确;

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-5-13 23:42 , Processed in 0.090659 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表