添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
跳转到主要内容

客户端

本文档描述如何在游戏端提供聊天室功能。 如果已接入了 INTLSDK 提供的其他功能,请参见 步骤5

步骤1:准备接入 INTLSDK

Player Network 注册游戏。注册通过后,按照步骤准备接入 INTLSDK。目前使用 Game Onespace 的业务请继续使用 Game Onespace。

获取密匙

注册被批准后,游戏将生成以下信息:

  • GAME_ID :Player Network 游戏的唯一标识。
  • SDK_KEY SERVER_KEY ,和 WEB_KEY :用于创建签名的密匙。

只有 业务管理员 有权限获取这些密匙信息。

确认您是否是业务管理员
  1. 进入 Player Network

  2. 业务列表 业务名称 页面,查看您是否具有 业务管理员 权限。

    图片:业务管理员用户信息卡

业务管理员获取密匙
  1. 进入 Player Network 业务管理页面。

  2. 点击对应游戏的 查看

    图片:游戏详情项

  3. 业务详情 页面,查看游戏的密匙信息。

    图片:游戏管理项

普通用户获取密匙信息

普通用户请联系业务管理员请求密钥信息。

下载 INTLSDK
警告

游戏使用的各插件版本必须一致,包括登录器使用的 SDK 版本也必须与游戏一致。如果业务需要同时接入不同版本的 SDK,或者只升级一个插件,需要联系 INTL 助手。

一旦通过权限审批,根据下列步骤下载 INTLSDK。

  1. 进入 Player Network

  2. 在 Player Network 左侧导航栏,点击 INTLSDK 下载 进入下载页面。
    最新版 是 INTLSDK 最新发布的版本; 稳定版 是上一个发布的版本。 图片:SDK 下载页面

  3. 选择操作系统平台。

    图片:选择平台

  4. 选择所需的功能模块。

    图片:选择功能模块

  5. 点击 下载

  6. 选择引擎 弹窗中,选择需要的游戏引擎版本。

    图片:选择游戏引擎

  7. 点击 下载 下载业务自主选择的操作系统,功能模块,和游戏引擎组合的 SDK。

步骤2:接入 INTLSDK

Android
1. 添加 INTLSDK 配置
  1. 解压 SDK 包。
  2. INTLSDK 文件夹拷贝到工程的 Assets 目录下。
  3. 将 INTLSDK 的 插件 文件夹合并到 插件 工程中的文件夹。
INTLSDK 包

图片:Android 插件

文件夹/文件 说明
INTLSDK/ INTLSDK 的 CS 脚本,提供可调用的接口方法和回调方法
INTLSDK/Editor/ INTLSDK Editor 脚本,包含 INTLSDK XUPorter 方案
INTLSDK/Scripts/ INTLSDK 脚本,包括 INTLCore 和其他插件的脚本
LevelInfinite/ LI PASS 接口
Plugins/ INTLSDK 平台插件目录
Symbols/ INTLSDK 符号表 *.so 文件
UnionAdapter/ 用于适配 MSDK 和 INTLSDK 的 UnionAdpater 接口
INTLSDK/Scripts/INTLCore

图片:Android 插件

文件夹/文件 说明
INTLSDK/Scripts/INTLCore/Editor/ INTLCore 插件 PostProcess.cs 文件
INTLSDK/Scripts/INTLCore/Script/ INTLCore 插件脚本文件
INTLSDK/Scripts/INTLCore/Script/INTLAPI.cs INTLSDK 所有 API 接口
INTLSDK/Scripts/INTLCore/Script/INTLDefine.cs INTLSDK 定义的数据结构
INTLSDK/Scripts/INTLCore/Script/INTLConfig.cs INTLSDK 静态字符串集合
INTLSDK/Scripts/INTLCore/Script/INTLErrorCode.cs INTLSDK 错误码集合
INTLSDK/Script/INTLConfig

图片:Android 插件

