TapSDK 快速开始

您所在的位置:网站首页 taptap怎么找自己的评论 TapSDK 快速开始

TapSDK 快速开始

2024-07-10 17:18| 来源: 网络整理| 查看: 265

TapSDK 快速开始

本文介绍如何快速接入 TapSDK 并实现 TapTap 登录 功能。

备注

下载 页面提供了 Unity、Android、iOS 示例项目,可供参考。

创建应用​

请登录 TapTap 开发者中心 注册为开发者并创建应用。

下载 TapTap 应用​

在测试设备中下载 TapTap 客户端,测试时会唤起 TapTap 客户端授权登录。若用户设备中未安装 TapTap 客户端,则会打开 WebView 进行登录。

环境要求​UnityAndroidiOSUE4Unity 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)或更高版本

支持平台:Android / iOS

警告下面的项目配置以及初始化部分,预设开发者使用基于内建账户系统的 TDS 服务。如果游戏已经有了完整的账户系统,仅需要接入 TapTap 登录、内嵌动态,且不需要 TDS 更多云服务,则不必参考下面的配置和初始化方式,可跳转至 单纯的 TapTap 登录开发指南、内嵌动态开发指南。请慎重选择,如果之后需要其他 TDS 服务,升级需要一定的开发成本。项目配置​UnityAndroidiOSUE4

SDK 可以通过 Unity Package Manager 导入或手动导入,二者任选其一。请根据项目需要选择。

方法一:使用 Unity Package Manager​

从 3.29.1 版本开始, SDK 修改 JSON 解析库为 Newtonsoft-json,如果当前工程已接入该依赖库,则不需额外处理,否则需在 Packages/manifest.json 添加如下依赖:

"com.unity.nuget.newtonsoft-json":"3.2.1"NPMJS 安装​

从 3.25.0 版本开始,TapSDK 支持了 NPMJS 安装,优势是只需要配置版本号,并且支持嵌套依赖。

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

"dependencies":{ "com.taptap.tds.bootstrap":"3.29.2", "com.taptap.tds.login":"3.29.2", "com.taptap.tds.common":"3.29.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.login":"https://github.com/TapTap/TapLogin-Unity.git#3.29.2", "com.taptap.tds.common":"https://github.com/TapTap/TapCommon-Unity.git#3.29.2", "com.taptap.tds.bootstrap":"https://github.com/TapTap/TapBootstrap-Unity.git#3.29.2", "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.unitypackage TapSDK 启动器,必选。TapTap_Common.unitypackage TapSDK 基础库,必选。TapTap_Login.unitypackage TapTap 登录,必选。

如果当前项目已集成 Newtonsoft.Json 依赖,则忽略该步骤,否则在 NuGet.org Newtonsoft.Json 页面中通过点击右侧 Download package 下载库文件,并将下载的文件后缀从.nupkg 修改为 .zip,同时解压该文件并复制内部的 Newtonsoft.Json.dll 文件拷贝到工程 Assets 的 Plugins 目录下,另外为了避免导出 IL2CPP 平台时删除必要数据,需在 Assets 目录下创建 link.xml 文件(如果已有该文件,则添加如下内容),其内容如下:

iOS 配置​

在 Assets/Plugins/iOS/Resource 目录下创建 TDS-Info.plist 文件,复制以下代码并且替换其中的 ClientId。如果游戏使用了 TapTap 内嵌动态或数据分析服务,需要配置相关权限并替换授权文案:

提示

复制使用以下内容时,请删除空行以及注释,以免出现 XML 解析时报错,ApplicationException: expected a key node。

DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> taptap client_id ClientId NSPhotoLibraryUsageDescription 说明为何应用需要此项权限 NSCameraUsageDescription 说明为何应用需要此项权限 NSMicrophoneUsageDescription 说明为何应用需要此项权限 NSUserTrackingUsageDescription 说明为何应用需要此项权限

下载 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.29.2.aar') // TapTap 启动器 implementation files('libs/TapCommon_3.29.2.aar') // TapTap 基础库 implementation files('libs/TapLogin_3.29.2.aar') // TapTap 登录 ... // 数据存储 implementation 'com.taptap:lc-storage-android:8.2.24' // 即时通讯 implementation 'com.taptap:lc-realtime-android:8.2.24' implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'}

在 AndroidManifest.xml 添加网络权限:

旧版 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.frameworkTapCommonResource.bundleTapLoginResource.bundleLeanCloudObjc.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 配置相关权限并替换授权文案:

NSPhotoLibraryUsageDescription说明为何应用需要此项权限NSCameraUsageDescription说明为何应用需要此项权限NSMicrophoneUsageDescription说明为何应用需要此项权限NSUserTrackingUsageDescription说明为何应用需要此项权限配置跳转 TapTap 应用​

用户无 TapTap 应用时,默认会通过 WebView 登录。

打开 info.plist,添加如下配置(请替换 clientID 为你在控制台获取的 Client ID):

CFBundleURLTypes CFBundleTypeRole Editor CFBundleURLName taptap CFBundleURLSchemes tt[clientID] LSApplicationQueriesSchemes tapiosdk tapsdk taptap

配置 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 *)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 *)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"点击展开 iOS 配置

在 项目设置 > Platform > iOS > Additional Plist data 中可以填入一个字符串,复制以下代码并且替换其中的 ClientID 以及授权文案。

