跳到主要内容

iOS

Unity 2021.3.33f1 ~ Unity 2022
版本需求

由于 App Store Connect 的 上架要求 规定使用 Xcode 15,iOS 最低支持版本为 iOS 12。

如果接入 FacebookFirebaseDMMGoogleWeChatAdjustAppsFlyerQQ,iOS SDK 需要升级到版本 12 或以上。

如果接入 LINE,iOS SDK 需要升级到版本 13 或以上。

前提条件

警告

游戏使用的每个 SDK 插件的版本(包括游戏启动器使用的版本)必须保持一致。如果游戏需要同时访问多个版本的 Player Network SDK,或者只有一个组件需要升级,请联系 Player Network 助手。

  1. 在 Player Network 获取登录账号
  2. 创建新项目
  3. [可选] 邀请用户加入业务
  4. 下载 SDK

步骤1:安装 SDK

1. 将 Player Network SDK 添加到您的项目

  1. 解压 SDK 软件包。
  2. INTLSDK 文件夹复制到项目的 Assets 文件夹中。
  3. 将 Player Network SDK 的 Plugins 文件夹合并到项目的 Plugins 文件夹中。
Player Network SDK package
├─INTLSDK       // Player Network SDK CS scripts which provide APIs and callbacks
│ ├─Editor // Player Network SDK Editor scripts which include Player Network SDK XUPorter
│ └─Scripts // Player Network SDK scripts which include INTLCore and other plugin scripts
├─LevelInfinite // LI PASS APIs
├─Plugins // Player Network SDK plugins for various platforms
│ ├─Android
│ ├─iOS
│ ├─MacOS
│ └─Windows~
├─Symbols // Player Network SDK symbol table *.so files
└─UnionAdapter // UnionAdpater APIs which adapts to both MSDK and Player Network SDK
INTLSDK/Scripts/INTLCore
├─INTLSDK
│ ├─Editor
│ └─Scripts
│ ├─INTLConfig
| └─INTLCore
| ├─Editor // INTLCore PostProcess.cs / PreProcess.cs files for different platforms
| | ├─INTLCoreAndroidPostProcess.cs
| | ├─INTLCoreiOSPostProcess.cs
| | ├─INTLCoreMacOSPostProcess.cs
| | ├─INTLCoreWindowsPostProcess.cs
| | └─INTLCoreWindowsPreProcess.cs
| └─Scripts // INTLCore scripts
| ├─INTLAPI.cs // Player Network SDK APIs
| ├─INTLConfig.cs // Player Network SDK data structures
| ├─INTLDefine.cs // Player Network SDK static strings
| ├─INTLErrorCode.cs // Player Network SDK error codes
| ├─Modules
| └─Utils
├─LevelInfinite
├─Plugins
├─Symbols
└─UnionAdapter
INTLSDK/Script/INTLConfig
├─INTLSDK
│ ├─Editor
│ └─Scripts
│ ├─INTLConfig
| | └─Editor // Player Network SDK configuration files, PostProcess.cs files, and encryption tools
| | ├─Encrypt
| | | ├─decrypt // Player Network SDK decryption tool for INTLConfig.ini
| | | ├─Decrypt.exe // Player Network SDK decryption tool for INTLConfig.ini
| | | ├─encrypt // Player Network SDK encryption tool for INTLConfig.ini
| | | ├─Encrypt.exe // Player Network SDK encryption tool for INTLConfig.ini
| | | ├─EncryptConfig.ini // Player Network SDK file to enable or disable INTLConfig.ini encryption
| | | ├─INTLConfigINI.cs
| | | ├─INTLConfigINIEditor.cs
| | | └─INTLEditorTools.cs
| | ├─INTLConfigAndroidPostProcess.cs
| | ├─INTLConfigiOSPostProcess.cs
| | ├─INTLConfigMacOSPostProcess.cs
| | ├─INTLConfigSwitchPreProcess.cs
| | ├─INTLConfigWind...sPostProcess.cs
| | └─Resources // Player Network SDK configurations
| | ├─APASConfig.ini // APAS device level configuration file
| | └─INTLConfig.ini // Player Network SDK main configuration file
| └─INTLCore
├─LevelInfinite
└─Plugins

2. 加载所需的权限和插件

XUPorter 在导出 Xcode 项目时自动添加依赖库和源代码文件,以方便打包。