文件夹/文件 说明
INTLSDK/Scripts/INTLConfig/Editor/ INTLSDK 配置文件,PostProcess.cs 文件,及加密工具
INTLSDK/Scripts/INTLConfig/Editor/Encrypt/encrypt INTLSDK 提供的 INTLConf.ini 加密工具
INTLSDK/Scripts/INTLConfig/Editor/Encrypt/Encrypt.exe INTLSDK 提供的 INTLConf.ini 加密工具
INTLSDK/Scripts/INTLConfig/Editor/Encrypt/EncryptConfig.ini 设置是否开启加密功能的配置文件
INTLSDK/Scripts/INTLConfig/Editor/Resources/ INTLSDK 插件配置文件目录
INTLSDK/Scripts/INTLConfig/Editor/Resources/INTLConfig.ini INTLSDK 主要配置文件
INTLSDK/Scripts/INTLConfig/Editor/Resources/APASConfig.ini APAS 机型分档配置文件
2. 加载需要的权限和插件

将 INTLSDK 用于加载权限,库,和插件的代码添加到游戏自定义的启动 activity 中,即 Android 游戏请求权限和加载插件的 activity。

  1. 添加以下加载库的代码:

    MainActivity.java
    static
    {
    try {
    System.loadLibrary("INTLFoundation");
    System.loadLibrary("INTLCore");
    System.loadLibrary("INTLUnityAdapter");
    }
    catch (Exception e)
    {
    e.printStackTrace();
    }
    }
  2. 添加以下注册生命周期的代码:

    MainActivity.java
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // request permission
    RequestDynamicPermissions();
    // add this line
    INTLSDK.initialize(MainActivity.this);
    }

    @Override
    public void onNewIntent(Intent intent) {

    super.onNewIntent(intent);
    // add this line
    INTLSDK.onNewIntent(intent);
    }

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {

    super.onActivityResult(requestCode, resultCode, data);
    // add this line
    INTLSDK.onActivityResult(requestCode, resultCode, data);
    }

    @Override
    public void onRequestPermissionsResult(int arg0, String[] arg1, int[] arg2)
    {
    super.onRequestPermissionsResult(arg0, arg1, arg2);
    // add this line
    INTLSDK.onRequestPermissionsResult(arg0, arg1, arg2);
    }
  3. 动态加载权限。
    游戏可以使用以下两种方法之一来动态加载 Android 权限。

通过代码获取动态权限

添加动态加载权限代码。

private final int PermissionRequestCode = 100;
private void RequestPermission(Activity activity, List<String> permissionList, int requestCode)
{
if(null==activity || null==permissionList){
return;
}
List<String> permissionNeeded = new ArrayList<String>();

for(int i=0; i<permissionList.size(); i++){

String permission = permissionList.get(i);

if(null!=permission && PackageManager.PERMISSION_GRANTED != ContextCompat.checkSelfPermission(activity.getApplicationContext(), permission)){
permissionNeeded.add(permission);
}
}
if(permissionNeeded.size()>0){
ActivityCompat.requestPermissions(activity, permissionNeeded.toArray(new String[permissionNeeded.size()]), requestCode);
}
}

private void RequestDynamicPermissions()
{
List<String> permissions = new ArrayList<String>();
//INTLCore

permissions.add(Manifest.permission.INTERNET);

this.RequestPermission(this, permissions, PermissionRequestCode);
}
通过配置添加动态权限并自定义对话框的风格和语言
  1. AndroidManifest 中配置启动界面。其中 {YOUR_START_ACTIVITY} 是游戏配置的完成权限申请后的跳转页面。

    <activity android:name="com.intlgame.tools.permission.PermissionGrantActivity">    
    <meta-data android:name="INTLSDK_GAME_ACTIVITY_CLASSNAME" android:value="{YOUR_START_ACTIVITY}"/>
    <meta-data android:name="INTLSDK_DENY_SETTINGS_TYPE" android:value="setting" />
    <intent-filter>
    <action android:name="android.intent.action.MAIN"/>
    <category android:name="android.intent.category.LAUNCHER"/>
    </intent-filter>
    </activity>
  2. res/strings.xml 中添加以下配置,完成权限提示。

警告

如果不配置以下内容,会直接进行授权动作。直接授权有不符合 Google Play 的规范风险,可能会导致审核不通过。

