跳到主要内容
版本:v4

iOS SDK 开发指南

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

集成前准备​

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

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

SDK 获取​

远程依赖​

  1. 在工程 Podfile 文件中对应模块下添加依赖:
pod 'TapTapSDK/RelationLite', '~> 4.11.0'
  1. 执行 Pod install 下载对应依赖文件

本地文件依赖​

好友 Lite 依赖于初始化和 TapTap 登录模块,使用本地文件方式添加依赖时,需先参考集成指南 和 TapTap 登录添加对应本地文件依赖项。

  1. 在下载页下载如下文件:
  • TapTapRelationLiteSDK.xcframework 好友依赖库
  • TapTapRelationLiteResource.bundle 好友资源文件
  • TapTapProfileSDK.xcframework 用户名片依赖库
  • TapTapProfileResource.bundle 用户名片资源文件
  • TapTapKingfisher.xcframework 基础库
  1. 在工程中添加 framework 静态库,注意添加时选择 Embed 方式为 Do Not Embed,导入 bundle 资源文件

外部唤起工程配置​

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

  1. 在 Xcode 工程的 Info.plist 中添加 URL Scheme:tds{clientId},并将 {clientId} 替换为游戏的 Client ID。

  2. 在 openURL 回调中添加 SDK 处理

    a) 如果项目中有 SceneDelegate.swift,请在该文件中添加如下代码:

    import TapTapRelationLiteSDK

    func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) {
    for context in URLContexts {
    /// 是否被好友模块处理
    if TapTapRelationLite.open(url: context.url) {
    return
    }
    }
    }

    b) 如果项目中只有 AppDelegate.swift,请在该文件中添加如下代码:

    import TapTapRelationLiteSDK

    func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey: Any] = [:]) -> Bool {
    return TapTapRelationLite.open(url: url)
    }

    func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool {
    return TapTapRelationLite.open(url: url)
    }

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

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

import TapTapRelationLiteSDK

class MyRelationLiteDelegate: NSObject, TapTapRelationLiteDelegate {
func onRelationLiteResult(code: Int) {
switch(code){
case TapTapRelationLiteCode.NEED_LOGIN:
// 需要登录
case TapTapRelationLiteCode.NEED_USER_FRIENDS_SCOPE:
// 缺少好友权限
case TapTapRelationLiteCode.REQUEST_ERROR:
// 请求错误
default:
// 其他错误
}
}

}

let myRelationLiteDelegate = MyRelationLiteDelegate()
// 注册好友回调
TapTapRelationLite.registerRelationLiteDelegate(delegate: myRelationLiteDelegate)

// 移除好友回调
TapTapRelationLite.unregisterRelationLiteDelegate(delegate: myRelationLiteDelegate)

注册邀请回调​

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

import TapTapRelationLiteSDK

class InviteCallback: NSObject, TapTapRelationLiteInviteDelegate {
func onGameInviteReceived(openId: String, unionId: String) {
NSLog("收到邀请上线 openId = \(openId) unionId = \(unionId)")
}

func onTeamInviteReceived(openId: String, unionId: String, teamId: String) {
NSLog("收到组队邀请 openId = \(openId) unionId = \(unionId) teamId = \(teamId)")
}
}

let inviteDelegate = InviteCallback()
TapTapRelationLite.registerRelationLiteInviteDelegate(delegate: inviteDelegate)
TapTapRelationLite.unregisterRelationLiteInviteDelegate(delegate: inviteDelegate)

邀请好友上线​

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

import TapTapRelationLiteSDK

TapTapRelationLite.inviteGame()

邀请好友组队​

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

import TapTapRelationLiteSDK

let teamId = ""
TapTapRelationLite.inviteTeam(teamId: teamId)

获取好友列表​

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

import TapTapRelationLiteSDK

let nextPageToken = ""
TapTapRelationLite.getFriendsList(nextPageToken: nextPageToken) { result, error in
if let error {
NSLog("request error : \(error.localizedDescription)")
return
}
// 请求成功, 好友数据:result?.list, 下一页 token : result?.nextPageToken
}

获取关注列表​

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

import TapTapRelationLiteSDK

let nextPageToken = ""
TapTapRelationLite.getFollowingList(nextPageToken: nextPageToken) { result, error in
if let error {
NSLog("request error : \(error.localizedDescription)")
return
}
// 请求成功, 关注用户数据:result?.list, 下一页 token : result?.nextPageToken
}

获取粉丝列表​

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

import TapTapRelationLiteSDK

let nextPageToken = ""
TapTapRelationLite.getFansList(nextPageToken: nextPageToken) { result, error in
if let error {
NSLog("request error : \(error.localizedDescription)")
return
}
// 请求成功, 粉丝数据:result?.list, 下一页 token : result?.nextPageToken
}

同步好友关系(openId)​

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

import TapTapRelationLiteSDK

let action = TapTapRelationLiteSyncType.ADD_FRIEND
let nickname = ""
let friendNickname = ""
let friendOpenId = ""
TapTapRelationLite.syncRelationshipWithOpenId(action: action , nickname: nickname, friendNickname: friendNickname, friendOpenId: friendOpenId) { error in
if let error {
NSLog("request error : \(error.localizedDescription)")
return
}
// 同步成功
}

同步好友关系(unionId)​

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

import TapTapRelationLiteSDK

let action = TapTapRelationLiteSyncType.ADD_FRIEND
let nickname = ""
let friendNickname = ""
let friendUnionId = ""
TapTapRelationLite.syncRelationshipWithUnionId(action: action , nickname: nickname, friendNickname: friendNickname, friendUnionId: friendUnionId) {
error in
if let error {
NSLog("request error : \(error.localizedDescription)")
return
}
// 同步成功
}

展示 TapTap 用户名片​

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

import TapTapRelationLiteSDK

// openId unionId二选一即可
let openId = ""
let unionId = ""

TapTapRelationLite.showTapUserProfile(openId: openId)

TapTapRelationLite.showTapUserProfile(unionId: unionId)

国际化​

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