Player Network SDK 优化了 XUPorter 的原始版本,从而避免了 XUPorter 解决方案与 Player Network SDK 解决方案之间的冲突。

  • 添加了 INTLSDKEditor 命名空间,以避免其他组件也使用 XUPorter 时发生命名冲突。
  • 更改了 MODS 文件的搜索路径。这样,Player Network SDK XUPorter 只搜索 INTLSDK/ 目录中的 MODS 文件,而不是重复添加其他组件的配置。
  • 生命周期被添加到 UnityAppController.mm 中。

Player Network SDK XUPorter 解决方案

INTL{Plugin}Kit.projmods 是 Player Network SDK 的 Info.plist 配置文件。Player Network SDK 会读取 INTLSDK/Editor/XUPorter/Mods 目录中的 INTL{Plugin}Kit.projmods 文件,并在 Xcode 中添加导入的 bundle、框架和其他依赖包。

由于每个 INTL{Plugin}Kit.projmods 文件都对应一个插件,游戏需要根据游戏对插件的要求更新每个文件,并用 INTLConfig.ini 配置文件中的值替换 {placeholder} 文本。

例如,更新 INTLFacebookKit.projmods 以获得所需的配置。

INTLFacebookKit.projmods
"Info.plist":{
"LSApplicationQueriesSchemes":
[
"fb",
"fb-messenger-api",
"fbshareextension",
"fbauth2",
"fb-messenger-share-api",
"fbapi"
],
"NSAppTransportSecurity":
{
"NSAllowsArbitraryLoads":true
},
"FacebookClientToken":"{INTL_FACEBOOK_CLIENT_TOKEN}",
"CFBundleURLTypes" :
[
{
"CFBundleTypeRole":"Editor",
"CFBundleURLName":"Facebook",
"CFBundleURLSchemes":["fb{INTL_FACEBOOK_APP_ID}"]
}
]
}

iOS 使用说明

警告

集成时,用户可根据自己的需要修改内容,并 与法律团队确认内容是否合规。如果没有修改,请用游戏名称替换 INTLSample

根据 iOS 权限要求,在申请敏感权限时,当系统弹出提示用户填写信息时,填写 用途描述

  1. Assets/INTLSDK/Editor/XUPorter/Mods~/INTLCoreKit.projmods 中,以下权限已升级:

    "NSPhotoLibraryUsageDescription"
    "NSCameraUsageDescription"
    "NSLocationWhenInUseUsageDescription"
    "NSPhotoLibraryAddUsageDescription"
    "NSMicrophoneUsageDescription"

    集成时,用户可以根据需要修改内容。

  2. Assets/INTLSDK/Editor/XUPorter/Mods~/INTLADTrackingKit.projmods 中,以下权限已升级:

    "NSUserTrackingUsageDescription"

3. Swift SDK 兼容设置

版本要求:iOS SDK 9 及更高版本

如果模块使用 Swift SDK,将出现 iOS Swift 和 Objective-C 混合编辑问题。按照以下步骤操作创建桥接层,使两种编程语言的类名保持一致:

  1. 创建新文件并选择 SWIFT 文件类型。

    图片:Swift File type

  2. 根据需要指定文件名,并确保扩展名为 .swift,然后点击 Create

    图片:Create Swift file

  3. 点击 Create Bridging Header

    注意

    确保选择 Create Bridging Header。否则,Xcode 将不会创建桥接层文件。

    Images: Create bridge document

  4. 确保在 Xcode 项目中创建了两个文件(一个是步骤2 中创建的 .swift 文件,另一个是自动创建的 project_name-Bridging-Header.h 文件)。

    注意

    文件内容保持不变。

    Images: Confirm document

4. 合并隐私清单

版本要求:Player Network SDK V1.22 及更高版本

从 2024 年春季开始,对于需更新或上传至 Apple App Store Connect 的应用,开发者需明确 注明使用原因,以展示该应用如何使用 required reason API(需提交使用原因的 API)。更多信息,请参见 即将发布的第三方 SDK 要求

对于受影响的 Player Network SDK 插件,需要手动合并的包括 INTLFoundationINTLCoreINTLGarena,其中 INTLGarena 只在项目确认接入 Garena 时需配置。
另外,INTLLine 已在 Player Network SDK 自动整合而无需额外操作。