```xml
<string name="intl_permission_confirm">确认</string>
<string name="intl_permission_cancel">退出</string>
<string name="intl_permission_settings">设置</string>
<string name="intl_always_denied_warning">请到设置界面打开权限,否则无法正常进入游戏</string>
<string name="intl_permission_grant_warning"> 请求xxx 权限的原因:1、游戏中存在保存视频等,需要您授予相机权限;2、游戏中存在文件的读写操作需要您授予读写权限</string>

<string name="intl_permission_title">INTL</string>
<! - 配置您想要应用的权限 (可选) -->
<string-array name="intl_permission_granted_list">
<item>android.permission.CAMERA</item>
<item>android.permission.INTNET</item>
<item>android.permission.WRITE_EXTERNAL_STORAGE</item>
<item>android.permission.READ_EXTERNAL_STORAGE</item>
</string-array>
```
  1. (可选) 在 res/styles.xml 中添加以下内容,进行对话框样式配置。更多的对话框样式,请参见 Android 官方文档

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
    <style name="INTLPermissionTheme" parent="@android:style/Theme.DeviceDefault.Light.Dialog">
    <!-- 这里设置背景 -->
    <item name="android:windowBackground">@android:color/white</item>
    <item name="android:windowNoTitle">false</item>
    <!-- 这里是修改顶部标题背景颜色,具体颜色自己定,可以是图片 -->
    <item name="android:topDark">@android:color/holo_purple</item>
    <!-- 这里是修改内容区域背景颜色 -->
    <item name="android:centerDark">@android:color/background_light</item>
    <item name="android:windowIsTranslucent">false</item>
    </style>
    </resources>
  1. 适配异形屏

    从 Android P 开始,Android 推出标准 API 支持异形屏适配,但是对应 Android O 的设备,各供应商有不同的实现逻辑。INTLSDK 提供统一的 C++ 接口和 Java 接口,目前支持 Xiaomi,Huawei,Samsung,VIVO,OPPO 机型。

    INTLSDK 封装了一个 INTLUnityAdapter 模块用于 Unity 游戏允许游戏使用 C# 进行不受管理的调用到 C++ API。

    Unreal Engine 游戏可以通过 UPL 调用 Java 接口。

    更多信息,请参见 异步异形屏信息读取接口

    工程配置

    一般来说,移动设备的全屏宽高比大于2.1。 为避免黑色边界,必须将 android.max_aspect 修改为大于 2.1。

    对于 Android Oreo 系统的华为手机和小米手机,需要额外配置 AndroidManifest

    <!--持全面屏宽高比:2.4适应未来21:9超宽屏-->
    <meta-data android:name="android.max_aspect" android:value="2.4" />

    <!--小米O版本定义:是否使用耳朵区域(危险区)-->
    <!--value取值:none: 横竖屏都不绘制耳朵区,portrait:竖屏绘制到耳朵区,landscape:横屏绘制到耳朵区,portrait|landscape:横竖屏都绘制到耳朵区-->
    <meta-data android:name="notch.config" android:value="portrait|landscape"/>

    <!--华为O版本定义:应用页面使用刘海区域-->
    <meta-data android:name="android.notch_support" android:value="true"/>

    对于使用 Android 接口获取异形屏安全区域信息的业务,请添加以下配置。

    MainActivity 中增加以下内容,并且在 onCreate 中增加 setFullScreen 调用。

    MainActivity.java
    private void setFullScreen()
    {
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
    WindowManager.LayoutParams.FLAG_FULLSCREEN);// Set full screen

    int systemUiVisibility = 0;
    if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.HONEYCOMB) {
    systemUiVisibility = this.getWindow().getDecorView().getSystemUiVisibility();
    int flags = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
    | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
    | View.SYSTEM_UI_FLAG_FULLSCREEN;
    systemUiVisibility |= flags;
    getWindow().getDecorView().setSystemUiVisibility(systemUiVisibility);
    }

    // P version is allowed to use the notch area
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
    WindowManager.LayoutParams lp = this.getWindow().getAttributes();
    lp.layoutInDisplayCutoutMode = WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES;
    this.getWindow().setAttributes(lp);
    }
    }

    在 PlayerSetting 勾选上 Render outside safe area

    图片:Android Unity 设置

3. 生成 JAR 包

INTLSDK 使用 Gradle 构建生成 JAR 包。Gradle 配置文件包含第三方 SDK 版本号,以及 INTLSDK 和第三方渠道所需的依赖项。游戏需要基于所需的插件添加必要的依赖项。

