跳到主要内容

iOS

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

前提条件​

1. 在 Apple Developer 上配置 iOS 应用
1. 创建 App ID
  1. 在 Apple 开发者平台 上注册并登录 Apple 开发者账号。

  2. 在顶部导航栏中点击 Account,并选择 Certificates, IDs & Profiles 下的 Identifiers。

    图片:Apple Account

  3. 点击蓝色添加图标(+)。

    图片:Apple 标识符

  4. 选择 App IDs 后,点击 Continue。

    图片:Apple App ID

  5. 选择 App 后,点击Continue。

    图片:Apple App ID

  6. 输入 Description 和 Bundle ID。

    • Description:游戏应用的名称或描述。
    • Bundle ID:游戏应用的唯一标识符,包含在 App ID 中。

    图片:Apple bundle description

  7. 在 Capabilities 下选择 Sign in with Apple 后,点击 Continue。

  8. 点击 Register 创建 App ID。

2. 设置 App Store Connect
  1. 登录 App Store Connect。

  2. 选择 App。

    图片:GameCenter ChooseApp

  3. 点击App(+),选择添加 App。

    图片:GameCenter AddApp

  4. 根据在步骤1中获得的 Bundle ID,创建 App Store Connect App。

    图片:GameCenter iTunes Connect 1

  5. 选择 Feature > Game Center,进入 Game Center 配置页面。

  6. 启用 Game Center 功能。

更多信息,可参见:https://developer.apple.com/help/app-store-connect/

排行榜
  1. 在左侧导航栏选择 Game Center ,在右侧选择 Add leaderboards 创建新的排行榜或者 Add an achievement 添加成就设置。

图片:GameCenter iTunes Connect

  1. 根据需要输入详细信息。
说明

点击每个字段输入框旁边的问号(?)图标,将给出详细解释。

  1. 点击 Storage 保存已配置的排行榜。

图片:GameCenter Leaderboard

说明

用户可根据需要添加多个排行榜。排行榜支持多种语言,每种语言都必须单独添加。成就设置与排行榜设置类似。

  1. 获取 Player Network 控制台登录账号。
  2. 为游戏创建新项目,或加入已有项目。
  3. 下载 SDK。
  4. 接入 SDK。
  5. 在 Player Network 控制台添加 Game Center 为业务的登录鉴权方式。

步骤1:为 Game Center 登录配置 SDK​

  1. 在目标项目的 Signing & Capabilities 页面,Bundle Identifier 必须是在 App Store Connect 中已注册的 iOS App 应用。
    否则,当用户登录 Game Center 时,会收到提示不支持 Game Center 的错误信息。

  2. 在目标项目的 Signing & Capabilities 页面,添加 + Capability 添加 Game Center。

说明

系统库依赖项 GameKit.framework 将自动添加到 Xcode 中的项目依赖项中。

图片:Game Center Xcode

步骤2:添加 Game Center 登录​

在 iOS 10 之后的版本中,Game Center 将继续作为一项服务存在,但用户设备上将不再出现单独的 Game Center 应用程序。用户可以进入 设置 > Game Center 登录并继续使用相关功能。

用户在游戏内登录 Game Center 主要有两种情况:

  • 已经通过 设置 > Game Center 登录:执行后台登录,并显示 Welcome back, xxxx 横幅。整个登录过程不会中断游戏。

    图片:Game Center login 1

  • 未通过 设置 > Game Center 登录:游戏内会弹出 Game Center 登录框。如果用户取消登录三次,将无法访问游戏内的 Game Center 登录框,需要返回到 设置 > Game Center 手动登录 Game Center。

    图片:Game Center login 2

  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.GameCenter);
  4. 与游戏后台同步客户端身份验证状态,等待最终验证结果。

步骤3:验收登录功能​

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

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

玩家限制​

在成功登录 Game Center 后,GKLocalPlayer 对象会提供限制状态信息,游戏可以根据这些信息对功能进行限制:

  • isUnderage:判断玩家是否为未成年人。
  • isMultiplayerGamingRestricted:判断玩家是否可以加入多人游戏。
  • isPersonalizedCommunicationRestricted:判断玩家是否可以在设备上使用个性化通信功能。