Unity 国内 SDK 接入文档
说明
- 由于Android/iOS/PC 端差异原因,提供的依赖配置文件不同,出包前请务必详细按照本文档配置
- 如游戏首次接入,需做好 Android 手机全面屏适配(常见适配方式一般都是默认全屏展示,顶部刘海或摄像头相关不能影响到游戏相关 UI 功能,否则云测时会影响评级)
- 确保所有调用SDK的接口都放在()调用
- 提供的Unity 展示效果,示例代码均为参考示例,请根据游戏实际UI 进行调整
- 如有对接口问题或调用逻辑相关存在疑问可直接在对接群与技术沟通
- 本文档会不定期更新,如涉及接口变动会在群内同步消息,更多更新内容请查看Android SDK更新/iOS SDK更新
- 点击此处可进行UnityDemo 下载
- Unity资源下载 Unity_SDK 下载
通用配置:
- 下载 UnityDemo 示例工程,可参考Demo相关工程结构配置
- 下载Unity SDK文件,copy Assets文件目录中的Scripts配置到 Scripts 文件中,copy Plugins文件夹到游戏Assets/Plugins目录下
- HoolaiSdkManager.cs 是功能接口类,调用方式实现可查看示例代码
- IPlatformCallbackListener.cs 是回调接口类,回调方式实现可查看下面示例代码
Android 国内出包配置
- 将 access.config copy文件到 Assets/StreamingAssets文件夹下
- 将Android文件夹放到 Unity 项目 中Assets/Plugins/Android
- 游戏横竖屏配置,默认配置的游戏启动类为横屏自适应,如果是竖屏替换以下字段即可,如有特殊需求可与技术支持沟通
- 如游戏为竖屏请在Assets/plugins/Android/LauncherManifest.xml中修改com.unity.game.GameActivity中的属性值 android:screenOrientation="sensorLandscape" 为android:screenOrientation="portrait"
- sensorLandscape 横屏自适应
- portrait 竖屏锁定
- landscape 横屏锁定
- 另外默认com.unity.game.GameActivity启动类配置中启用了硬件加速,如需关闭请同样修改Assets/plugins/Android/LauncherManifest.xml 中
- hardwareAccelerated="false"
- 如集成了了其他 Android SDK相关功能库,或使用了 Android SDK 相关类库需注意
- AndroidManifest.xml中配置包名位置()
- 国内出包时,targetSDKVersion 设置为 30即可,最低兼容版本根据游戏情况来定义,建议最低版本不低于 21
- Unity 中自定义配置 Android 相关配置位置,在 File-> Build Settings - > Player Settings -> Other Settings勾选配置即可
注意:
- 出包时需将签名 keystore 文件配置在 SDK 管理台,未使用签名文件出包,初始化时会提示非正版应用,请务必先配置keystore签名文件
- 如已经有了Android 自定义配置启动类,或自定义 Application需要将提供的 Android 相关配置项合并到项目已有配置中,可咨询技术支持进行沟通
- 不要开启Android 构建混淆,否则二次打包会产生类方法无法找到或类库冲突问题,可混淆加密Unity 相关类库或资源
- 由于 Unity 版本差异等原因,如编译 Android APK构建时报错,请check UnityHub是否下载了 Android SDK 相关工具库
- 游戏接入时看到的UI画面效果仅用来调试接口使用,后续会通过我们的打包工具进行二次出包后会自动切换到渠道包登录支付画面
iOS Unity 工程配置
在 Unity 工程中的 Assets → Plugins → Editor 文件夹中配置权限的描述(权限描述需要自行配置)
- private static readonly string BUNDLE_IDENTIFIER = "游戏的bundle"; // 示例:iOS工程的bundle_id
- private static readonly string ACCESS_SDK_SCHEME_SUFFIX = "channel_id"; // channel_id需跟运营获取,否则sdk初始化失败。
- private static readonly string TRACKING_USAGE_DESCRIPTION = "xxx游戏需要访问您的设备标识符(IDFA)用于广告追踪"; // 示例:需更换自己游戏的描述文本
- private static readonly string PHOTO_LIBRARY_USAGE_DESCRIPTION = "xxx将要保存截图到相册"; // 示例:需更换自己游戏的描述文本
- private static readonly string PHOTO_LIBRARY_ADD_USAGE_DESCRIPTION = "xxx将要访问您的相册"; // 示例:需更换自己游戏的描述文本
接口说明
回调相关接口
- IPlatformCallbackListener.cs 接口
using System.Collections.Generic;
public interface IPlatformCallbackListener
{
void OnInitSuccess(InitResult result);
void OnInitFailed(string reason);
void OnUpdate(string data);
void OnLoginSuccess(LoginResult result);
void OnLoginFailed(string reason);
void OnRefreshUser(LoginResult result);
void OnLogout(string message);
void OnPayGoodsList(List<GoodsInfo> goodsList);
void OnPaySuccess(string message);
void OnPayFailed(string reason);
void OnShareSuccess(string message);
void OnShareFailed(string reason);
void OnCustomExit();
}InitResult
| 参数名 | 类型 | 描述 |
|---|---|---|
| gameId | int | 游戏id,比如2001,项目唯一 id |
| channelId | int | 渠道id ,比如10304,渠道唯一id |
| channel | string | 渠道id,比如xiaomi,huawei,vivo,oppo |
LoginResult
| 参数名 | 类型 | 描述 |
|---|---|---|
| uid | long | 用户唯一 id |
| channel | string | 渠道标识,比如xiaomi,huawei,vivo,oppo |
| accessToken | string | token,用于登录验证 |
| channelUid | string | 渠道 id,废弃,默认为 0 |
| serverArea | string | 区域,保留字段,空字符 |
| extendInfo | string | 扩展字段,以 jsonString 字符串传入 |
GoodsInfo
| 参数名 | 类型 | 描述 |
|---|---|---|
| itemId | string | 商品id |
| itemName | string | 商品名称 |
| itemPrice | string | 金额,单位:分 |
| showTag | string | 货币符号+金额 |
| currency | string | 币种,比如CNY, USD |
- HoolaiListener.cs 回调接口类(示例实现)
using System;
using System.Collections.Generic;
public class HoolaiListener : IPlatformCallbackListener
{
private static HoolaiListener _instance;
private List<GoodsInfo> _cachedGoodsList;
//商品列表更新事件
public event Action<List<GoodsInfo>> OnGoodsListUpdated;
public static HoolaiListener Instance
{
get
{
if (_instance == null)
{
_instance = new HoolaiListener();
}
return _instance;
}
}
//注意,需注册PlatformCallback.SetListener(this);
private HoolaiListener()
{
// 自动设置监听器
PlatformCallback.SetListener(this);
}
//初始化成功回调
public void OnInitSuccess(InitResult result)
{
NativeLogger.I("Game_Unity_Callback", $"OnInitSuccess GameId:{result.gameId} channel:{result.channel} channelId:{result.channelId}");
}
//初始化失败回调,可能为空字符串, 如使用请做好兼容性处理
public void OnInitFailed(string reason)
{
NativeLogger.I("Game_Unity_Callback", $"OnInitFailed reason:{reason}");
}
//登录成功回调
public void OnLoginSuccess(LoginResult result)
{
NativeLogger.I("Game_Unity_Callback", $"OnLoginSuccess uid:{result.uid} channel:{result.channel} channelId:{result.accessToken}");
}
//登录失败回调,可能为空字符串, 如使用请做好兼容性处理
public void OnLoginFailed(string reason)
{
NativeLogger.I("Game_Unity_Callback", $"OnLoginFailed reason:{reason}");
}
//刷新用户信息回调
public void OnRefreshUser(LoginResult result)
{
NativeLogger.I("Game_Unity_Callback", $"OnRefreshUser uid:{result.uid} channel:{result.channel} channelId:{result.accessToken}");
}
//登出回调,可能为空字符串, 如使用请做好兼容性处理
public void OnLogout(string message)
{
NativeLogger.I("Game_Unity_Callback", $"OnLogout reason:{message}");
}
//获取商品列表回调
public void OnPayGoodsList(List<GoodsInfo> goodsList)
{
_cachedGoodsList = goodsList;
OnGoodsListUpdated?.Invoke(goodsList);
NativeLogger.I("Game_Unity_Callback", $"OnPayGoodsList count:{goodsList?.Count ?? 0}");
}
//支付成功回调,注意 message 可能为空字符串, 如使用请做好兼容性处理
public void OnPaySuccess(string message)
{
NativeLogger.I("Game_Unity_Callback", $"OnPaySuccess message:{message}");
}
//支付失败回调,注意 reason 可能为空字符串, 如使用请做好兼容性处理
public void OnPayFailed(string reason)
{
NativeLogger.I("Game_Unity_Callback", $"OnPayFailed reason:{reason}");
}
//分享成功回调,如无特殊逻辑处理可不处理,注意 reason 可能为空字符串, 如使用请做好兼容性处理
public void OnShareSuccess(string reason)
{
NativeLogger.I("Game_Unity_Callback", $"OnShareSuccess reason:{reason}");
}
//分享失败回调,如无特殊逻辑处理可不处理,注意 reason 可能为空字符串, 如使用请做好兼容性处理
public void OnShareFailed(string reason)
{
NativeLogger.I("Game_Unity_Callback", $"OnShareFailed reason:{reason}");
}
//更新回调,预留接口请保留实现,可不处理
public void OnUpdate(string data)
{
NativeLogger.I("Game_Unity_Callback", $"OnUpdate data:{data}");
}
//自定义退出回调,仅Android 回调,游戏需在此处实现与游戏界面风格一致的退出弹窗,点击退出即退出游戏即可无需再次回调 SDK
public void OnCustomExit()
{
NativeLogger.I("Game_Unity_Callback", $"OnCustomExit");
}
}登录接口
HoolaiSdkManager.Login();数据上报接口
PlayerInfo
| 参数名 | 类型 | 描述 | 是否必填 |
|---|---|---|---|
| RoleId | string | 角色唯一标识id | 必填 |
| RoleName | string | 角色名称 | 必填 |
| RoleLevel | string | 角色等级 | 必填 |
| ZoneId | string | 区服id | 必填 |
| ZoneName | string | 区服名称 | 必填 |
| ServerId | string | 区服id | 必填 |
| ServerName | string | 区服名称 | 必填 |
| Balance | string | 角色余额 | 必填 |
| Vip | string | 角色vip等级 | 必填 |
| PartyName | string | 公会名称 | 非必填 |
| AppVersion | string | 游戏版本号 | 非必填 |
| AppResVersion | string | 游戏资源版本号 | 非必填 |
| ExtendAction | string | 自定义上报时的点位名称 | 自定义上报时必填 |
| RoleCreateTime | string | 角色创建时间 | 非必填 |
| Phylum | string | 数据打点序号,自定义报送时使用 | 非必填 |
| ClassField | string | 自定义事件名称 | 非必填 |
EventType
| 枚举值 | 描述 | 是否必接 |
|---|---|---|
| EnterServer | 进服 | 必接 |
| LevelUp | 升级 | 必接 |
| CreateRole | 创角 | 必接 |
| CustomerAction | 自定义报送 | 根据业务需要选接 |
PlayerInfo playerInfo = new PlayerInfo();
playerInfo.RoleId = "1234567"; //角色唯一标识id,必传
playerInfo.RoleName = "金翅大鹏"; //角色昵称,必传
playerInfo.RoleLevel = "999"; //必传,比如"123",无等级概念可传"1",注意字符串必须是数字
playerInfo.ZoneId = "1"; //必传,没有可传默认值"1",注意字符串中的值必须为数字
playerInfo.ZoneName = "1区"; //必传,没有可传默认值,比如"1区"等
playerInfo.ServerId = "1"; //必传,没有可传默认值"1",注意字符串中的值必须为数字
playerInfo.ServerName = "1区"; //必传,没有可传默认值,比如"1区"等
playerInfo.Balance = "9999"; //必传,获取不到时传""
playerInfo.Vip = "99"; //必传,如无此概念或无此值,默认传"1"即可
playerInfo.PartyName = "少林寺"; //非必传
playerInfo.AppVersion = "1.0.1"; //非必传
playerInfo.AppResVersion = "100"; //非必传
playerInfo.ExtendAction = ""; //自定义上报时必填,EnterServer,LevelUp,CreateRole上报时可不填
playerInfo.RoleCreateTime = ""; //角色创建时间,非必传
playerInfo.Phylum = "100"; //数据打点序号,自定义报送时使用,注意不要占用已经使用的序号
playerInfo.ClassField = "ok"; //事件结果,一般为ok或fail,可不传
//如果参数类型为其他数据类型的参数,需要在上报时进行转换,比如int,double,string等,使用下面方式添加即可
playerInfo.AddExtra("intKey", 55);
playerInfo.AddExtra("longLongKey", 66786658787676);
playerInfo.AddExtra("stringKey", "Hello111");
HoolaiSdkManager.SendEvent(EventType.EnterServer, playerInfo);注意:游戏需根据游戏加载时机接入以下自定义上报,否则可能会影响数据统计准确性,如需CLS网络探测,请参考点击查看规则详情
| 上报 key | 步骤(Phylum) | 结果(ClassField) | 接入方式 | 描述 |
|---|---|---|---|---|
| version_check | 10 | 游戏 | 版本更新 | |
| version_check_result | 11 | 【ok/fail】 | 游戏 | 版本更新结果 |
| hotupdate | 12 | 游戏 | 热更 | |
| hotupdate_result | 13 | 游戏 | 热更结果 | |
| game_init | 14 | 游戏 | 游戏初始化 | |
| game_init_result | 15 | 游戏 | 游戏初始化结果 |
商品信息查询接口
注意:
- iOS 支付时先通过商品信息接口获取itemId,通过获取到的商品 ItemId 进行支付
- Android 国内不需要接入该接口,直接调用支付接口即可
HoolaiSdkManager.QueryGoodsInfo();支付接口
注意:
- iOS接入时如未使用商品信息获取接口的商品 id支付,则支付不会被拉起
- Android接入时在调试界面可直接发起支付进行调试
- 通过打包工具二次分包后部分渠道支付需要先提供商品信息列表配置在SDK 后台以及渠道后台才能正常支付
- 建议接入时进行支付联调传入支付回调地址notifyUrl先进行测试
- 支付回调地址建议通过客户端传递,如客户端传入与服务器后台配置不一致,优先使用客户端传入地址
PayParams
| 参数名 | 类型 | 描述 | 是否必填 |
|---|---|---|---|
| itemId | String | 商品id | 是 |
| itemName | String | 商品名称 | 是 |
| amount | int | 金额,单位:分 | 是 |
| count | int | 数量,默认填1 | 是 |
| callbackInfo | String | 透传字段 | 否 |
| notifyUrl | String | 支付回调地址 | 否 |
| currency | String | 货币类型,默认:CNY | 是 |
| opt | Map<String, String> | 扩展参数 | 否 |
PayParams payParams = new PayParams
{
Amount = 100, //金额,单位分
ItemId = "sword_101", //商品 id,要求唯一且与 SDK 后台配置一致
ItemName = "钻石", //商品名称
CallbackInfo = "GameInfo_11_DD", //自定义参数,用于回调时原样返回,建议格式为"GameInfo_11_DD"
NotifyUrl = "", //回调地址,推荐通过客户端传递,如客户端传入和管理台配置不一致,优先使用客户端换入的地址
Count = 1, //购买数量,默认为 1
Currency = "USD" //币种,国内默认传 CNY,海外默认传 USD,通常取商品信息查询回调中的币种
};
//可选参数,一般不需要设置
payParams.AddOptionalParameter("test", "daily_bonus");
payParams.AddOptionalParameter("player_id", "p-98765");
HoolaiSdkManager.StartPay(payParams);登出接口
- 游戏内部登出时需先调用 SDK 的登出接口,收到登出回调后游戏界面再开始进行登出回到登录界面,未收到回调则不做任何处理
HoolaiSdkManager.Logout();打开用户中心接口(选接)
HoolaiSdkManager.OpenAccountCenter();打开客服接口(选接)
HoolaiSdkManager.OpenService();退出接口(仅 Android)
HoolaiSdkManager.ExitGame();注意:Android 支持返回按键,依次点击返回事件,如游戏不需要拦截处理内部逻辑,请调用 SDK 的退出接口
void Update()
{
if (Input.GetKey(KeyCode.Escape))
{
//返回上一个场景,如游戏内无需拦截返回事件请调用,将会弹出退出弹窗或回调给游戏弹出退出弹窗
HoolaiSdkManager.ExitGame();
}
}分享接口(功能开发中)
HoolaiSdkManager.ShareData(1, 1, "test");CD-Key 领取活动接口
string cdKey = "123456789"; //字符串,要求唯一
HoolaiSdkManager.AccessParticipate(AccessActivityType.CD_KEY, cdKey);iOS - Xcode工程配置
SDK 初始化文件
将下载完成的 Unity-SDK 文件夹中的 -> ios_platform_sdk -> access_core 文件夹导入到 Xcode 工程目录下 Libraries->Plugins->iOS 目录结构下,并且将 access.config 也一并放入到当前文件夹里面。
注意: access.config 需要找运营获取
拖拽文件夹到 Xcode 工程内(请勾选 "Copy items if needed" 选项),并且需要选定主 tag。截图示例:


操作完上述步骤后在 相同目录下导入 iOS 资源下的 access_hoolai 文件夹必接模块:
SDK 功能模块(必接)
- ios-platform-account-sdk
- ios-platform-applelogin
- ios-platform-block-account
- ios-platform-crashsight
- ios-platform-pay-sdk
- ios-platform-analysys
- 注意: 拖拽文件夹到 Xcode 工程内(请勾选 "Copy items if needed" 选项),并且需要选定主 tag。截图示例:


iOS必接功能
苹果登录
步骤一:导入 SDK 文件(ios-platform-applelogin) 配置 Apple 登录所需权限,在主 Target 添加 Apple 登录权限(Xcode 操作)
- 将
ios-platform-applelogin文件夹拖拽到 Xcode 工程中 - 勾选 Copy items if needed,确保文件同时添加到Unity-iPhone target(主 Target)
- 打开 Xcode 工程,选中 Unity-iPhone target 进入 切换到 Signing & Capabilities 标签页
- 点击左上角的 + Capability 按钮。
- 搜索并添加 Sign in with Apple 功能。

步骤二:添加系统依赖库(Xcode 操作)
打开 Xcode 工程,选中 UnityFramework target。
进入 Build Phases → Link Binary With Libraries。
点击 +,搜索并添加以下系统库:
- AuthenticationServices.framework

