内建账户指南
从 TapSDK 3.0 开始,我们提供了一个内建账户系统供游戏使用:开发者可以直接用 TapTap OAuth 授权的结果生成一个游戏内的账号(TDSUser),同时我们也支持将更多第三方认证登录的结果绑定到该账号上来。
TapSDK 提供的游戏内好友、成就等服务和功能,也都基于这一账户系统。
环境要求
- Unity
- Android
- iOS
- UE4
- Unity 2019.4 或更高版本
- iOS 11 或更高版本,Xcode 版本 14.1 或更高版本
- Android 5.0(API level 21)或更高版本
Android 5.0(API level 21)或更高版本
iOS 11 或更高版本,Xcode 版本 14.1 或更高版本
- 安装 UE 4.26 及以上版本
- iOS 12 或更高版本
- Android 5.0(API level 21)或更高版本
- macOS 10.14.0 或更高版本
- Windows 7 或更高版本
支持平台:Android / iOS / Windows / macOS
权限说明
- Unity
- Android
- iOS
- UE4
该模块需要如下权限:
| 权限 | 使用目的 | 权限申请时机 |
|---|---|---|
| 网络权限 | 用于访问网络数据 | 用户首次使用该功能时会申请权限 |
该模块将在应用中添加如下权限:
<uses-permission android:name="android.permission.INTERNET"/>
集成前准备
- 参考 准备工作 创建应用、开启内建账户应用服务、绑定 API 域名;
SDK 获取
- Unity
- Android
- iOS
- UE4
SDK 可以通过 Unity Package Manager 导入或手动导入,二者任选其一。请根据项目需要选择。
方法一:使用 Unity Package Manager
NPMJS 安装
从 3.25.0 版本开始,TapSDK 支持了 NPMJS 安装,优势是只需要配置版本号,并且支持嵌套依赖。
在项目的 Packages/manifest.json 文件中添加以下依赖:
"dependencies":{
"com.taptap.tds.bootstrap":"3.30.3",
"com.taptap.tds.login":"3.30.3",
"com.taptap.tds.common":"3.30.3",
}
但需要注意的是,要在 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.login":"https://github.com/taptap/tapsdk-v3-unity.git?path=/Login#3.30.3",
"com.taptap.tds.common":"https://github.com/taptap/tapsdk-v3-unity.git?path=/Common#3.30.3",
"com.taptap.tds.bootstrap":"https://github.com/taptap/tapsdk-v3-unity.git?path=/Bootstrap#3.30.3",
"com.leancloud.realtime":"https://github.com/leancloud/csharp-sdk-upm.git#realtime-2.3.0",
"com.leancloud.storage":"https://github.com/leancloud/csharp-sdk-upm.git#storage-2.3.0",
}
在 Unity 顶部菜单中选择 Window > Package Manager 可查看已经安装在项目中的包。
方法二:手动导入
-
在 下载页 找到 TapSDK Unity 下载地址,下载
TapSDK-UnityPackage.zip。 -
在 Unity 项目中依次转到 Assets > Import Packages > Custom Packages,从解压后的
TapSDK-UnityPackage.zip中,选择希望在游戏中使用的 TapSDK 包导入,其中:
TapTap_Bootstrap.unitypackageTapSDK 启动器,必选。TapTap_Common.unitypackageTapSDK 基础库,必选。TapTap_Login.unitypackageTapTap 登录库,必选。
- 从 LeanCloud-SDK 下载页 中下载并解压 LeanCloud-SDK-Storage-Unity.zip,然后将 Plugins 文件夹拖拽至 Unity 即可。
iOS 配置
在 Assets/Plugins/iOS/Resource 目录下创建 TDS-Info.plist 文件,复制以下代码并且替换其中的 ClientId。如果游戏使用了 TapTap 内嵌动态或数据分析服务,需要配置相关权限并替换授权文案:
复制使用以下内容时,请删除空行以及注释,以免出现 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>
<!--使用内嵌动态服务,需要相册、相机、麦克风权限-->
<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>
-
下载 TapSDK Android,解压后选择需要用到的 SDK 包导入到项目
project/app/libs目录下。 -
打开项目的
project/app/build.gradle文件,添加 gradle 配置如下:
dependencies {
...
// 导入 libs 目录下所有 aar 的包:
implementation fileTree(dir: 'libs', include: ['*.aar'])
// 如果需要单独导入 libs 目录下的指定包,请按照如下方式:
implementation files('libs/TapBootstrap_3.30.3.aar') // TapTap 启动器
implementation files('libs/TapCommon_3.30.3.aar') // TapTap 基础库
implementation files('libs/TapLogin_3.30.3.aar') // TapTap 登录
implementation 'com.taptap:lc-storage-android:8.2.24' // 数据存储
implementation 'com.taptap:lc-realtime-android:8.2.24'
}
-
旧版 Android 额外配置
如果
targetSdkVersion < 29,还需要添加如下配置:manifest节点添加xmlns:tools="http://schemas.android.com/tools"application节点添加tools:remove="android:requestLegacyExternalStorage"
导入 SDK
-
在 Xcode 选择工程,到 Build Setting > Other Linker Flags 添加
-ObjC和-Wl -ld_classic。 -
下载 TapSDK iOS,解压后选择需要导入的资源文件,直接拖拽到项目目录即可。
-
视需要导入下载的资源文件:
-
必选:TapTap 启动器、基础库、登录
TapBootstrapSDK.frameworkTapCommonSDK.frameworkTapLoginSDK.frameworkLeanCloudObjc.frameworkTapCommonResource.bundleTapLoginResource.bundle// 3.29.4 版本需要添加 LibProtocolBuffersLibProtocolBuffers.framework
-
-
请仔细核对下面依赖库是否都添加成功:
// 必选WebKit.frameworkSecurity.frameworkSystemConfiguration.frameworkCoreTelephony.frameworkSystemConfiguration.frameworklibc++.tbd// TapTap 内嵌动态AVFoundation.frameworkCoreTelephony.frameworkMobileCoreServices.frameworkPhotos.frameworkSystemConfiguration.frameworkWebKit.framework// 数据分析// 如果不需要获取 IDFA 则不要添加 `AppTrackingTransparency` 和 `AdSupport` 两个系统库AppTrackingTransparency.frameworkAdSupport.frameworkCoreMotion.frameworkSecurity.frameworkSystemConfiguration.frameworklibresolv.tbdlibsqlite3.0.tbdlibz.tbd
配置权限
如果游戏使用了 TapTap 内嵌动态或数据分析服务,那么需要在 info.plist 配置相关权限并替换授权文案:
<!--使用内嵌动态服务,需要相册、相机、麦克风权限-->
<key>NSPhotoLibraryUsageDescription</key>
<string>说明为何应用需要此项权限</string>
<key>NSCameraUsageDescription</key>
<string>说明为何应用需要此项权限</string>
<key>NSMicrophoneUsageDescription</key>
<string>说明为何应用需要此项权限</string>
<!--使用数据分析服务需要 IDFA 权限。如应用程序不想弹框,可以设置 TapDB.AdvertiserIDCollectionEnabled(false)-->
<key>NSUserTrackingUsageDescription</key>
<string>说明为何应用需要此项权限</string>
配置跳转 TapTap 应用
用户无 TapTap 应用时,默认会通过 WebView 登录。
-
打开
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文件:- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {return [TDSHandleUrl handleOpenURL:url];}- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {return [TDSHandleUrl handleOpenURL: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;
- 下载 TapSDK UE4,TapSDK-UE4-xxx.zip 解压后将
TapBootstrap、TapCommon、TapLogin文件夹 Copy 到项目的Plugins目录中 - 重启 Unreal Editor
- 打开 编辑 > 插件 > 项目 > TapTap,开启
TapBootstrap和TapLogin模块
添加依赖
在 Project.Build.cs 中添加所需模块:
PublicDependencyModuleNames.AddRange(new string[] { "Core",
"CoreUObject",
"Engine",
"Json",
"InputCore",
"JsonUtilities",
"SlateCore",
"TapCommon",
"TapBootstrap",
"TapLogin"
});
if (Target.Platform == UnrealTargetPlatform.IOS || Target.Platform == UnrealTargetPlatform.Android)
{
PublicDependencyModuleNames.AddRange(
new string[]
{
// 推送接入
// "LeanCloudPush",
"LeanCloudMobile"
}
);
}
else
{
PublicDependencyModuleNames.AddRange(
new string[]
{
"LeanCloud"
}
);
}
导入头文件
#include "TapBootstrap.h"