更新日期:2025年 12月 12日QuickGame(App Store Unreal Engine)客户端接入文档
<h3>
<span style="font-size:16px;">1. 概述</span>
</h3>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;">本⽂档介绍如何将 QuickGameSDK集成到 Unreal Engine iOS 项⽬</span>
</p>
<p>
<span style="font-size:14px;">SDK 提供了初始化、登录、退出登录、⽀付</span><span style="font-size:14px;">和上传⻆⾊信息等功能</span>
</p>
<p>
<span style="font-size:14px;">接⼊时可参考UE Demo,配合iOS原⽣接⼊⽂档:QuickGame_AppStore客户端接⼊⽂档.pdf(在下载的SDK资源里获取此文档)</span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<h3>
<span style="font-size:16px;">2. 版本信息</span>
</h3>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<span style="font-size:14px;">SDK 版本: 2.7.0</span><br />
<span style="font-size:14px;">UE 版本: 5.7</span><br />
<p>
<span style="font-size:14px;">⽀持平台: iOS 10.0+<br />
⽀持Xcode: 16.0+<br />
</span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<h3>
<span style="font-size:16px;">3. 快速开始</span>
</h3>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;">最⼩集成步骤:</span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<span style="font-size:14px;">1. 复制 SDK ⽂件到项⽬ JySDK/iOS/SDK/ ⽬录</span><br />
<span style="font-size:14px;">2. 配置 Info.plist(⻅下⽅详细说明)</span><br />
<span style="font-size:14px;">3. 获取 Product Code(从 SDK 后台创建产品后获取)</span><br />
<span style="font-size:14px;">4. 调⽤初始化接⼝: UJySDKManager::GetInstance()->InitializeSDK(ProductCode)</span><br />
<span style="font-size:14px;">5. 绑定回调并调⽤登录: SDKManager->Login()</span><br />
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;">详细步骤请参考下⽅"<span style="white-space:normal;font-size:14px;">8. </span>集成步骤"章节</span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<h3>
<span style="font-size:16px;">4. 架构说明</span>
</h3>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<span style="font-size:14px;">SDK 接⼝采⽤分层架构设计,接⼝调⽤层次如下:</span>
<p>
<br />
</p>
<pre class="brush:js;toolbar:false">UE 代码层
↓
JySDKManager (UE 封装层)
- 类型转换: FString ↔ std::string
- 委托系统: UE 委托 ↔ std::function
↓
QuickGameSDK::SDK (标准 C++ 接⼝层)
- 纯 C++ 接⼝,类似其他 SDK 的使⽤⽅式
- 使⽤标准库类型(std::string, std::function)
↓
JySDKBridge (C 接⼝层)
↓
JySDKBridge.mm (Objective-C++ 桥接层)
↓
原⽣ iOS SDK (Objective-C)</pre>
<p>
<br />
</p>
<span style="font-size:14px;"> </span><br />
<h3>
<span style="font-size:16px;">5. ⽂件结构</span>
</h3>
<p>
<br />
</p>
<p>
<br />
</p>
<pre class="brush:js;toolbar:false">Source/QuickGameIOS/IOS/
├── QuickGameSDK.h # 标准 C++ 接⼝头⽂件
├── QuickGameSDK.cpp # 标准 C++ 接⼝实现
├── JySDKBridge.h # C 接⼝头⽂件
├── JySDKBridge.mm # Objective-C++ 桥接实现
├── JySDKManager.h # UE C++ 接⼝类(暴露给蓝图)
├── JySDKManager.cpp # UE C++ 接⼝实现(内部调⽤ QuickGameSDK)
└── JySDKAppDelegate.mm # AppDelegate URL回调处理
JySDK/iOS/SDK/
├── JySDK.framework # 主 SDK 框架(必需)
├── jywlRes.bundle # SDK 资源包(必需)
├── ATAuthSDK.framework # 阿⾥云⼀键登录 SDK(必需)
├── ATAuthSDK.bundle # ATAuthSDK 资源包(必需)
├── YTXMonitor.framework # 运营商 SDK(必需)
├── YTXOperators.framework # 运营商 SDK(必需)
├── TencentOpenAPI.framework # QQ SDK(必需,⽤于QQ登录)
└── libWeChatSDK.a # 微信 SDK 静态库(必需,⽤于微信登录)</pre>
<p>
<br />
</p>
<p>
<br />
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<h3>
<span style="font-size:16px;">6. 使⽤⽅法</span>
</h3>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<h4>
<span style="font-size:14px;"><strong>6.1 在蓝图中使⽤</strong></span>
</h4>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;"><strong>6.1.1 初始化SDK</strong></span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;">1. 获取JySDKManager实例</span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;">调⽤ Get Instance 节点</span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;">2. 初始化SDK</span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<span style="font-size:14px;">调⽤ Initialize SDK 节点</span><br />
<p>
<span style="font-size:14px;">输⼊参数: Product Code (产品Code,从QuickGameSDK后台获取)</span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;">3. 绑定初始化回调</span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<span style="font-size:14px;">绑定 On Init Complete 委托</span><br />
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;">检查返回的 Status :</span>
</p>
<span style="font-size:14px;">InitSuccess (2000) - 初始化成功</span><br />
<p>
<span style="font-size:14px;">InitFail (2001) - 初始化失败</span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;"><strong>6.1.2 登录</strong></span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;">1. 调⽤登录</span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;">调⽤ Login 节点</span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;">2. 绑定登录回调</span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<span style="font-size:14px;">绑定 On Login Complete 委托</span><br />
<span style="font-size:14px;">回调参数:</span><br />
<span style="font-size:14px;">Status - 登录状态码</span><br />
<span style="font-size:14px;">UserId - ⽤户ID</span><br />
<span style="font-size:14px;">Token - ⽤户Token(⽤于服务器验证)</span><br />
<p>
<span style="font-size:14px;">Message - 消息</span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;"><strong>6.1.3 退出登录</strong></span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;">调⽤退出登录</span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<span style="font-size:14px;">调⽤ Logout 节点</span><br />
<p>
<span style="font-size:14px;">退出登录后,SDK 会隐藏悬浮球并清除登录状态</span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;"><strong>6.1.4 ⽀付</strong></span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;">1. 调⽤⽀付</span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;">调⽤ Pay 节点</span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<span style="font-size:14px;">输⼊参数:</span><br />
<span style="font-size:14px;">Product Id - 商品ID(必填)</span><br />
<span style="font-size:14px;">Product Name - 商品名称(必填)</span><br />
<span style="font-size:14px;">Product Desc - 商品描述(可选)</span><br />
<span style="font-size:14px;">Price - 价格(必填,单位:元)</span><br />
<span style="font-size:14px;">Order No - 游戏订单号(必填,必须唯⼀)</span><br />
<span style="font-size:14px;">Url - 回调通知地址(可选)</span><br />
<span style="font-size:14px;">Extras - 透传参数(可选)</span><br />
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;">2. 绑定⽀付回调</span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;">绑定 On Pay Complete 委托</span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<span style="font-size:14px;">回调参数:</span><br />
<span style="font-size:14px;">Status - ⽀付状态码:</span><br />
<span style="font-size:14px;">OrderSuccess (3000) - ⽀付成功</span><br />
<span style="font-size:14px;">OrderFail (3001) - ⽀付失败</span><br />
<span style="font-size:14px;">OrderCancel (3002) - ⽀付取消</span><br />
<span style="font-size:14px;">OrderUnknown (3003) - ⽀付未知状态</span><br />
<span style="font-size:14px;">Order No - 订单号</span><br />
<span style="font-size:14px;">Product Id - 商品ID</span><br />
<span style="font-size:14px;">Transaction Id - 交易ID</span><br />
<span style="font-size:14px;">Message - 消息</span><br />
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;"><strong>6.1.5 上传⻆⾊信息</strong></span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;">调⽤上传⻆⾊</span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;">调⽤ Update Role Info 节点</span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<span style="font-size:14px;">必填参数:</span><br />
<span style="font-size:14px;">Role Id - ⻆⾊ID</span><br />
<span style="font-size:14px;">Role Name - ⻆⾊名称</span><br />
<span style="font-size:14px;">Server Id - 区服ID</span><br />
<span style="font-size:14px;">Server Name - 区服名称</span><br />
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;">可选参数:</span>
</p>
<span style="font-size:14px;">Role Level - ⻆⾊等级</span><br />
<span style="font-size:14px;">Vip Level - VIP等级</span><br />
<span style="font-size:14px;">Role Power - ⻆⾊战⼒</span><br />
<span style="font-size:14px;">Game Role Balance - ⻆⾊余额</span><br />
<span style="font-size:14px;">Party Name - ⼯会名称</span><br />
<p>
<span style="font-size:14px;"> </span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;"><strong>6.1.6 获取⽤户信息</strong></span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<span style="font-size:14px;">Get User Id - 获取⽤户ID</span><br />
<span style="font-size:14px;">Get User Token - 获取⽤户Token</span><br />
<span style="font-size:14px;">Is Logined - 是否已登录</span><br />
<p>
<span style="font-size:14px;">Is Guest - 是否为游客</span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<h4>
<span style="font-size:14px;"><strong>6.</strong><strong>2 在C++中使⽤</strong></span>
</h4>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;">⽅式⼀:使⽤ UE 封装层(⽀持蓝图)</span>
</p>
<p>
<br />
</p>
<p>
<br />
</p>
<pre class="brush:js;toolbar:false">#include "IOS/JySDKManager.h"
// 获取实例
UJySDKManager* SDKManager = UJySDKManager::GetInstance();
// 初始化
SDKManager->InitializeSDK(TEXT("YOUR_PRODUCT_CODE"));
// 绑定回调
SDKManager->OnInitComplete.AddDynamic(this, &AMyGameMode::HandleInitComplete);
SDKManager->OnLoginComplete.AddDynamic(this, &AMyGameMode::HandleLoginComplete);
SDKManager->OnPayComplete.AddDynamic(this, &AMyGameMode::HandlePayComplete);
// 登录
SDKManager->Login();
// 退出登录
SDKManager->Logout();
// ⽀付
SDKManager->Pay(
TEXT("product_id"),
TEXT("商品名称"),
TEXT("商品描述"),
1.0f, // 价格
TEXT("order_12345"),
TEXT(""), // URL
TEXT("") // Extras
);
// 上传⻆⾊
SDKManager->UpdateRoleInfo(
TEXT("role_123"),
TEXT("⻆⾊名"),
TEXT("server_1"),
TEXT("服务器1"),
TEXT("10"), // Level
TEXT("1"), // VIP
TEXT(""), // Power
TEXT(""), // Balance
TEXT(""), // Party
);</pre>
<p>
<br />
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;">⽅式⼆:使⽤标准 C++ 接⼝</span>
</p>
<p>
<br />
</p>
<p>
<br />
</p>
<pre class="brush:js;toolbar:false">#include "IOS/QuickGameSDK.h"
using namespace QuickGameSDK;
// 获取实例
SDK& sdk = SDK::GetInstance();
// 初始化(使⽤ lambda 回调)
sdk.Initialize("YOUR_PRODUCT_CODE", [](Status status) {
if (status == Status::InitSuccess) {
// 初始化成功
}
});
// 登录
sdk.Login([](Status status, const std::string& userId, const std::string& token, const
std::string& message) {
if (status == Status::Success) {
// 登录成功
}
});
// ⽀付
sdk.Pay(
"product_id",
"商品名称",
"商品描述",
1.0f,
"order_12345",
"", // URL
"", // Extras
[](Status status, const std::string& orderNo, const std::string& productId,
const std::string& transactionId, const std::string& message) {
if (status == Status::OrderSuccess) {
// ⽀付成功
}
}
);
// 上传⻆⾊
sdk.UpdateRoleInfo(
"role_123",
"⻆⾊名",
"server_id",
"服务器名",
"10", // ⻆⾊等级
);</pre>
<p>
<br />
</p>
<br />
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<h3>
<span style="font-size:16px;">7. API 参考</span>
</h3>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;">UJySDKManager 类</span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;"><strong>7.1 静态⽅法</strong></span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;">static UJySDKManager* GetInstance() - 获取单例实例</span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;"><strong>7.2 初始化与登录</strong></span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<span style="font-size:14px;">void InitializeSDK(const FString& ProductCode) - 初始化 SDK</span><br />
<span style="font-size:14px;">void Login() - 调⽤登录</span><br />
<p>
<span style="font-size:14px;">void Logout() - 退出登录</span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;"><strong>7.3 ⽀付</strong></span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<span style="font-size:14px;">void Pay(const FString& ProductId, const FString& ProductName, const FString&</span><br />
<span style="font-size:14px;">ProductDesc, float Price, const FString& OrderNo, const FString& Url, const FString&</span><br />
<p>
<span style="font-size:14px;">Extras) - 发起⽀付</span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;"><strong>7.4 ⻆⾊信息</strong></span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;">void UpdateRoleInfo(...) - 上传⻆⾊信息(参数⻅上⽅说明)</span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;"><strong>7.5 ⽤户信息查询</strong></span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<span style="font-size:14px;">FString GetUserId() - 获取⽤户 ID</span><br />
<span style="font-size:14px;">FString GetUserToken() - 获取⽤户 Token</span><br />
<span style="font-size:14px;">bool IsLogined() - 是否已登录</span><br />
<p>
<span style="font-size:14px;">bool IsGuest() - 是否为游客账号</span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;"><strong>7.6 回调委托</strong></span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<span style="font-size:14px;">FOnInitComplete OnInitComplete - 初始化完成回调</span><br />
<span style="font-size:14px;">FOnLoginComplete OnLoginComplete - 登录完成回调</span><br />
<span style="font-size:14px;">FOnPayComplete OnPayComplete - ⽀付完成回调</span><br />
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;"><strong>7.7 状态码说明</strong></span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<span style="font-size:14px;">ErrorNone (1000) - 事件成功</span><br />
<span style="font-size:14px;">InitSuccess (2000) - 初始化成功</span><br />
<span style="font-size:14px;">InitFail (2001) - 初始化失败</span><br />
<span style="font-size:14px;">OrderSuccess (3000) - ⽀付成功</span><br />
<span style="font-size:14px;">OrderFail (3001) - ⽀付失败</span><br />
<span style="font-size:14px;">OrderCancel (3002) - ⽀付取消</span><br />
<span style="font-size:14px;">OrderUnknown (3003) - ⽀付未知状态</span><br />
<p>
<span style="font-size:14px;"> </span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<h3>
<span style="font-size:16px;">8. 集成步骤</span>
</h3>
<p>
<br />
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;"><strong>8.1 ⽂件结构要求</strong></span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;">确保 SDK ⽂件位于项⽬根⽬录下的 JySDK/iOS/SDK/ ⽬录:</span>
</p>
<p>
<br />
</p>
<p>
<br />
</p>
<pre class="brush:js;toolbar:false">QuickGameIOS/
└── JySDK/
└── iOS/
└── SDK/
├── JySDK.framework # 主 SDK 框架(必需)
├── jywlRes.bundle # SDK 资源包(必需)
├── ATAuthSDK.framework # 阿⾥云⼀键登录 SDK(必需)
├── ATAuthSDK.bundle # ATAuthSDK 资源包(必需)
├── YTXMonitor.framework # 运营商 SDK(必需)
├── YTXOperators.framework # 运营商 SDK(必需)
├── TencentOpenAPI.framework # QQ SDK(⽤于QQ登录)
└── libWeChatSDK.a # 微信 SDK 静态库(⽤于微信登录)</pre>
<p>
<br />
</p>
<br />
<p>
<span style="color:#E53333;font-size:14px;">注意:所有框架和资源包都是必需的,缺少任何⼀个都可能导致编译或运⾏时错误</span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;"><strong>8.2 编译配置</strong></span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<br />
</p>
<span style="font-size:14px;">SDK 框架和资源需要配置到 Source/QuickGameIOS/QuickGameIOS.Build.cs 中,可参考Demo:</span><br />
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;">主 SDK:</span>
</p>
<span style="font-size:14px;">Framework: JySDK.framework</span><br />
<span style="font-size:14px;">Bundle: jywlRes.bundle</span><br />
<p>
<br />
</p>
<p>
<span style="font-size:14px;">依赖框架:</span>
</p>
<span style="font-size:14px;">ATAuthSDK.framework - 阿⾥云⼀键登录 SDK(必需)<br />
ATAuthSDK.bundle - ATAuthSDK 资源包(必需)<br />
YTXMonitor.framework - 监控 SDK(必需)<br />
YTXOperators.framework - 运营商 SDK(必需)<br />
TencentOpenAPI.framework - QQ SDK(⽤于QQ登录)<br />
libWeChatSDK.a - 微信 SDK 静态库(⽤于微信登录)<br />
</span>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;">系统框架依赖:</span>
</p>
<span style="font-size:14px;">Foundation - 基础框架<br />
UIKit - UI 框架<br />
StoreKit - 内购框架<br />
CoreTelephony - 运营商信息(必需)<br />
SystemConfiguration - ⽹络配置(必需)<br />
</span>
<p>
<br />
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;"><strong>8.3 Info.plist 配置(</strong><span style="color:#E53333;"><strong>重要</strong></span><strong>)</strong></span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;">需要在 Xcode的 info.plist中添加以下配置:</span>
</p>
<p>
<span style="font-size:14px;"><br />
</span><span style="font-size:14px;"><strong>NSAppTransportSecurity(⽹络访问权限)</strong></span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;"> </span>
</p>
<pre class="brush:js;toolbar:false"><key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict></pre>
<br />
<p>
<br />
</p>
<p>
<span style="font-size:14px;"><strong>LSApplicationQueriesSchemes(URL Schemes ⽩名单)</strong></span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;">⽤于⽀持第三⽅登录(微信、QQ等),需要在⽩名单中声明:</span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;"> </span>
</p>
<pre class="brush:js;toolbar:false"><key>LSApplicationQueriesSchemes</key>
<array>
<string>mqq</string>
<string>mqqopensdkapi</string>
<string>mqqopensdkapiV2</string>
<string>mqqopensdkapiV3</string>
<string>weixin</string>
<string>weixinULAPI</string>
</array></pre>
<br />
<br />
<span style="font-size:14px;"><strong>CFBundleURLTypes(微信和QQ回调URL Scheme)</strong></span>
<p>
<br />
</p>
<p>
<span style="font-size:14px;"><br />
</span><span style="font-size:14px;">如果使⽤微信或QQ登录,需要配置 URL Scheme ⽤于回调:</span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;"> </span>
</p>
<pre class="brush:js;toolbar:false"><key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLSchemes</key>
<array>
<string>wxYOUR_WECHAT_APP_ID</string> <!-- 替换为你的微信AppID -->
</array>
</dict>
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLSchemes</key>
<array>
<string>tencentYOUR_QQ_APP_ID</string> <!-- 替换为你的QQ AppID -->
</array>
</dict>
</array></pre>
<br />
<p>
<br />
</p>
<p>
<span style="font-size:14px;">提示:</span>
</p>
<p>
<span style="font-size:14px;">微信 URL Scheme 格式: wx[你的微信AppID]</span><br />
<span style="font-size:14px;">QQ URL Scheme 格式: tencent[你的QQ AppID]</span><br />
<span style="font-size:14px;">如果不使⽤微信/QQ登录,可以省略此配置</span><br />
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;"><strong>NSPhotoLibraryUsageDescription(相册权限)</strong></span>
</p>
<p>
<br />
</p>
<pre class="brush:js;toolbar:false"><key>NSPhotoLibraryUsageDescription</key>
<string>需要访问相册以保存游客账号信息</string>
<key>NSPhotoLibraryAddUsageDescription</key>
<string>需要访问相册以保存游客账号信息</string></pre>
<br />
<p>
<br />
</p>
<div style="white-space:nowrap;">
<br />
</div>