Skip to main content
Version: v4

Android SDK 开发指南

本文介绍如何在游戏中加入好友系统。

集成前准备​

  1. 参考 开发者中心配置 创建应用、配置包名与签名证书
  2. 参考 Android 集成指南完成 TapSDK 基础接入
  3. 好友 Lite 模块依赖于 TapTap 登录模块,开发者接入前应先完成 TapTap 登录的接入
info

注意:【获取好友列表/获取关注列表/获取粉丝列表】需要双方都授予好友关系权限,在登录接口的 scopes 参数中添加 user_friends 权限。

权限说明​

该模块需要如下权限:

权限使用目的权限申请时机
网络权限用于访问网络数据用户首次使用该功能时会申请权限
网络状态权限用于检查网络连接状态(如 Wi-Fi 或移动数据是否可用)用户首次使用该功能时会申请权限
读取外部存储权限用于读取设备上的文件和媒体内容用户首次使用相关功能时会申请权限
写入外部存储权限用于保存文件到设备存储用户首次使用文件保存功能时会申请权限
管理外部存储权限用于管理设备上的文件用户首次使用文件管理功能时会申请权限
前台服务权限用于在应用处于后台时保持某些功能运行应用需要在后台运行服务时
相机权限用于拍摄照片和视频通话用户首次使用相机相关功能时会申请权限
振动权限用于消息通知时的振动提醒应用需要使用振动提醒时

该模块将在应用中添加如下权限:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.VIBRATE" />

SDK 获取​

在 app module 的 build.gradle 中添加对应依赖:

dependencies {
implementation 'com.taptap.sdk:tap-core:4.11.0'
implementation 'com.taptap.sdk:tap-login:4.11.0'
implementation 'com.taptap.sdk:tap-relation-lite:4.11.0'
}

外部唤起工程配置​

为了让玩家能够通过邀请上线或邀请组队等消息唤起游戏,开发者需要在工程中添加如下配置:

在应用的 AndroidManifest.xml 中添加如下配置,并将 tds{clientId} 中的 {clientId} 替换为游戏的 Client ID:

<activity
android:name="com.taptap.sdk.relation.lite.TapRelationLiteRouterActivity"
android:exported="true"
android:noHistory="true"
android:theme="@android:style/Theme.Translucent.NoTitleBar">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:scheme="tds{clientId}"
android:host="invite_game" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:scheme="tds{clientId}"
android:host="invite_team" />
</intent-filter>
</activity>

注册/注销 统一状态码监听回调​

统一状态回调,不同 code 代表不同的状态。

import com.taptap.sdk.relation.lite.internal.TapTapRelationLiteCallback;
import com.taptap.sdk.relation.lite.TapTapRelationLite;
import com.taptap.sdk.relation.lite.internal.TapTapRelationLiteCode;

TapTapRelationLiteCallback callback = new TapTapRelationLiteCallback(){

@Override
public void onRelationLiteResult(int code) {
// 处理好友 SDK 的状态码
// TapTapRelationLiteCode.NEED_LOGIN:需要登录
// TapTapRelationLiteCode.NEED_USER_FRIENDS_SCOPE:需要授权 TapTap 好友关系权限,在调用登录时添加 user_friends 权限
}
};

TapTapRelationLite.registerRelationLiteCallback(callback);
TapTapRelationLite.unregisterRelationLiteCallback(callback);

注册邀请回调​

当玩家点击 TapTap 邀请消息并打开游戏时,SDK 会解析邀请信息,开发者可通过注册该回调获取发起邀请的用户和组队信息。示例如下:

import android.util.Log;
import androidx.annotation.NonNull;
import com.taptap.sdk.relation.lite.TapTapRelationLite;
import com.taptap.sdk.relation.lite.internal.TapTapRelationLiteInviteCallback;

TapTapRelationLiteInviteCallback inviteCallback = new TapTapRelationLiteInviteCallback() {
@Override
public void onGameInviteReceived(@NonNull String openId, @NonNull String unionId) {
Log.d("RelationLite", "收到邀请上线:openId = " + openId + " unionId = " + unionId);
}

@Override
public void onTeamInviteReceived(@NonNull String openId, @NonNull String unionId, @NonNull String teamId) {
Log.d("RelationLite", "收到邀请组队:openId = " + openId + " unionId = " + unionId + " teamId = " + teamId);
}
};
TapTapRelationLite.registerRelationLiteInviteCallback(inviteCallback);
TapTapRelationLite.unregisterRelationLiteInviteCallback(inviteCallback);