mainTemplate.gradle and INTLCore.mainTemplate.gradle 文件是 INTLSDK 的 Gradle 配置文件。请根据游戏的需求更新 Gradle 配置。

Unity 2018
文件 路径
mainTemplate.gradle Plugins/Android
INTLCore.mainTemplate.gradle Plugins/Android/Gradle

至少需要以下两处更新:

  1. mainTemplate.gradle 从游戏合并到 INTLSDK 的 mainTemplate.gradle 中,并保留由 INTLSDK 标记的内容。

  2. INTLCore.mainTemplate.gradle 中的 {占位符} 文本替换为 INTLConfig.ini 配置文件中的值。

Unity 2019 及以上
文件 路径
mainTemplate.gradle Plugins/Android
baseProjectTemplate.gradle Plugins/Android
launcherTemplate.gradle Plugins/Android
INTLCore.mainTemplate.gradle Plugins/Android/Gradle
INTLCore.baseProjectTemplate.gradle Plugins/Android/Gradle
INTLCore.launcherTemplate.gradle Plugins/Android/Gradle

至少需要以下两处更新:

  1. mainTemplate.gradle baseProjectTemplate.gradle ,和 launcherTemplate.gradle 从游戏合并到 INTLSDK 对应的配置文件中,并保留 INTLSDK 标记的内容。

  2. INTLCore.launcherTemplate.gradle 中的 {占位符} 文本替换为 INTLConfig.ini 配置文件中的值。

iOS
1. 添加 INTLSDK 配置
  1. 解压 SDK 包。
  2. INTLSDK 文件夹拷贝到工程的 Assets 目录下。
  3. 将 INTLSDK 的 插件 文件夹合并到 插件 工程中的文件夹。
INTLSDK 包

图片:Android 插件

文件夹/文件 说明
INTLSDK/ INTLSDK 的 CS 脚本,提供可调用的接口方法和回调方法
INTLSDK/Editor/ INTLSDK Editor 脚本,包含 INTLSDK XUPorter 方案
INTLSDK/Scripts/ INTLSDK 脚本,包括 INTLCore 和其他插件的脚本
LevelInfinite/ LI PASS 接口
Plugins/ INTLSDK 平台插件目录
Symbols/ INTLSDK 符号表 *.so 文件
UnionAdapter/ 用于适配 MSDK 和 INTLSDK 的 UnionAdpater 接口
INTLSDK/Scripts/INTLCore

图片:Android 插件

文件夹/文件 说明
INTLSDK/Scripts/INTLCore/Editor/ INTLCore 插件 PostProcess.cs 文件
INTLSDK/Scripts/INTLCore/Script/ INTLCore 插件脚本文件
INTLSDK/Scripts/INTLCore/Script/INTLAPI.cs INTLSDK 所有 API 接口
INTLSDK/Scripts/INTLCore/Script/INTLDefine.cs INTLSDK 定义的数据结构
INTLSDK/Scripts/INTLCore/Script/INTLConfig.cs INTLSDK 静态字符串集合
INTLSDK/Scripts/INTLCore/Script/INTLErrorCode.cs INTLSDK 错误码集合
INTLSDK/Script/INTLConfig

图片:Android 插件

文件夹/文件 说明
INTLSDK/Scripts/INTLConfig/Editor/ INTLSDK 配置文件,PostProcess.cs 文件,及加密工具
INTLSDK/Scripts/INTLConfig/Editor/Encrypt/encrypt INTLSDK 提供的 INTLConf.ini 加密工具
INTLSDK/Scripts/INTLConfig/Editor/Encrypt/Encrypt.exe INTLSDK 提供的 INTLConf.ini 加密工具
INTLSDK/Scripts/INTLConfig/Editor/Encrypt/EncryptConfig.ini 设置是否开启加密功能的配置文件
INTLSDK/Scripts/INTLConfig/Editor/Resources/ INTLSDK 插件配置文件目录
INTLSDK/Scripts/INTLConfig/Editor/Resources/INTLConfig.ini INTLSDK 主要配置文件
INTLSDK/Scripts/INTLConfig/Editor/Resources/APASConfig.ini APAS 机型分档配置文件
2. 加载需要的权限和插件