BUG收集
步骤一:导入 SDK 文件(ios-platform-crashsight) 在UnityFramework target添加系统依赖库(Xcode 操作)
- 将
ios-platform-crashsight文件夹拖拽到 Xcode 工程中 - 勾选 Copy items if needed,确保文件同时添加到Unity-iPhone target(主 Target)
- 打开 Xcode 工程,选中 UnityFramework target 进入 Build Phases → Link Binary With Libraries
- 点击 +,搜索并添加以下系统库:
- SystemConfiguration.framework
- Security.framework
- libz.dylib 或 libz.tdb
- libc++.dylib 或 libc++.tdb(可选,如果不报错可不添加)
苹果支付
步骤一:导入 SDK 文件(ios-platform-gamecenter) 在 Xcode 中为主 Target 添加支付权限
- 将
ios-platform-pay-sdk文件夹拖拽到 Xcode 工程中 - 勾选 Copy items if needed,确保文件同时添加到Unity-iPhone target(主 Target)
- 打开 Xcode 工程,选中 Unity-iPhone target(主 Target) 切换到 Signing & Capabilities 标签页。
- 点击左上角的 + Capability 按钮。
- 搜索并添加 In-App Purchase 或 Apple Pay。
⚠️ 注意:支付权限必须在 主 Target 下开启,而不是 UnityFramework target,否则支付功能无法生效。
SDK 功能模块(可选)
- ios-platform-appsflyer
- ios-platform-cloudlogproducer
- ios-platform-gamecenter
- ios-platform-qqlogin
- ios-platform-ttsdk
- ios-platform-wechatlogin
- ios-platform-qqshare
- ios-platform-wechatshare
Appsflyer 配置
- 用于发送 SKAN 回传副本到 AppsFlyer
- 适用于 iOS 15+
- 根据 Apple 规定,您只能设置 一个回传端点
- 接收到的回传副本可在 AppsFlyer 的 postbacks copy report 中查看
步骤一:导入 SDK 文件(ios-platform-appsflyer)
- 将
ios-platform-appsflyer文件夹拖拽到 Xcode 工程中 - 勾选 Copy items if needed,确保文件同时添加到:
- UnityFramework target
- Unity-iPhone target(主 Target)
步骤二:配置 Info.plist 回传端点
- 打开 Xcode 工程,选择 Unity-iPhone target(主 Target)
- 打开 Info.plist 文件,添加键:
- NSAdvertisingAttributionReportEndpoint
- 键值设置为:
https://appsflyer-skadnetwork.com/
步骤三:添加系统依赖库(UnityFramework target)
- 选中 UnityFramework target → Build Phases → Link Binary With Libraries
- 点击 + 添加以下库:
- AdSupport.framework
- iAd.framework
步骤四:配置 OneLink 子域(主 Target)
- 在 Xcode 中点击您的项目
- 选择 Unity-iPhone target(主 Target)
- 切换到 Signing & Capabilities → Associated Domains
- 打开 关联域 功能
- 添加从运营人员获取的子域,格式如下:
网络探测 配置
步骤一:导入 SDK 文件(ios-platform-cloudlogproducer)
- 将
ios-platform-cloudlogproducer文件夹拖拽到 Xcode 工程中 - 勾选 Copy items if needed,确保文件同时添加到:
- UnityFramework target
- Unity-iPhone target(主 Target)
步骤二:设置嵌入框架构建阶段
⚠️ 注意:以下库需在 主 Target(Unity-iPhone) → Embed Frameworks 下添加
- 选中 Unity-iPhone target → Build Phases → Embed Frameworks
- 点击 + 添加系统库:
- Reachability.framework