CFBundleURLTypes CFBundleTypeRole Editor CFBundleURLName taptap CFBundleURLSchemes tt{ClientID} LSApplicationQueriesSchemes tapiosdk tapsdk taptap

如果接入 TapDB 模块,那么还需要加上:

NSUserTrackingUsageDescription{数据追踪权限申请文案}初始化​

初始化 TapSDK 时需传入 Client ID、区域等应用配置信息。

UnityAndroidiOSUE4using TapTap.Bootstrap; // 命名空间using TapTap.Common; // 命名空间var config = new TapConfig.Builder() .ClientID("your_client_id") // 必须,开发者中心对应 Client ID .ClientToken("your_client_token") // 必须,开发者中心对应 Client Token .ServerURL("https://your_server_url") // 必须,开发者中心 > 你的游戏 > 游戏服务 > 基本信息 > 域名配置 > API .RegionType(RegionType.CN) // 非必须,CN 表示中国大陆,IO 表示其他国家或地区 .ConfigBuilder();TapBootstrap.Init(config);

请确保 TapSDK 的初始化在主线程(UI 线程)中执行。

TapConfig tdsConfig = new TapConfig.Builder() .withAppContext(MainActivity.this) // Context 上下文 .withClientId("your_client_id") // 必须,开发者中心对应 Client ID .withClientToken("your_client_token") // 必须,开发者中心对应 Client Token .withServerUrl("https://your_server_url") // 必须,开发者中心 > 你的游戏 > 游戏服务 > 基本信息 > 域名配置 > API .withRegionType(TapRegionType.CN) // TapRegionType.CN:中国大陆,TapRegionType.IO:其他国家或地区 .build();TapBootstrap.init(MainActivity.this, tdsConfig);// 开发者必须至少依赖 `TapBootstrap`、`TapLogin`、`TapCommon` 以及 `LeanCloudObjc` 模块,并按照如下方式完成初始化:TapConfig *config = [TapConfig new];config.clientId = @"your_client_id"; // 必须,开发者中心对应 Client IDconfig.clientToken = @"your_client_token"; // 必须,开发者中心对应 Client Tokenconfig.serverURL = @"https://your_server_url"; // 必须,开发者中心 > 你的游戏 > 游戏服务 > 基本信息 > 域名配置 > APIconfig.region = TapSDKRegionTypeCN; // TapSDKRegionTypeCN:中国大陆,TapSDKRegionTypeIO:其他国家或地区[TapBootstrap initWithConfig:config];

TapBootstrap 初始化方法会把直接初始化 TapLogin 模块,如果插件中包含 TapDB 并且 DBConfig.Enable = true,那么也会完成 TapDB 初始化。

这两个模块无需再次初始化。

FTUConfig Config;Config.ClientID = "your_client_id"; // 必须,开发者中心对应 Client IDConfig.ClientToken = "your_client_token"; // 必须,开发者中心对应 Client TokenConfig.ServerURL = "https://your_server_url"; // 必须,开发者中心 > 你的游戏 > 游戏服务 > 基本信息 > 域名配置 > APIConfig.RegionType = ERegionType::CN; // ERegionType::CN:中国大陆,ERegionType::Global:其他国家或地区FTapBootstrap::Init(Config);

初始化的时候,必须填入 client_id、client_token 和 server_url,其中:

client_id、client_token 信息可在 开发者中心 > 你的游戏 > 游戏服务 > 应用配置 查看。

server_url 请使用 HTTPS 协议,参考文档关于 域名 的说明。

接入功能​

TapSDK 提供了众多功能。请在初始化 SDK 后,根据项目需要,参考相应功能的文档,接入相应功能。 绝大多数游戏都会接入 TapTap 登录,所以我们推荐从这一功能开始。

接入 TapTap 登录​

请根据开发者指南:快速上手,接入 TapTap 一键登录 完成操作。

配置签名证书​

Android 和 iOS 应用需要在 TapTap 开发者中心进入你的游戏,依次选择 游戏服务 > 开发与构建 > TapTap 登录 配置应用的相关信息(如下图所示),否则 Android 应用测试登录功能时会返回 signature not match 报错信息,iOS 会返回 sdk_not_matched 报错信息,无法正常使用 TapTap 登录功能。

Android 签名处填写 MD5 值,详情可参考:如何获取 MD5 值。

接下来,就可以打包应用,测试 TapTap 登录功能了。

Android 代码混淆​

TapSDK 已经做了混淆处理,再次混淆会导致不可预期的错误,请在项目的混淆脚本中添加如下配置,跳过对 TapSDK 的混淆操作:

-keep class com.tds.** { *;}-keep class com.taptap.** { *;}-keep class com.tapsdk.** { *;}-keep class tds.androidx.** { *;}

如果使用到基于数据存储的云服务,比如内建账户方式登录则需要额外添加 数据存储 相关的混淆代码。

打包​

Android 或 iOS 请按通常的 Android APK 或者 iOS 应用打包流程操作即可。这里介绍一下 Unity 打包流程:

打包 APK​

第一步,配置 package name 和签名文件:

第二步,检查 File > Build Settings > Player Settings > Other Settings > Target API Level 版本,当 API Level 小于 29 时,需要配置 manifest,在 application 节点添加:

tools:remove="android:requestLegacyExternalStorage"

这是因为 SDK 内部默认配置了 android:requestLegacyExternalStorage = true,当 targetSdkVersion < 29 时会报错 Android resource linking failed。

导出 Xcode 工程​

需要配置 icon 和 BundleID:



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3