XUPorter 从 Unity 导出 Xcode 的时候,可以自动化配置 Xcode 工程,添加依赖库和源码文件,便于打包操作。

INTL 在原来的 XUPorter 基础上做了优化。如果业务也使用了 XUPorter 方案,INTL 的方案和业务的方案不会冲突。

  • 添加了 INTLSDKEditor 命名空间,避免其他组件也使用 XUPorter 时命名重复。
  • 更改了搜索 mods 文件的路径,让 INTLSDK XUPorter 只搜索 Asset/INTLSDK/ 目录下的 mods 文件,不会重复添加其他组件的配置。
  • UnityAppController.mm 中增加生命周期。

INTL XUPorter 方案

INTL{Plugin}Kit.projmods 是 INTLSDK 的 Info.plist 配置文件。INTLSDK 通过读取 INTLSDK/Editor/XUPorter/Mods 目录中的 INTL{Plugin}Kit.projmods 文件,在 Xcode 中增加所导入的 bundle,framework 等依赖包。

每个插件都有一个对应的 INTL{Plugin}Kit.projmods 文件,游戏要根据所需的插件配置对应的文件,并以 INTLConfig.ini 配置文件中的值替换 {占位符} 文本。

例如,根据需求更新 INTLFacebookKit.projmods

iOS 使用说明

根据 iOS 权限要求,在申请敏感权限时,填写 使用说明 ,系统会弹出提示用户填写此信息。

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

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

    在接入时,用户可以根据需要修改内容。

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

    "NSUserTrackingUsageDescription"
    警告

    接入时,用户可以根据需要修改内容, 并与法律团队确认内容是否合规 。如果无修改, 将 INTLSample 替换为游戏名称。

:::

3. 适配 Swift SDK
警告
  • 如果接入 INTL Facebook ,iOS SDK 需要升级到版本 10 以上。

  • 如果接入 INTL LINE ,iOS SDK 需要升级到版本 10 以上。

  • 如果接入 INTL DMM ,iOS SDK 需要升级到版本 11 以上。

  • 如果接入 INTL Discord ,iOS SDK 需要升级到版本 11 以上。

  • 如果接入 INTL DMM ,iOS SDK 需要升级到版本 11 以上。

版本要求:IOS SDK 9 及之后的版本

如果模块使用到的是 Swift 版本的 SDK,这里会涉及到 iOS 的 Swift 和 Objective-C 的混编问题。 Xcode 为了兼容混编需要有一个 bridge 的桥接层对齐两种语言的类名等,需要如下操作。

  1. 新建文件,选择 Swift File 类型。

    图片:Swift File 类型

  2. 按照需求命名并确保文件后缀是 .swift,然后点击 Create

    图片:创建 Swift 文件

  3. 点击 Create Bridging Header

注意

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

图片:创建桥接文档

  1. 确保 Xcode 工程中创建了两个文件(一份为第二步创建的 .swift 文件,另一份为自动创建的 project_name-Bridging-Header.h 文件)。
说明

文件内容无需更改。

图片:确定文档

不适用。

Windows
警告

Windows 平台的游戏安装目录不应包含分号 (;) ,否则游戏将无法运行。

获取 Windows 数字签名 ,请联系安全团队的 [tingdai]

系统需求
警告

由于Windows平台的特性,游戏的安装目录不能包含有英文字符分号(;),否则会导致游戏无法找到必要的dll,导致游戏运行失败。

1. 添加 INTLSDK 配置
  1. 解压 SDK 包。
  2. INTLSDK 文件夹拷贝到工程的 Assets 目录下。
  3. 将 INTLSDK 的 插件 文件夹合并到 插件 工程中的文件夹。
INTLSDK 包

图片:Android 插件

文件夹/文件 说明
INTLSDK/ INTLSDK 的 CS 脚本,提供可调用的接口方法和回调方法
INTLSDK/Editor/ INTLSDK Editor 脚本,包含 INTLSDK XUPorter 方案
INTLSDK/Scripts/ INTLSDK 脚本,包括 INTLCore 和其他插件的脚本
LevelInfinite/ LI PASS 接口
Plugins/ INTLSDK 平台插件目录
Symbols/ INTLSDK 符号表 *.so 文件
UnionAdapter/ 用于适配 MSDK 和 INTLSDK 的 UnionAdpater 接口
INTLSDK/Scripts/INTLCore

