好友模式
阅读本文前请先完成 SDK 初始化。
好友通知设置
好友模块默认会向游戏推送好友状态及申请的通知,如果游戏需要关闭,可调用如下接口:
- Unity
- Android
- iOS
try {
await TDSFriends.DisableFriendNotification();
TapLog("关闭推送通知成功");
} catch (Exception e) {
TapLog($"关闭推送通知失败: ${e}");
}
TDSFriends.disableFriendNotification(new Callback<Void>() {
@Override
public void onSuccess(Void result) {
toast("消息推送关闭成功");
}
@Override
public void onFail(TDSFriendError error) {
toast("消息推送关闭失败 " + error.detailMessage);
}
});
void (^callback)(BOOL succeeded, NSError * error) = ^(BOOL succeeded, NSError * _Nullable error){
if (succeeded) {
[LogHelper log:LogInfoTypeDisplay :[NSString stringWithFormat:@"设置成功"]];
} else {
[LogHelper log:LogInfoTypeError :[NSString stringWithFormat:@"设置失败"]];
}
};
[TDSFriends disableFriendNotificationWithCallback:callback];
当关闭通知后,如果需要再次开启,可调用如下接口:
- Unity
- Android
- iOS
try {
await TDSFriends.EnableFriendNotification();
TapLog("开启推送通知成功");
} catch (Exception e) {
TapLog($"开启推送通知失败: ${e}");
}
TDSFriends.enableFriendNotification(new Callback<Void>() {
@Override
public void onSuccess(Void result) {
toast("消息推送关闭成功");
}
@Override
public void onFail(TDSFriendError error) {
toast("消息推送关闭失败 " + error.detailMessage);
}
});
void (^callback)(BOOL succeeded, NSError * error) = ^(BOOL succeeded, NSError * _Nullable error){
if (succeeded) {
[LogHelper log:LogInfoTypeDisplay :[NSString stringWithFormat:@"设置成功"]];
} else {
[LogHelper log:LogInfoTypeError :[NSString stringWithFormat:@"设置失败"]];
}
};
[TDSFriends enableFriendNotificationWithCallback:callback];
响应好友变化通知
好友模块支持客户端监听好友状态变化,在游戏中实时给玩家提示。 你需要在调用上线接口前注册好友状态变更监听实例,这样,玩家上线后就能收到相应通知:
- Unity
- Android
- iOS
TDSFriends.FriendStatusChangedDelegate = new TDSFriendStatusChangedDelegate {
// 新增好友(触发时机同「已发送的好友申请被接受」)
OnFriendAdd = friendInfo => {},
// 新增好友申请
OnNewRequestComing = req => {},
// 已发送的好友申请被接受
OnRequestAccepted = req => {},
// 已发送的好友申请被拒绝
OnRequestDeclined = req => {},
// 好友上线
OnFriendOnline = userId => {},
// 好友下线
OnFriendOffline = userId => {},
// 好友富信息变更
OnRichPresenceChanged = (userId, richPresence) => {},
// 当前玩家成功上线(长连接建立成功)
OnConnected = () => {},
// 当前玩家长连接断开,SDK 会自动重试,开发者通常无需额外处理
OnDisconnected = () => {},
// 当前连接异常
OnConnectionError = (code, message) => {},
};
TDSFriends.registerFriendStatusChangedListener(new FriendStatusChangedListener() {
// 新增好友(触发时机同「已发送的好友申请被接受」)
@Override
public void onFriendAdd(TDSFriendInfo friendInfo) {}
// 新增好友申请
@Override
public void onNewRequestComing(TDSFriendshipRequest request) {}
// 通过分享链接进入游戏时触发此回调
// 开发者可以在此回调中直接调用 handFriendInvitationLink
// 或通过 parseFriendInvitationLink 解析链接,获取相关参数再执行自定义的逻辑
@Override
public void onReceivedInvitationLink(String url) {}
// 已发送的好友申请被接受
@Override
public void onRequestAccepted(TDSFriendshipRequest request) {}
// 已发送的好友申请被拒绝
@Override
public void onRequestDeclined(TDSFriendshipRequest request) {}
// 好友上线
@Override
public void onFriendOnline(String userId) {}
// 好友下线
@Override
public void onFriendOffline(String userId) {}
// 好友富信息变更
@Override
public void onRichPresenceChanged(String userId, TDSRichPresence richPresence) {}
// 当前玩家成功上线(长连接建立成功)
@Override
public void onConnected() {}
// 当前玩家长连接断 开,SDK 会自动重试,开发者通常无需额外处理
@Override
public void onDisconnected() {}
// 当前连接异常
@Override
public void onConnectError(int code, String msg){});
}
[TDSFriends registerNotificationDelegate:self];
// 新增好友(触发时机同「已发送的好友申请被接受」)
- (void)onFriendAdd:(TDSFriendInfo *)info {}
// 新增好友申请
- (void)onNewRequestComing:(TDSFriendshipRequest *)request {}
// 已发送的好友申请被接受
- (void)onRequestAccepted:(TDSFriendshipRequest *)request {}
// 已发送的好友申请被拒绝
- (void)onRequestDeclined:(TDSFriendshipRequest *)request {}
// 好友上线
- (void)onFriendOnline:(NSString *)userId {}
// 好友下线
- (void)onFriendOffline:(NSString *)userId {}
// 好友富信息变更
- (void)onRichPresenceChanged:(NSString *)userId dictionary:(NSDictionary * _Nullable)dictionary {}
// 当前玩家成功上线(长连接建立成功)
- (void)onConnected {}
// 当前玩家长连接断开,SDK 会自动重试,开发者通常无需额外处理
- (void)onDisconnected {}
// 当前连接异常
- (void)onDisconnectedWithError:(NSError * _Nullable)error {}
上述事件中的「好友」,均指「好友模式」下的「好友」。 目前 SDK 暂不支持监听关注模式下的事件。
如果想要停止监听:
- Unity
- Android
- iOS
TDSFriends.FriendStatusChangedDelegate = null;
TDSFriends.removeFriendStatusChangedListener();
[TDSFriends unregisterNotificationDelegate];
玩家上线
玩家成功登录后,需要调用该接口建立和好友服务云端的长连接。 长连接建立后,如果网络临时中断,SDK 会在网络恢复后自动重连。
- Unity
- Android
- iOS
await TDSFriends.Online();
TDSFriends.online(new Callback<Void>() {
@Override
public void onSuccess(Void result) {
// 成功
}
@Override
public void onFail(TDSFriendError error) {
// 处理异常
}
});
建立长连接后,如果玩家通过好友邀请链接打开游戏,那么 Android SDK 也会自动发送对应的好友申请。
[TDSFriends online];