Gamecenter 配置
步骤一:导入 SDK 文件(ios-platform-gamecenter)
- 将
ios-platform-cloudlogproducer文件夹拖拽到 Xcode 工程中 - 勾选 Copy items if needed,确保文件同时添加到:
- UnityFramework target
- Unity-iPhone target(主 Target)
步骤二:添加系统依赖库(UnityFramework target)
- 选中 UnityFramework target → Build Phases → Link Binary With Libraries
- 点击 + 添加以下库:
- GameKit.framework
步骤三:开发者需要在苹果后台配置 App ID,启用 Game Center 权限后 重新生成新的证书,如没有证书配置权限联系运营来进行证书生成

步骤四:找到主Targets,切换到 Signing & Capabilities
- 点击左上角的 + Capability
- 搜索点击 Game Center 权限并添加

头条报送 配置
步骤一:导入 SDK 文件(ios-platform-ttsdk)
- 将
ios-platform-ttsdk文件夹拖拽到 Xcode 工程中 - 勾选 Copy items if needed,确保文件同时添加到:
- UnityFramework target
- Unity-iPhone target(主 Target)
步骤二:设置嵌入框架构建阶段
⚠️ 注意:以下库需在 主 Target(Unity-iPhone) → Embed Frameworks 下添加
- 选中 Unity-iPhone target → Build Phases → Embed Frameworks
- 点击 + 添加系统库:
- Reachability.framework

