Skip to main content
Version: v4

iOS SDK 开发指南

本文介绍如何在 iOS 原生项目中接入 TapTap 登录。

集成前准备​

  1. 参考 开发者中心配置 创建应用、配置 Bundle ID
  2. 参考 TapTap 登录功能介绍开通 TapTap 登录服务
  3. 参考 iOS 集成指南 完成 TapSDK 基础接入

SDK 获取​

远程依赖​

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

本地文件依赖​

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

  1. 在 下载页 下载如下文件:
  • TapTapLoginSDK.xcframework 登录依赖库
  • TapTapLoginResource.bundle 登录资源文件
  1. 在工程中添加 framework 静态库,Embed 方式选择 Do Not Embed,并导入 bundle 资源文件

工程配置​

需要添加 TapTap 客户端跳转配置,否则授权完成后无法返回游戏。

配置 URL Scheme​

在 Xcode 中右键 Info.plist,选择 Open As > Source Code,然后添加以下配置(将 clientID 替换为开发者中心的 Client ID):

在 Xcode 中将 Info.plist 以 Source Code 方式打开

<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLName</key>
<string>taptap</string>
<key>CFBundleURLSchemes</key>
<array>
<!-- 中括号需要去掉,最终是 Client ID 前拼接 tt,例如:ttFwFdCxxxxxxxQDQwQN -->
<string>tt[clientID]</string>
</array>
</dict>
</array>

<key>LSApplicationQueriesSchemes</key>
<array>
<string>tapiosdk</string>
<string>tapsdk</string>
<string>taptap</string>
</array>

配置 openURL​

如果项目中有 SceneDelegate.swift,请添加:

import TapTapLoginSDK

func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) {
for context in URLContexts {
let hasIntercept = TapTapLogin.open(url: context.url)
}
}

如果项目中只有 AppDelegate.swift,请添加:

import TapTapLoginSDK

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

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

发起登录​

在用户点击 TapTap 登录按钮后调用。授权范围必须包含 public_profile 或 basic_info,可按业务组合其他权限。

权限说明
public_profile获得 openId、unionId、用户昵称、用户头像
basic_info获得 openId 和 unionId
user_friends获得访问 TapTap 好友相关数据的权限
tip

若只请求 basic_info,用户可使用无感登录,无需手动确认授权。

import TapTapLoginSDK

let scopes: [Scope] = [Scope.publicProfile]

TapTapLogin.login(with: scopes) { account, error, isCancel in
if isCancel {
// 用户取消登录,不要提示为系统错误
} else if let error = error {
NSLog("Tap 登录失败:\(error.localizedDescription)")
} else if let account = account {
let token = account.accessToken
let userInfo = account.userInfo
}
}

SDK 默认使用当前最上层页面作为登录弹窗容器。如需指定页面,可传入 viewController:

TapTapLogin.login(with: scopes, viewController: self) { account, error, isCancel in
// 处理登录结果
}
参数类型必选说明
scopesSwift [Scope] / Objective-C NSArray是本次登录请求的授权范围,必须包含 public_profile 或 basic_info。
viewControllerUIViewController否指定承载登录页面的控制器;不传时 SDK 使用当前最上层页面。
handler登录结果闭包 / Block是返回 account、error 和 isCancel,分别用于处理成功、失败和取消。

获取当前用户​

游戏启动时先调用该接口。该接口没有参数,返回本地缓存的 TapTapAccount;没有可用登录信息时返回 nil。如果本地已有有效登录信息,不要再弹出登录按钮。

import TapTapLoginSDK

if let account = TapTapLogin.getCurrentTapAccount() {
// 用户已登录
let token = account.accessToken
let userInfo = account.userInfo
let openId = userInfo?.openId
} else {
// 用户未登录,显示登录按钮
}
字段说明
accessToken玩家在 TapTap 平台的用户 token。服务端调用 OpenAPI 时使用,见 获取用户信息
openId用户在当前游戏内的唯一标识
unionId用户在同一厂商下所有游戏中的统一标识
nameTapTap 昵称
avatarTapTap 头像 URL

登出​

登出只清除本地缓存的 TapTap 登录信息,不会退出 TapTap 客户端。

import TapTapLoginSDK

TapTapLogin.logout()

接入验证​

场景预期结果
初始化完成后点击登录回调成功、取消或失败之一
已安装 TapTap 客户端拉起客户端完成授权
未安装 TapTap 客户端进入 WebView 授权
授权后返回游戏openURL 被登录模块处理,并收到登录结果
登录成功后重启应用getCurrentTapAccount() 返回当前账号
调用 logout()本地登录信息被清除,可重新发起登录
用户取消登录isCancel 为 true,不提示系统错误