图片:Android 插件

文件夹/文件 说明
INTLSDK/Scripts/INTLCore/Editor/ INTLCore 插件 PostProcess.cs 文件
INTLSDK/Scripts/INTLCore/Script/ INTLCore 插件脚本文件
INTLSDK/Scripts/INTLCore/Script/INTLAPI.cs INTLSDK 所有 API 接口
INTLSDK/Scripts/INTLCore/Script/INTLDefine.cs INTLSDK 定义的数据结构
INTLSDK/Scripts/INTLCore/Script/INTLConfig.cs INTLSDK 静态字符串集合
INTLSDK/Scripts/INTLCore/Script/INTLErrorCode.cs INTLSDK 错误码集合
INTLSDK/Script/INTLConfig

图片:Android 插件

文件夹/文件 说明
INTLSDK/Scripts/INTLConfig/Editor/ INTLSDK 配置文件,PostProcess.cs 文件,及加密工具
INTLSDK/Scripts/INTLConfig/Editor/Encrypt/encrypt INTLSDK 提供的 INTLConf.ini 加密工具
INTLSDK/Scripts/INTLConfig/Editor/Encrypt/Encrypt.exe INTLSDK 提供的 INTLConf.ini 加密工具
INTLSDK/Scripts/INTLConfig/Editor/Encrypt/EncryptConfig.ini 设置是否开启加密功能的配置文件
INTLSDK/Scripts/INTLConfig/Editor/Resources/ INTLSDK 插件配置文件目录
INTLSDK/Scripts/INTLConfig/Editor/Resources/INTLConfig.ini INTLSDK 主要配置文件
INTLSDK/Scripts/INTLConfig/Editor/Resources/APASConfig.ini APAS 机型分档配置文件
2. 更改缓存目录

默认 INTLSDK PC 用户和应用程序生成的缓存将在:

  • C:/ProgramData/INTL
  • C:/Users/{name}/AppData/Local/INTL/local/INTL

调用 InitSDK 之前,游戏开发者必须设置缓存目录。更多信息,请参见 更改用户数据文件目录 API

// 例如,game ID 为 11,游戏应用名称为 INTLSDKDemo。
// 游戏调用以下接口:
INTLAPI.SetSDKDefaultUserStorage("D:\\game_data\\")
// INTLSDK 数据缓存目录为 D:\game_data\11\INTLSDKDemo\。
3. 加密配置文件
注意

不要手动删除 INTLConfig.ini ,打包脚本时 INTLSDK 将只拷贝 INTLConfig.ini.new 文件。

说明

版本需求:INTLSDK V1.15

注意

从 INTLSDK 1.17 开始,默认启用加密。

  1. 打开 EncryptConfig.ini 文件。 图片:Unity EncryptConfig 路径

  2. 检查 ENABLE 的对应值。
    默认为 0,说明此功能是关闭的。 图片:EncryptConfig.ini 关

  3. 开启加密,则将 ENABLE 的对应值修改为 1,即 ENABLE = 1 图片:EncryptConfig.ini 开

  4. 在 Unity 引擎中选择 INTL > INTLConfig.ini Settings 图片:Unity EncryptConfig 插件成功

  5. 修改 INTLConfig.ini 并保存。
    如果成功开启加密功能,则修改完成同时会对 INTLConfig.ini 加密。

  6. INTLConfig.ini 所在的文件夹中检查 INTLConfig.ini.new 文件的大小。
    如果文件内容不是 0KB,则加密成功。 图片:Unity EncryptConfig 加密成功

4. Windows 特定接口
API 函数定义
SetSDKDefaultUserStorage 更改 INTLSDK 用户数据文件夹的目录。
notifyUnityQuit 在应用的生命周期结束时,建议关闭 SDK 来释放 INTLSDK 的全局状态。

步骤3:完成 INTLSDK 的基础配置

INTLConfig.ini 是 INTLSDK 的配置文件,位于 INTLSDK/Source/INTLConfig/Configs/Resources 。 此配置文件包含了所有业务需关注的下载 SDK 时选择的操作系统,功能模块,和游戏引擎组合所需的配置。完整的配置列表,请参见 SDK 配置

在配置功能模块和渠道之前,先配置基本的SDK 环境和日志。

