跳到主要内容

iOS

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

前提条件

1. 在 Apple Developer Center 上配置 iOS 应用
1. 创建 App ID

Apple Developer Center 上注册 Apple 开发者账号并创建应用程序。

  1. 登录 Apple Developer Platform

  2. 在侧边栏中,点击 Certificates, IDs & Profiles

  3. 在侧边栏中,点击 Identifiers,然后单击蓝色添加图标 (+)。

    图片:Apple Identifiers

  4. 选择 App IDs,然后按照指南创建 App ID。

  5. 保存Bundle ID 以备后用。

2. 设置 iTunes Connect
  1. 登录 iTunes Connect。

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

    图片:GameCenter iTunes Connect 1

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

  4. 启用 Game Center 功能。

  5. 设置 LeaderboardAchievement
    成就设置与排行榜设置类似。

    图片:GameCenter iTunes Connect

排行榜
  1. 在 Game Center 配置页面的 "排行榜" 右侧,单击加号 (+) 创建新的排行榜。
  2. 根据需要输入详细信息。
说明

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

  • Sort Order:设置排行榜中的内容是按升序还是降序排序。
  • Score Format Type:设置分数类型。
  1. 点击 Save 保存已配置的排行榜设置。

图片: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 是否正确返回。如果正确,则表明集成配置成功,登录功能已成功添加。

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