04/29/2024 11:54:52

Apple 渠道说明

Apple 从 XCode 11 开始支持 Apple ID 登录,运行的 iOS 系统版本在 iOS 13 及以上版本时功能正常,否则登录返回错误码 7(NOT_SUPPORT)。

一、 Apple Developer Potral 配置

实现 Sign in with Apple 功能之前,需要在 Apple Developer Portal:

  • 获取 Team ID;
  • 创建用于向 Apple 发送请求时标识请求来源的 client_id;
    • 对于 iOS 应用来说,client_id 亦即 App ID(Bundle ID)
  • 创建描述文件
  • 创建用于计算 client_secret 的 key 以及对应的 Key ID;

1.1 获取 Team ID

  • 登录 Apple Developer Portal,点击 Account;
  • 点击左侧边栏的 Membership,即可看到 Team ID;

1.2 创建 App ID

  • 点击左侧边栏的 Identifiers,然后点击蓝色加号;

  • 第一步选择 App IDs,点击 Continue;

  • 输入 Description 以及 Bundle ID,在 Capabilities 下勾选 Sign in with Apple;

  • 点击 Continue,点击 Register;

对于现存 App ID 来说,只需找到想要增加 Sign in with Apple 的 App ID ,在 Capabilities 下勾选 Sign in with Apple 即可。

1.3 创建描述文件

  • 点击左侧边栏的 Profiles,然后点击蓝色加号;

  • 选择证书类型, 点击 Continue

  • 选择上一步注册的 App ID, 点击 Continue

  • 选择签名证书,点击 Continue

  • 选择设备,点击 Continue

  • 为描述文件命名,点击 Continue

  • 下载描述文件,点击 Download

  • 安装下载的描述文件到开发或者打包环境中

对于现存的描述文件来说,只需在 App ID 的 Capabilities 添加 Sign in with Apple 之后, 重新编辑、保存和下载即可

1.4 创建 Key 以及获取 Key ID

  • 输入 Key Name,勾选 Sign in with Apple;

  • 点击 Sign in with Apple 旁边的 Configure,选择上述配置了 Sign in with Apple 功能的 App ID 作为 Primary App ID,点击保存;

  • 点击 Continue,点击 Register;
  • 下载 Key 文件(只能下载一次,确保不要丢失),获取 Key ID

将上述过程中获得的 App ID,Team ID,Key ID,Key 文件中的内容在游戏接入时配置到飞鹰中即可。

二、iOS 工程配置

2.1 Xcode 中添加 Capability

xcode_setting_1

2.2 Xcode BuildPhases 配置

在 Xcode BuildPhases 中添加 AuthenticationServices.framework,同时设置Status 为 optional

xcode_setting_2

三、Unity 配置

3.1 Unity XUPoter 的 xx.projmods 文件的配置

Unity 导出 XCode 工程时,需要配置 projmods 文件( 等同于 2.1 的手动配置)

{
    "group": "MSDKApple",
    "libs": [],
    "frameworks": ["AuthenticationServices.framework:weak"],
    "files": [],
    "folders": [],
    "excludes": [],
    "headerpaths":[],
    "build_settings": {},
    "system_capabilities": {},
    "Info.plist":{} 
}

3.2 Unity 工程需要新增 Entitlement 文件

示例:MSDKDevDemo.entitlements

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>com.apple.developer.applesignin</key>
    <array>
        <string>Default</string>
    </array>
</dict>
</plist>

Unity 如何添加 Entitlement 文件,参考Unity 论坛的策略

https://forum.unity.com/threads/how-to-put-ios-entitlements-file-in-a-unity-project.442277/

四、 界面要求

[human-interface-guidelines] 是苹果要求的界面风格,有明确的界面要求,游戏方需要关注的是:

按钮的外观颜色要求

登录按钮存在三种外观:白色、带边框的白色和黑色。选择适合背景的按钮外观有要求

白色按钮

用于深色或者彩色背景

白色按钮带边框

用于不能提供足够对比度的白色或者浅色白净

黑色按钮

用于提供足够对比度的白色或浅色背景

按钮的位置要求

  • 使用与其他登录按钮大小相同的 Apple 登录按钮
  • 避免让滚动才看到按钮
  • 默认情况下,“使用 Apple 登录” 按钮具有圆角
  • 此外按钮不能出现拉伸或者压缩导致的比例丢失
  • 按钮需要在所有其他登录方式上面

其他关注点

苹果提供了 “Sign in With Apple” 和 “Continue With Apple” 两种文档用于登录按钮(Objective-c 和 Swift 原生UI组件),业务方可选择符合您登录体验的文案,文案的语言会随着手机系统语进行本地化

五、请求用户全名和邮箱

C#
C++
public static void Login(string channel, string permissions = "", string subChannel = "", string extraJson = "")
public static void Login(const String &channel, const String &permissions, const String &subChannel, const String &extraJson)

参数说明

参数名称 参数类型 说明
channel string 渠道名字,填“Apple“
permissions string "email,fullName"
subChannel string 不填使用默认值即可
extraJson string 不填使用默认值即可

Apple 登录只有首次授权时才会提供 fullName 和 email,首次授权时 MSDK 通过 channelInfo 字段携带回去

channelInfo 是一个 JSON 格式字符串,其中 email 和 full_name 两个字段为 Apple 提供的邮箱和用户名

重新拿到用户名和密码的方法

在设置 - Apple ID 、Cloud 、媒体和购买项目 - 密码和安全性 - 使用您的 Appid 的 App 中删除对应用的授权,再次登录就会重新提供用户名和邮箱

六、第三方错误码

登录

错误吗 错误信息
1000 未知错误
1001 用户取消
1002 授权请求收到了无效的响应
1003 未处理授权请求
1004 授权尝试失败

自动登录

错误吗 错误信息
0 用户取消授权
2 iCloud 未登录

七、常见问题

7.1 token 说明

Apple 登录鉴权、米大师支付场景及其他操作所需的 token,从 MSDK 登录回调取最外层 token 字段,业务无需关注 refreshToken。



Copyright © 2024 MSDK.
All rights reserved.

results matching ""

    No results matching ""