由于其他第三方 SDK 的隐私清单尚未公布,目前 Player Network SDK 隐私清单中不包含对应的内容。要查看尚未发布插件的列表,请参见 iOS 17 隐私清单

步骤

  1. 在 Player Network SDK 产物目录内找到所需插件的隐私清单 PrivacyInfo.xcprivacy

    插件路径
    INTLFoundation/Plugins/iOS/INTLSDK/INTLFoundation/INTLFoundation.framework/PrivacyInfo.xcprivacy
    INTLCore/Plugins/iOS/INTLSDK/INTLCore/INTLCore.framework/PrivacyInfo.xcprivacy
    INTLGarena/Plugins/iOS/INTLSDK/INTLGarena/INTLGarena.framework/PrivacyInfo.xcprivacy
  2. 将 Player Network SDK 内的 PrivacyInfo.xcprivacy 中的4个节点,用于与游戏项目内 PrivacyInfo.xcprivacy 中对应的内容进行比较,并根据以下条件合并。

    1. Privacy Nutrition Label Types (NSPrivacyCollectedDataTypes) 为使用数据的类型描述节点:
      比较各个 itemCollected Data Type (NSPrivacyCollectedDataType),有不同值则添加至游戏项目文件。
      若存在相同值则比较 Collection Purposes (NSPrivacyCollectedDataTypePurposes),有不同值则添加至游戏项目文件。

    2. Privacy Tracking Domains (NSPrivacyTrackingDomains) 为域名追踪列表节点:
      比较对应节点,有不同值则添加至游戏项目文件。

    3. Privacy Tracking Enabled (NSPrivacyTracking) 描述是否开启 App Tracking Transparency 功能:
      比较对应节点,Player Network SDK 隐私清单的值为 YES 时修改游戏项目文件。

    4. Privacy Accessed API Types (NSPrivacyAccessedAPITypes) 为使用接口的类型描述节点:
      比较各个 itemPrivacy Accessed API Type (NSPrivacyAccessedAPIType),有不同值则添加至游戏项目文件。
      若存在相同值则比较 Privacy Accessed API Reasons (NSPrivacyAccessedAPITypeReasons),有不同值则添加至游戏项目文件。

  3. 通过 Xcode 15 生成隐私报告来验证是否符合预期。

5. Player Network SDK 配置

注意

手动修改 INTLConfig.ini 配置时,请联系 Player Network 助手确认内容变更是否符合预期,详见 SDK Config Information

请按照 INTLConfig.ini 的说明进行相应配置。

6. 初始化 Player Network SDK

在集成第三方渠道之前,必须先初始化 Player Network SDK。更多详情,请参见 初始化 SDK

INTLAPI.IsDebug = true; // Set the SDK to the Debug mode to print out logs. The default value is false.
INTLAPI.InitSDK();

步骤2:验证 Player Network SDK 接入成功

  1. 修改 INTLConfig.ini 文件中 INTL Log 节点下的配置。
[INTL Log]
LOG_LEVEL = 1
LOG_ENCRYPT_ENABLE = 0
LOG_COMPRESS_ENABLE = 0
LOG_CONSOLE_OUTPUT_ENABLE = 1
LOG_FILE_OUTPUT_ENABLE = 1
  1. 运行程序,当日志中显示 Init INTL SDK success. 时,表示接入成功。

推荐使用

您已完成 Player Network SDK 的接入,并可开始为您的项目编写程序。

我们建议使用以下 Player Network 的服务:

  • 參考 登录鉴权 教程,为您的项目添加第三方渠道登录。
  • 查看有关 社交 服务的更多信息,了解如何促进玩家之间的互动。
  • 有关配置公告和推送通知的详细步骤,请参见 玩家参与
  • 查看 数据洞察 服务的相关文档,了解如何收集和上报数据。
  • 通过 Player Network 提供的 Deep Link、WebView 等 实用工具,增强 Player Network 服务体验。
  • 根据您的发行国家/地区,为您的项目制定 合规保障 方案。

除此之外,您也可以选择接入 LEVEL INFINITE PASS,接入后便可使用上述所有功能。
一般用户可通过简单快捷的流程实现适用于大部分游戏的标准解决方案,而希望定制项目的各种细节的用户也可省去不必要的集成动作,直接开始配置。

更多详情,请联系 Player Network 助手进行咨询。