DLC 开发指南
请注意区分 DLC 与正版验证功能。
DLC 提供游戏内购功能,而正版验证则用于付费下载游戏。
如果游戏计划从付费下载转为免费下载 + 内购 DLC 解锁内容的形式上线,请在新版本中去除正版验证相关接口,仅接入以下 DLC 功能。
DLC 查询和购买
可以在 下载页 获得 TapSDK,添加以下依赖:
- Unity
- Android
- iOS
- UE4
SDK 可以通过 Unity Package Manager 导入或手动导入,二者任选其一。请根据项目需要选择。
方法一:使用 Unity Package Manager
NPMJS 安装
从 3.25.0 版本开始,TapSDK 支持了 NPMJS 安装,优势是只需要配置版本号,并且支持嵌套依赖。
在项目的 Packages/manifest.json
文件中添加以下依赖:
"dependencies":{
"com.taptap.tds.dlc":"3.28.2",
"com.taptap.tds.common":"3.28.2",
}
但需要注意的是,要在 Packages/manifest.json
中 dependencies
同级下声明 scopedRegistries
:
"scopedRegistries": [
{
"name": "NPMJS",
"url": "https://registry.npmjs.org/",
"scopes": ["com.tapsdk", "com.taptap", "com.leancloud"]
}
]
GitHub 安装
在项目的 Packages/manifest.json
文件中添加以下依赖:
"dependencies":{
"com.taptap.tds.common":"https://github.com/TapTap/TapCommon-Unity.git#3.28.2",
"com.taptap.tds.dlc":"https://github.com/TapTap/TapLicense-Unity.git#3.28.2",
"com.leancloud.storage":"https://github.com/leancloud/csharp-sdk-upm.git#storage-2.3.0",
}
在 Unity 顶部菜单中选择 Window > Package Manager 可查看已经安装在项目中的包。
方法二:手动导入
在 下载页 找到 TapSDK Unity 和 LeanCloud C# SDK 下载地址,分别下载
TapSDK-UnityPackage.zip
和LeanCloud-SDK-Realtime-Unity.zip
。在 Unity 项目中依次转到 Assets > Import Packages > Custom Packages,从解压后的
TapSDK-UnityPackage.zip
中,选择希望在游戏中使用的 TapSDK 包导入,其中:TapTap_Common.unitypackage
TapSDK 基础库,必选。TapTap_License.unitypackage
TapTap 正版验证库,必选。
解压后的
LeanCloud-SDK-Realtime-Unity.zip
为 Plugins 文件夹,拖拽至 Unity 即可。
将 SDK 包导入到项目 project/app/libs
目录下。打开项目的 project/app/build.gradle
文件,添加:
repositories{
flatDir {
dirs 'libs'
}
}
dependencies {
implementation name:'TapCommon_3.28.2', ext:'aar'
implementation name:'TapLicense_3.28.2', ext:'aar'
}
// 暂不支持
将插件 TapLicense 、 TapCommon 拷贝到项目的插件目录,并在项目模块的 build.cs 文件中添加依赖:
PublicDependencyModuleNames.AddRange(new string[] {
"Json",
"JsonUtilities",
"SlateCore",
"TapCommon",
"TapLicense",
});
DLC 回调设置
DLC 回调包含查询回调和购买回调。
- Unity
- Android
- iOS
- UE4
public class MyTapDLCCallback:ITapDlcCallback
{
public void OnQueryCallBack(TapLicenseQueryCode code, Dictionary<string, object> queryList)
{
// 查询回调
}
public void OnOrderCallBack(string sku, TapLicensePurchasedCode status)
{
// 购买回调
}
}
TapLicense.SetDLCCallback(new MyTapDLCCallback());
TapLicenseHelper.setDLCCallback(new DLCManager.InventoryCallback() {
@Override
public boolean onQueryCallBack(int i, HashMap<String, Integer> queryList) {
// 查询回调
return false;
}
@Override
public void onOrderCallBack(String s, int i) {
// 购买回调
}
});
// 暂不支持
FTapLicense::SetDLCCallback(
FTapLicense::FDLCQueryDelegate::CreateLambda(
[](FTapLicense::EQueryResult Code, const FTapLicense::Map& QueryList) {
// 查询回调
switch (Code) {
case FTapLicense::EQueryResult::OK:
//查询成功
break;
case FTapLicense::EQueryResult::Error:
//查询失败
break;
case FTapLicense::EQueryResult::NotInstallTapTap:
//sdk有相应处理,正常不需要开发者做处理
break;
}
}),
FTapLicense::FDLCOrderDelegate::CreateLambda([](const FString& Sku, FTapLicense::EOrderStatus Status) {
// 购买回调
})
);
DLC 查询
对应的查询回调会返回具体的查询结果,查询成功时会返回当前 Tap 玩家是否已经购买过对应商品,在查询回调中返回的键值对类型参数 queryList
中可以获取,该参数 key
为查询的商品 skuid
,value
表示该商品当前查询用户的购买状态:0 表示未购买,1 表示已购买。
- Unity
- Android
- iOS
- UE4
TapLicense.QueryDLC(string[] skuIds);
TapLicenseHelper.queryDLC(Activity activity, String[] skuIds);
// 暂不支持
FTapLicense::QueryDLC(const TArray<FString>& DLCList);
DLC 购买
- Unity
- Android
- iOS
- UE4
TapLicense.PurchaseDLC(string skuId);
TapLicenseHelper.purchaseDLC(Activity activity, String skuIds);
// 暂不支持
FTapLicense::PurchaseDLC(const FString& DLC);
参数说明
TapLicenseQueryCode
回调 | 回调值 | 说明 |
---|---|---|
QUERY_RESULT_OK | 0 | 查询成功 |
QUERY_RESULT_NOT_INSTALL_TAPTAP | 1 | 检查测试机未安装 TapTap 客户端 |
QUERY_RESULT_ERR | 2 | 查询失败 |
ERROR_CODE_UNDEFINED | 80000 | 未知错误 |
skuId
内购商品 id,需要提交工单联系 TapTap 运营同学进行配置;
测试
为了保证上线后,游戏对于用户是否购买的判断能够正常生效,请务必按照以下说明完成自测。
上传 APK
上传需要测试的 APK 至开发者中心,并通过审核。
应用上线
应用的发布状态需要设置成上线状态,此时如果并不想让玩家通过 TapTap 下载游戏包体,可以将游戏状态设置成为 预约
或者 敬请期待
。
添加测试用户
前往开发者中心 >> 点击游戏服务 >> 点击开发与构建 >> 点击正版验证 >> 填写测试用户的 TapTap ID。
开始测试
在 TapTap 客户端使用已填写的测试用户账号登录。
正式开始售卖
完善应用信息
前往开发者中心,填写应用信息,并审核通过。
设置售卖价格
前往开发者中心 >> 售卖设置,开启售卖开关,设置游戏售卖金额,提交审核,并同步对接的 TapTap 运营相关信息。
正式上线
所有流程都确保顺利后,游戏可正式上线。