TapTap 好友指南
权限说明
- Unity
- Android
- iOS
- UE4
权限 | 使用目的 | 权限申请时机 |
---|---|---|
网络权限 | 用于访问网络数据 | 用户首次使用该功能时会申请权限 |
该模块将在应用中添加如下权限:
<uses-permission android:name="android.permission.INTERNET" />
SDK 配置
可以在 下载页 获得 TapSDK,引入 TapTap 登录模块。
- Unity
- Android
- iOS
Unity 开发环境要求:Unity 2019.4 或更高版本
支持版本:
- Android:最低支持 5.0
- iOS:最低支持 iOS 11.0,Xcode 版本 14.1 或更高版本
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.friends":"3.29.4",
"com.taptap.tds.login":"3.29.4",
"com.taptap.tds.common":"3.29.4",
}
但需要注意的是,要在 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.4",
"com.taptap.tds.common":"https://github.com/TapTap/TapCommon-Unity.git#3.29.4",
}
在 Unity 顶部菜单中选择 Window > Package Manager 可查看已经安装在项目中的包。
方法二:手动导入
在 下载页 找到 TapSDK Unity 下载地址,下载
TapSDK-UnityPackage.zip
。在 Unity 项目中依次转到 Assets > Import Packages > Custom Packages,从解压后的
TapSDK-UnityPackage.zip
中,选择希望在游戏中使用的 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
文件(如果已有该文件,则添加如下内容),其内容如下:
<linker>
<assembly fullname="System.Core">
<type fullname="System.Linq.Expressions.Interpreter.LightLambda" preserve="all" />
</assembly>
</linker>
repositories{
flatDir {
dirs 'libs'
}
}
dependencies {
implementation (name:'TapLogin_3.29.4', ext:'aar')
implementation (name:'TapCommon_3.29.4', ext:'aar')
}
TapCommonResource.bundle
TapLoginResource.bundle
TapLoginSDK.framework
TapCommonSDK.framework
// 3.29.4 版本需要添加 LibProtocolBuffers
LibProtocolBuffers.framework
获取好友列表
调用前请确保登录时已申请好友权限,即使用 TapTap 登录接口时 permissions
参数添加 user_friends
。
- Unity
- Android
- iOS
TapFriendResult result = await TapFriends.QueryMutualList(cursor, size);
if (result?.FriendList?.Count > 0) {
foreach (TapFriendInfo friendInfo in result.FriendList) {
Debug.Log($"{friendInfo.Name}, {friendInfo.OpenId}, {friendInfo.Avatar}");
}
}
Debug.Log($"下一游标:{result.Cursor}");
TapFriends.queryMutualList(cursor, size, new TapFriendsCallback<TapFriendResult>() {
@Override
public void onSuccess(TapFriendResult tapFriendResult) {
toast(" queryMutualList success = " + tapFriendResult);
}
@Override
public void onFail(Throwable throwable) {
toast("queryMutualList fail error = " + throwable);
}
});
TapFriendQueryOption *option = [TapFriendQueryOption new];
option.size = 20;
option.cursor = nil;
[TapFriends queryMutualListWithOption:option
callback:^(TapFriendResult *_Nullable result, NSError *_Nullable error) {
if (error) {
NSLog(@"失败 error = %@",error);
} else {
NSMutableArray<NSString *> *userInfos = [NSMutableArray array];
for (TapFriendInfo *friendInfo in result.data) {
[userInfos addObject:[NSString stringWithFormat:@"openid = %@ name = %@ avatar = %@",
friendInfo.openid,
friendInfo.name,
friendInfo.avatar]];
}
NSLog(@"成功 result = %@ cursor = %@", userInfos, result.cursor);
}
}];
上述参数中 cursor
为每页游标,第一页为 null,后续页游标从上一次返回结果中获取;size
为结果数量。
该接口返回结果 Result 包括好友信息集合和下一页游标 cursor
,好友信息集合中每条信息包含的字段说明如下表:
字段名 | 描述 |
---|---|
name | Tap 昵称 |
avatar | Tap 头像 |
openid | Tap 用户 openid |
当游标 cursor
为 null 时,表示为最后一页数据。