12/12/2024 11:37:55
Google 渠道说明
一、概述
1.1 Google Mobile Services 与 Google Play Services
GMS,是 Google Mobile Services(Google 移动服务)的简称。
Google Play Services,是 Android 手机上的一套 Google 系统服务,包括:OAuth 授权体系、Games 游戏服务、Ads 广告服务、Maps 广告服务等。
一般认为,GMS 也就是 Google Play Services 的简称。
1.2 Google Play Games 应用
Google Play Games 是 GMS 的游戏应用,用于管理用户的 Google 游戏信息,并且提供成就、排行榜功能,与 iOS GameCenter 类似。MSDK Google 登录依赖 Google 游戏服务,要求手机上有安装 Google Play Games 应用。
二、开发者平台配置
Google 开发者平台配置主要流程如下:
- 进入 Google Play 控制台,创建应用
- 创建游戏服务,用于关联 API 控制台,否则会返回 10002 错误。关联上面创建的应用
- API 控制台 进行配置后台权限,明确应用可以使用哪些 Google 服务
2.1 注册开发者账号
该流程在 Google Play Console 上进行注册即可。
[info]说明: Google 会收取 25 美金的费用,请提前准备好信用卡
2.2 创建游戏应用
1.进入 Google Play Console ,在 All apps 页面,点击 Create app,创建游戏应用程序。
2.补全应用信息
2.3 创建 Play 游戏服务
1.进入 Google Play Console,在左侧导航栏中,点击 Grow > Play Games Services > Setup and management > Configuration。
2.在 Properties 模块点击 Edit properties。
3.输入游戏基本信息,然后点击 Save changes。
2.4 关联游戏服务和应用
1.进入 Google Cloud Platform,在左侧导航栏中,点击 OAuth consent screen,按照指引进行配置 OAuth 同意屏幕。
2.在左侧导航栏上点击 Credentials,选择 CREATE CREDENTIALS > OAuth Client ID,创建 OAuth 客户端 ID。
3.在 Application type 列表中,选择 Android。
4.输入 Package Name 和 SHA-1 Certificate Fingerprint。与开发团队确认 Package Name 和 SHA-1 Certificate Fingerprint。Android 的 OAuth 客户端要求用户在 KeyStore 中配置 SHA-1 证书指纹和软件包名称。请确保这两个值正确无误。否则,登录过程将出现异常。
5.点击 CREATE 完成 Android 类型的 OAuth 的创建。此时可以进入详情页面查看 Android 类型的客户端 ID、包名、SHA1 指纹等信息。
6.在左侧导航栏上点击 Credentials,选择 CREATE CREDENTIALS > OAuth Client ID,创建 OAuth 客户端 ID。
7.在 Application type 列表中,选择 Web Application。
8.输入信息后,点击 CREATE 完成 Web Application 类型的 OAuth 的创建。此时可以进入详情页面查看 Web application 类型的客户端 ID、秘钥等信息。
9.进入 Google Play Console,在左侧导航栏中,点击 Grow > Play Games Services > Setup and management > Configuration,点击 Add credential。
10.Type 选择 Android,Authorization 模块中的 OAuth client 下拉列表里选择上面刚创建的 Android 类型的 OAuth client。
2.5 添加 Google Play 测试人员
在游戏发布之前,只有测试人员才能登陆,并确认应用是处于可测试状态
2.6 配置成就和排行榜
进入 Google Play Console,在左侧导航栏中,点击 Grow > Play Games Services > Setup and management,分别点击 Achievements 和 Leaderboards 进行创建成就和排行榜。
2.7 开放式 Beta 测试,并且可以发布到 Google Play
进入 Google Play Console,在左侧导航栏中,点击 Release > Production,按照说明创建生产版本。
[info]发布成 Beta 测试的好处是:用户可以在 Google Play 上进行下载并且没有权限添加评论,只能通过设置的渠道反馈问题。通过点击下图 “管理 BETA 版”,然后按照提示填上对应的内容即可。
2.9 飞鹰配置
在飞鹰 的游戏详情页>登录信息中勾选 Google Play 渠道并填写 AppID 和 AppKey
[info]特别注意 飞鹰管理端中的 AppID 和 AppKey 如何获取?
进入 Google Cloud Platform,在左侧导航栏中,点击 Credentials,点击 Web application 类型的 OAuth 2.0 Client ID 进入详情页面。
三、Android工程配置
3.1 权限配置
在 AndroidManifest.xml 中新增网络访问权限
<uses-permission android:name="android.permission.INTERNET"/>
3.2 Google Game APP ID 版本配置
在 Application 节点中添加如下配置:
<meta-data
android:name="com.google.android.gms.games.APP_ID"
android:value="@string/msdk_google_app_id" />
[info] 其中 msdk_google_app_id,可以从 Google云端平台 面板访问信息中心来查看,msdk_google_app_id 就是此页面上的 Project number。
3.3 App ID 配置和Server Client ID 配置
在工程的 assets/MSDKConfig.ini 文件中添加以下配置
[Google 渠道配置]
GOOGLE_APP_ID = {YOUR_GOOGLE_APP_ID}
GOOGLE_CLIENT_KEY = {YOUR_GOOGLE_CLIENT_KEY}
GOOGLE_EVERY_LOGIN_CHOICE_USER = {登录前是否先执行登出操作,以让用户重新选择账号:默认 0 否, 1 是}
MSDK_GOOGLE_LOGOUT_NEED_CONNECT = {登出操作时若不是连接状态,是否要执行连接后再登出:默认 0 否, 1 是}
MSDK_AUTOLOGIN_NOT_PLUGIN_CHANNEL = {自动登录时是否调用插件执行连接操作:不配置则默认 Google 渠道的自动登录执行连接操作,配置填写 Google 则表示 Google 渠道的自动登录不执行连接操作}
[info]说明
- {YOUR_GOOGLE_APP_ID} 为游戏应用在 Google Play Console 的 APP_ID,即 3.2 中配置的 APP_ID
- {YOUR_GOOGLE_CLIENT_KEY} 为 MSDK 需要的
Web 客户端 Key
,配置 OAuth Client ID 时在Credentials
页面中查看Web application
类型对应的客户端 ID。可以参考 2.9 的指引获取。- 后面三个配置项是可选配置,仅当需要再按照要求配置即可
四、iOS 工程配置
Google Play 控制台地址凭据 存在接入的各个数据。以 Demo 举例:
4.1 需要数据
- Client ID:为 iOS 端申请的账号 ID,该值需要填写到:MSDKConfig.ini 中的 GOOGLE_CLIENT_KEY_IOS 字段。
- Server ID:为服务端的 ID,该值需要填写到:MSDKConfig.ini 中的 GOOGLE_CLIENT_KEY 字段(如果之前接入过安卓,则该值应和安卓相同)。
4.2 配置
更新了 Google 的 插件包及 SDK 之后,注意配置工程文件:
- 在 dependent frameworks 中新增:
LocalAuthentication.framework
SafariServices.framework
SystemConfiguration.framework
- 在 ObjC linker flag 中新增 -ObjC:
Other Linker Flags: $(OTHER_LDFLAGS) -ObjC
- 在 URL scheme 中添加 ClientID,如:
五、功能说明
5.1 登录功能
自动登录逻辑说明
Google 的任何操作都需要先连接 Google 服务。
在自动登录时,可能存在当前未连接到 Google 服务。MSDK 默认会在自动登录时去连接 Google 服务,也推荐执行连接操作(业务可以按照 3.3 中的字段
MSDK_GOOGLE_LOGOUT_NEED_CONNECT
配置去掉这一步的连接操作)。Google 登录说明
MSDK 在做 Google 登录之前,会判断 Google 手机服务是否可用,只有在 GMS 有效时,才能调用对应的登录服务。 如果 GMS 无效,会将 Google 返回的错误码通过 MSDKLoginRet 的
thirdCode
字段返回给业务。
返回码 | 对应的值 | 错误描述 |
---|---|---|
SERVICE_MISSING | 1 | 设备上缺少GMS服务 |
SERVICE_VERSION_UPDATE_REQUIRED | 2 | 安装的GMS版本已过期 |
SERVICE_DISABLED | 3 | GMS服务被禁用 |
SERVICE_INVALID | 9 | 安装的GMS版本不正确 |
SERVICE_UPDATING | 18 | 设备上正在更新GMS服务 |
[info] 参考 Google 文档:https://developers.google.com/android/reference/com/google/android/gms/common/ConnectionResult.html
5.2 Google 游戏服务
先连接再使用
Game 游戏服务为单独的模块,即使使用了 Google 登录模块,也需要调用
Setup
方法。示例代码:MSDKGame.Setup ("Google", "");
账号一致性说明
Google 游戏服务(成就和排行榜)上报是跟连接的 Google 服务对应的。一般情况下:
- Google 成功后,再调用 Game 模块的
Setup
方法,成就会上报到登录账号 - 如果非 Google 登录,也可以使用 Game 模块功能,成就会上报到当前连接的 Google 账号上
- Google 成功后,再调用 Game 模块的
关注界面关闭回调
Game 模块的
ShowLeaderBoard
和ShowAchievement
接口都会打开界面,用户可以在界面右上角 "..." 设置中进行登出,这样会导致成就系统不可用。此时,需要重新调用Setup
方法。
六、常见问题
6.1 配置异常 Crash
未正常配置 App ID 和 Server Client Key 的时候,会出现以下 Crash
Caused by: java.lang.IllegalStateException: A fatal developer error has occurred. Check the logs for further information.
at com.google.android.gms.common.internal.zzf$zza.zzb(Unknown Source)
at com.google.android.gms.common.internal.zzf$zza.zzu(Unknown Source)
at com.google.android.gms.common.internal.zzf$zze.zzxH(Unknown Source)
at com.google.android.gms.common.internal.zzf$zzd.handleMessage(Unknown Source)
...
6.2 GMS 升级与版本兼容性说明
Google Play Services 早期不同版本不能混用,会存在版本兼容性问题。目前 MSDK 使用的 GMS 版本为 16.0.0 ,Firebase版本为16.0.5
[danger]注意 升级前请联系 MSDK助手 进行确认
6.3 DEVELOPER_ERROR 错误
GOOGLE_CLIENT_KEY 为 MSDK 需要的 Web 客户端 Key 注意这里不要使用 Android 客户端 Key,否则会出现 DEVELOPER_ERROR 错误,同时也要确认调试时使用的 签名与上传到Google管理端的应用签名操持一致。
All rights reserved.