说明
  • 使用 key=value 的方式,key 采用全大写。
  • 有多个值的,使用英文逗号 (,) 隔开。
  • 开关相关等字段需要加上后缀 "_ENABLE",true 为 1,false 为 0。
文件路径

INTLConfig.ini 在工程中的路径为:

1.17.00 1.16.05
INTLSDK/Scripts/INTLConfig/Editor/Resources/INTLConfig.ini Android:
/Plugins/Android/assets/INTLConfig.ini
iOS:
/Plugins/iOS/INTLSDK/INTLCore/INTLSDK.bundle/INTLConfig.ini
Windows, PS5:
/Plugins/x86_64/INTLConfig.ini
Nintendo: /Plugins/Switch/INTLConfig.ini
SDK 环境
字段 说明 备注
INTL_URL INTLSDK 后台服务的 URL 根据不同的环境配置。
更多信息,请参见 后台环境
必填
GAME_ID Player Network 游戏唯一标识 ID 必填
SDK_KEY 网络通信签名 Key 必填
LIFECYCLE Android 插件生命周期监听
插件要求进行生命周期监听的,需要添加该配置。
例如, LIFECYCLE = Adjust,Facebook,Google,Twitter,AppsFlyer
必填
ANDROID_LOCAL_NOTIFICATION_ENABLE Android 本地推送开关
默认:关闭
选填
DEBUG_CHANNEL 第三方渠道的 debug 模式,只有当 LOG_LEVEL <= 1 时才生效。
不同渠道可以用 (,) 隔开。
例如, DEBUG_CHANNEL = Adjust,AppsFlyer,Firebase
选填
SHOW_TEST_TOAST 显示测试环境 toast 弹窗
0:隐藏,1:显示
默认值:1
选填
INTL 日志
字段 说明 说明
LOG_LEVEL 日志级别
0:调试
1:信息
2:警告
3:错误
默认:3
选填
LOG_ENCRYPT_ENABLE 是否需要加密日志
0:关闭
1:开启
默认:1
选填
LOG_COMPRESS_ENABLE 是否输出落地日志
0:关闭
1:开启
默认:0
选填
LOG_CONSOLE_OUTPUT_ENABLE 是否输出 console 日志
0:关闭
1:开启
默认:0
选填
LOG_FILE_OUTPUT_ENABLE 是否输出日志文件
0:关闭
1:开启
默认:0
选填
LOG_MAX_FILE_SIZE 最大日志文件大小
单位:字节
默认:2x1024x1024(2 MB)
选填
LOG_FILE_EXCESS_ACTION 文件超过最大大小后的行为
0:删除并重写
1:不再写入
默认:0
选填
LOG_AUTO_DELETE_FILE_ENABLE 自动清除过期的日志文件
0:关闭
1:开启
默认:1
选填
LOG_FILE_LIMIT_HOURS 日志文件的过期时间
单位:小时
默认:10*24(10天)
选填

步骤4:测试 INTLSDK 集成

编译并运行您的项目以测试 INTLSDK 是否接入成功。如果您能在日志中搜索到 "INTL" 和 "intl_log" 关键字,说明 SDK 接入成功。

步骤5:配置所需的公会渠道

在左侧导航栏, 选择 功能 > 公会 > 频道 查看支持的登录频道列表。 按照每个频道的说明配置所需的登录频道。

频道信息
渠道 INTLChannel
Kakao INTLChannel.Kakao

步骤6:初始化 INTLSDK

警告

在 Windows 初始化 SDK 之前,需调用 SetDefaultUserStorage 接口设置用户数据缓存目录。

在调用任何账号服务 API 之前,按照以下步骤初始化 SDK。

INTLAPI.cs 包含了 INTLSDK 的所有API,业务只需要关注本文档中列出的 API。

  1. 在游戏开始时,执行 INTLAPI.InitSDK(); 方法初始化 INTLSDK。

    代码示例

    INTLAPI.IsDebug = true; // Set INTLSDK to Debug mode to print more detailed log. The default value is false.
    INTLAPI.InitSDK();
  2. 调用 INTLSDK 的功能模块来接入业务功能。

步骤7:注册公会模块回和调用公会模块

欲了解更多公会 API,请参见 公会 API