跳到主要内容

iOS

警告

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

由于 DMM 的隐私清单尚未公布,目前 Player Network SDK 隐私清单中不包含对应的内容,详见 iOS 17 隐私清单

本文旨在介绍如何设置 DMM 身份验证,让您的游戏可以使用 Player Network 登录鉴权服务通过 DMM 渠道登录。

前提条件

1. 设置 DMM 应用

请联系 DMM 技术支持部门,获取具有相关权限和应用程序参数的开发人员账号。

所需应用程序参数:

  • 应用程序 ID
  • 密匙
  • 用户密钥
  • 消费者密钥
  • 验证客户端 ID
  • 验证客户端密钥
  1. 获取 Player Network 控制台登录账号
  2. 为游戏创建新项目,或加入已有项目
  3. 下载 SDK
  4. 接入 SDK
  5. 在 Player Network 控制台添加 DMM 为业务的登录鉴权方式

步骤1:为 DMM 登录配置 SDK

警告

DMM SDK 仅与 iOS SDK 11 及以上版本兼容。

说明

Unreal Engine 应首先在 Plugins/INTLSDK/Source/INTLCore/INTLCore.Build.cs 文件中找到捆绑资源路径:

AdditionalBundleResources.Add(new BundleResource(Path.Combine(ModuleDirectory, "Libs/iOS/INTLCore/INTLSDK.bundle"), bShouldLog: false));

打开项目的 INTLConfig.ini 文件:

[DMM Channel Configuration]
DMM_DEVELOP_MODE = {INTL_DMM_DEVELOP_MODE}
DMM_APP_ID = {INTL_DMM_APP_ID}
DMM_CONSUMER_KEY = {INTL_DMM_CONSUMER_KEY}
DMM_CONSUMER_SECRET = {INTL_DMM_CONSUMER_SECRET}
DMM_AUTHENTICATION_CLIENT_ID = NONE
DMM_AUTHENTICATION_CLIENT_SECRET = NONE
DMM_GET_VALIDATE_CODE_PATH = /v2/auth/get_dmm_verify_code
DMM_REDIRECT_URL = {INTL_DMM_REDIRECT_URL}
DMM_SECRET_KEY = NONE
  • {INTL_DMM_DEVELOP_MODE} 替换为 sandbox 和 production。Sandbox 是调试环境,production 是正式环境。
  • {INTL_DMM_APP_ID} 替换为游戏的 DMM 应用程序 ID。
  • {INTL_DMM_CONSUMER_KEY} 替换为游戏的 DMM 消费者密钥。
  • {INTL_DMM_CONSUMER_SECRET} 替换为游戏的 DMM 消费者密钥。
  • {INTL_DMM_REDIRECT_URL}`值的设置规则如下:
    1. 删除软件包名称中的所有句点。例如,软件包名称 com.INTL.game 变为字符串 comINTLgame
    2. 将上述规则得到的字符串从大写改为小写。例如,在上例中,字符串变为 comintlgame
    3. 然后在最后添加 ://auth,例如,comintlgame://auth

步骤2:添加 DMM 登录

  1. 注册登录相关回调。

    // Add callbacks
    public void AddAuthObserver()
    {
    INTLAPI.AddAuthResultObserver(OnAuthResultEvent);
    }

    // Remove callbacks
    public void RemoveAuthObserver()
    {
    INTLAPI.RemoveAuthResultObserver(OnAuthResultEvent);
    }

    // Process the INTLAuthResult callback
    public void OnAuthResultEvent(INTLAuthResult ret)
    {
    Debug.Log($"MethodID: {ret.MethodId}");

    string methodTag = "";
    if (authRet.MethodId == (int)INTLMethodID.INTL_AUTH_LOGIN)
    {
    methodTag = "Login";
    }
    else if (authRet.MethodId == (int)INTLMethodID.INTL_AUTH_BIND)
    {
    methodTag = "Bind";
    }
    else if (authRet.MethodId == (int)INTLMethodID.INTL_AUTH_AUTOLOGIN)
    {
    methodTag = "AutoLogin";
    }
    else if (authRet.MethodId == (int)INTLMethodID.INTL_AUTH_QUERY_USER_INFO)
    {
    methodTag = "QueryUserInfo";
    }
    else if (authRet.MethodId == (int)INTLMethodID.INTL_AUTH_GET_AUTH_RESULT)
    {
    methodTag = "GetAuthResult";
    }
    }
  2. 调用 AutoLogin 接口自动登录。

    INTLAPI.AutoLogin();
  3. 在自动登录失败时调用 Login 接口使玩家手动登录。

    INTLAPI.Login(INTLChannel.DMM); 
  4. 与游戏后台同步客户端身份验证状态,等待最终验证结果。

步骤3:验收登录功能

在 Player Network SDK 日志中搜索关键字 "AuthResult" 确认渠道名称和 OpenID 是否正确返回。如果正确,则表明集成配置成功,登录功能已成功添加。

如果接入过程中遇到问题,请参见 常见问题