邀请好友上线​

打开邀请好友页面,向选中好友发送邀请上线消息。

import com.taptap.sdk.relation.lite.TapTapRelationLite;

TapTapRelationLite.inviteGame();

邀请好友组队​

打开邀请好友页面,向选中好友发送邀请组队消息,需要传组队相关参数teamId。

import com.taptap.sdk.relation.lite.TapTapRelationLite;

String teamId = "";
TapTapRelationLite.inviteTeam(teamId);

获取好友列表​

获取当前用户的好友列表。

import com.taptap.sdk.relation.lite.TapTapRelationLite;
import com.taptap.sdk.relation.lite.internal.TapTapRelationRequestCallback;
import com.taptap.sdk.relation.lite.internal.model.RelationLiteUserItem;

String nextPage = "";
TapTapRelationLite.getFriendsList(nextPage, new TapTapRelationRequestCallback() {
@Override
public void onFriendsListResult(@NonNull List<RelationLiteUserItem> friendsList, @NonNull String nextPageToken) {

}
});

获取关注列表​

获取当前用户的关注列表。

import com.taptap.sdk.relation.lite.TapTapRelationLite;
import com.taptap.sdk.relation.lite.internal.TapTapRelationRequestCallback;
import com.taptap.sdk.relation.lite.internal.model.RelationLiteUserItem;

String nextPage = "";
TapTapRelationLite.getFollowingList(nextPage, new TapTapRelationRequestCallback() {
@Override
public void onFollowingListResult(@NonNull List<RelationLiteUserItem> followingList, @NonNull String nextPageToken) {

}
});

获取粉丝列表​

获取当前用户的粉丝列表。

import com.taptap.sdk.relation.lite.TapTapRelationLite;
import com.taptap.sdk.relation.lite.internal.TapTapRelationRequestCallback;
import com.taptap.sdk.relation.lite.internal.model.RelationLiteUserItem;

String nextPage = "";
TapTapRelationLite.getFansList(nextPage, new TapTapRelationRequestCallback() {
@Override
public void onFansListResult(@NonNull List<RelationLiteUserItem> fansList, @NonNull String nextPageToken) {

}
});

同步好友关系(openId)​

使用好友 openId 将好友关系同步至 TapTap。

import com.taptap.sdk.relation.lite.TapTapRelationLite;
import com.taptap.sdk.relation.lite.internal.TapTapRelationRequestCallback;

int action = 1;
String nickname = "";
String friendNickname = "";
String friendOpenId = "";

TapTapRelationLite.syncRelationshipWithOpenId(action, nickname, friendNickname, friendOpenId, new TapTapRelationRequestCallback() {
@Override
public void onSyncRelationshipSuccess(@NonNull String openId, @NonNull String unionId) {

}

@Override
public void onSyncRelationshipFail(@Nullable String errorMessage, @NonNull String openId, @NonNull String unionId) {

}
});

同步好友关系(unionId)​

使用好友 unionId 将好友关系同步至 TapTap。

import com.taptap.sdk.relation.lite.TapTapRelationLite;
import com.taptap.sdk.relation.lite.internal.TapTapRelationRequestCallback;

int action = 1;
String nickname = "";
String friendNickname = "";
String friendUnionId = "";

TapTapRelationLite.syncRelationshipWithUnionId(action, nickname, friendNickname, friendUnionId, new TapTapRelationRequestCallback() {
@Override
public void onSyncRelationshipSuccess(@NonNull String openId, @NonNull String unionId) {

}

@Override
public void onSyncRelationshipFail(@Nullable String errorMessage, @NonNull String openId, @NonNull String unionId) {

}
});

展示 TapTap 用户名片​

展示指定用户的名片弹窗,可用于关注/取关用户。

import com.taptap.sdk.relation.lite.TapTapRelationLite;
// openId unionId二选一即可
String openId = "";
String unionId = "";
TapTapRelationLite.showTapUserProfile(openId, unionId);

国际化​

TapTapRelationLite 支持设置语言:目前只支持简体中文