- Reachability.framework
QQ登录/QQ分享 配置
步骤一:导入 QQ登录/QQ分享 文件(ios-platform-qqlogin / ios-platform-qqshare)
- 将
ios-platform-qqlogin / ios-platform-qqshare文件夹拖拽到 Xcode 工程中 - 勾选 Copy items if needed,确保文件同时添加到:
- UnityFramework target
- Unity-iPhone target(主 Target)
注意
⚠️ ⚠️ ⚠️ 如果同时接入QQ登录模块、QQ分享模块,对应的模块文件夹libs只需引入一个其中一个即可
步骤二:添加系统依赖库(UnityFramework target)
- 选中 UnityFramework target → Build Phases → Link Binary With Libraries
- 点击 + 添加以下库:
- CoreGraphics.framework
- Foundation.framework
- libc++.tbd
- libiconv.tbd
- libsqlite3.tbd
- Security.framework
- SystemConfiguration.framework
- WebKit.frameworkk
步骤三:在 Info.plist 设置白名单
- 打开 Xcode 工程,选择 Unity-iPhone target(主 Target)
- 设置LSApplicationQueriesSchemes 添加相应的白名单
<key>LSApplicationQueriesSchemes</key>
<array>
<string>tim</string>
<string>mqq</string>
<string>mqqapi</string>
<string>mqqbrowser</string>
<string>mttbrowser</string>
<string>mqqOpensdkSSoLogin</string>
<string>mqqopensdkapiV2</string>
<string>mqqopensdkapiV4</string>
<string>mqzone</string>
<string>mqzoneopensdk</string>
<string>mqzoneopensdkapi</string>
<string>mqzoneopensdkapi19</string>
<string>mqzoneopensdkapiV2</string>
<string>mqqapiwallet</string>
<string>mqqopensdkfriend</string>
<string>mqqopensdkavatar</string>
<string>mqqopensdkminiapp</string>
<string>mqqopensdkdataline</string>
<string>mqqgamebindinggroup</string>
<string>mqqopensdkgrouptribeshare</string>
<string>tencentapi.qq.reqContent</string>
<string>tencentapi.qzone.reqContent</string>
<string>mqqthirdappgroup</string>
<string>mqqopensdklaunchminiapp</string>
<string>mqqopensdkproxylogin</string>
<string>mqqopensdknopasteboard</string>
</array>步骤四:配置 URL Type(主 Target)
- 选中 Unity-iPhone target(主 Target) → Info → URL Types
- 点击 + 按钮,新增一条 URL Type:
- Identifier:填写唯一标识(例如:com.company.mygame)
- URL Schemes:填写应用的回调 Scheme(QQ开放平台申请的key:(类似tencent00000000000))
微信登录/微信分享 配置
步骤一:导入 w微信登录/微信分享 文件(ios-platform-wechatlogin / ios-platform-wechatshare)
- 将
ios-platform-wechatlogin / ios-platform-wechatshare文件夹拖拽到 Xcode 工程中 - 勾选 Copy items if needed,确保文件同时添加到:
- UnityFramework target
- Unity-iPhone target(主 Target)
注意
⚠️ ⚠️ ⚠️ 如果同时接入微信登录模块、微信分享模块,对应的模块文件夹libs只需引入一个其中一个即可
步骤二:在 Info.plist 设置白名单
- 打开 Xcode 工程,选择 Unity-iPhone target(主 Target)
- 设置LSApplicationQueriesSchemes 添加相应的白名单
<key>LSApplicationQueriesSchemes</key>
<array>
<string>wechat</string>
<string>weixinULAPI</string>
<string>weixin</string>
</array>步骤三:配置 URL Type(主 Target)
- 选中 Unity-iPhone target(主 Target) → Info → URL Types
- 点击 + 按钮,新增一条 URL Type:
- Identifier:填写唯一标识(例如:com.company.mygame)
- URL Schemes:填写应用的回调 Scheme(微信开放平台申请的key:(类似wx0000000000000))
