多商店渠道包支持方案
一般情况下,写在 APK 特定区域的游戏渠道标签在应用商店更新时可能被覆盖,发生洗包的情况。例如,玩家三星手机上的渠道包在通过 Google Play 发布后被覆盖成 Google Play 渠道包。
由于应用在每个渠道发布的分成比例不一致,游戏为了争取更多利润空间,需要防止渠道包之间相互覆盖 (洗包) 的情况,来提高各渠道的质量。因此,游戏可以和技术中台一起通过适配不同包名的渠道包来彻底解决相互覆盖的问题。Player Network SDK 目前已提供了多商店渠道包支持方案,其中最重要的就是保证不同渠道包的账号互通。
多商店渠道包的本质是包名不同,Player Network SDK 侧提供了不同包名的方案,其他 SDK 在不同包名情况的适配情况需要业务自己评估。 为了多商店之间账号同步,接入注意事项:
- 版本要求:Player Network SDK v1.14.01 以上版本
- 联系 Player Network 助手启用多商店渠道方案
账号互通方案
Facebook 渠道开启多渠道包后,渠道 UID 会变化 (Player Network SDK 会进行变更适配,对业务透明),如需要获取变更前 UID 对应 Player Network SDK OpenID 关系,请参见 查询第三方渠道账号 ID(多商户渠道包) 或联络 Player Network 助手。
多商店渠道包的本质是包名不同,Player Network SDK 侧提供了不同包名的方案,其他 SDK 在不同包名情况的适配情况需要业务自己评估。
为了多商店之间账号同步,接入注意事项:
- 部分登录渠道对于不同 app ID 下的同一用户生成的用户 ID 不同 (例如 WeChat 和 Facebook)。
- 大多数登录渠道会校验对应用的包名,且部分渠道只允许配置一个包名 (例如 Apple 和 Google)。
- 多渠道包场景,Player Network SDK 的账号 Token 长度会增加,用以满足应用识别等用途。
不同包名的渠道包想要做到账号互通有两个困难:
- 多个渠道包采用同一个 Player Network SDK game ID (不同 game ID 的同一用户生成的 OpenID 不同)。
- 根据不同登录渠道的特性定制不同的账号生成策略。目前已确认支持的渠道有 Apple、Discord、Google、Facebook、Kakao、LINE、QQ(Player Network SDK 尚未支持)、Twitter、VK、WeChat(Player Network SDK 尚未支持)和游客账号。
客户端接入流程
接入支持多商店渠道包的 Player Network SDK 版本。
- V1.15.02 支持自建账号,Guest,Facebook,Kakao,Google,Apple,Discord (单 app ID),LINE,Twitter。
- V1.16 新增支持 VK 和 Discord (多 app ID)。
在 Player Network 控制台为不同包名的渠道包申请一个通用的 Player Network SDK Game ID。
针对不同登录渠道,在对应的第三方平台申请一个或多个 app ID,并按要求进行配置。
模块 - 渠道 配置说明 登录 - Guest 无需额外配置,可以用相同的配置 登录 - Apple 请按照 指引,在同一开发者账号下创建多个不同 app ID 的游戏应用,并完成每个游戏应用的配置。 登录 - Discord 如果渠道包少于等于 4 个,可只需申请一个 app ID,每个游戏需要配置独立的
DiscordREDIRECT_URL_SCHEME
,并将其全部配置在 Discord 管理端(最多配置 10 个)
如果渠道包大于等于 5 个,申请多个 app ID
更多信息请参见 配置 Discord 登录登录 - Google 请按照 指引,在同一开发者账号下创建多个不同 app ID 的游戏应用,并完成每个游戏应用的配置。 登录 - Facebook 通常情况下,Player Network 会使用 Facebook 提供的 userid 作为社交渠道中的用户身份。使用多商店渠道包功能后,Player Network SDK 将同时使用 Facebook 提供的 token_for_buiness 和 userid 作为社交渠道中的用户身份。请按照 指引,在同一个 Facebook 商户下申请多个 app ID,并完成每个应用的配置。 登录 - Kakao 只需申请 1 个 app ID,同一 app ID 下针对每个渠道包申请一套 Android/iOS 配置
更多信息请参见 配置 Kakao 登录登录 - LINE 只需申请 1 个 app ID,将所有渠道包名和对应签名配置在 LINE 管理端
更多信息请参见 配置 LINE 登录登录 - QQ(Player Network SDK 尚未支持) 请按照 指引,在同一开发者账号下创建多个不同 app ID 的游戏应用,并完成每个游戏应用的配置。 登录 - Twitter 无需额外配置,可以用相同的配置 登录 - VK 请按照 指引,在同一开发者账号下创建多个不同 app ID 的游戏应用,并完成每个游戏应用的配置。 登录 - WeChat(Player Network SDK 尚未支持) 请按照 指引,在同一开发者账号下创建多个不同 app ID 的游戏应用,并完成每个游戏应用的配置。 APAS 无需额外配置,可通过包名区分数据源 推送 - Firebase 在 Firebase 管理端的同一个项目下申请多个应用
更多信息请参见 Firebase 多商店渠道配置UA - Adjust 在同一个商户下申请多个 app ID
更多信息请参见 Adjust 多商店渠道配置UA - AppsFlyer 在同一个商户下申请多个 app ID
更多信息请参见 AppsFlyer 多商店渠道配置UA - Facebook 在同一个商户下申请多个 app ID
更多信息请参见 Facebook 多商店渠道配置UA - Firebase 在 Firebase 管理端的同一个项目下申请多个应用
更多信息请参见 Firebase 多商店渠道配置通知 无需额外配置,可通过扩展字段区分渠道包 合规 无需额外配置,暂时无法区分渠道包配置 游戏更新 无需额外配置,可通过分支区分渠道包 区服导航 无需额外配置,暂时无法区分渠道包配置 客服 无需额外配置,可通过设置 tag 来区分渠道包 Deep Link 为多个应用配置 deep link
查看 iOS 通用链接 和 Android 应用程序链接 以获取更多信息根据不同渠道的要求配置客户端并构建多商店渠道包。
已上线的原始包中,所有渠道的 app ID 都必须使用原始配置,不可更新。
服务端接入流程
涉及多个服务端接口变更可以通过 Player Network 控制台添加多一个服务的渠道。
多商店渠道包构建
由于游戏包的构建时间较长,为提高渠道包构建速度并减少人工操作易出错的问题,技术中台将在 Player Network 上线渠道包构建工具,提升游戏发行速度。
测试用例
模块 | 验证内容 |
---|---|
登录 好友 公会 | 1. 多个包同时安装在一台手机上 2. 登录功能正常,同一账号的 openid 相同 3. 好友及公会功能正常(分享,发消息,获取好友列表,应用拉起) |
APAS | 根据业务需求测试 |
推送 | 在 Firebase 管理端,区分渠道包验证推送功能 |
崩溃上报 | Crash 可以正常上报,可通过包名区分崩溃信息 |
UA | 不同包名上报到对应的 app ID 下 |
公告 | 根据业务需求测试 |
合规 | 根据业务需求测试 |
游戏更新 | 根据业务需求测试 |
区服导航 | 根据业务需求测试 |
客服 | 在 AIHelp 管理端通过 tag 过滤,查看不同包名的客诉问题 |
Deep link | 可以拉起不同应用 |
方案风险
Google,VK,Discord 对于不同 app ID 生成的用户 ID 相同,但官方文档并未明确说明。如果这些渠道的账号生成规则发生变化,会影响不同渠道包的账号互通。
渠道打包
随着多渠道包的广泛接入,业务需要在支付的时候判断渠道号,通过渠道号调用不同的支付 SDK。
对于 Google,渠道打包工具会在 AndroidManifest.xml
中增加渠道号配置:
```xml
<?xml version="1.0" encoding="utf-8"?>
<manifest>
<application>
<meta-data
android:name="INTL_STORE_CHANNEL"
android:value="10" />
</application>
</manifest>
```
渠道号 value
是一个 int
数组,配有相应的配置:
渠道号 | 渠道名 |
---|---|
0 | App store |
1 | |
2 | Samsung |
3 | Huawei |
4 | Xiaomi |
5 | Oppo |
6 | Vivo |
7 | Transsion |
8 | Onestore |
9 | Aptoide |
10 | Amazon |
11 | Uptodown |
12 | Apkpure |
100 | PC 官网 |
101 | Steam |
102 | Epic |
1001 | Switch |
1002 | PS4 |
1003 | PS5 |
1004 | Xbox One |
1005 | Xbox Series X|S |
用于 GetStoreChannel 接口 和采集 comm_c_store_channel 数据:
- Android 通过
AndroidManifest.xml
中获取,默认值 1(谷歌) - iOS 默认值 0(App store)
- Windows 通过 INTLConfig.ini 中
WINDOWS_STORE_CHANNEL
配置获取,默认值 100 - Console 通过 INTLConfig.ini 中
CONSOLE_STORE_CHANNEL
配置获取,以下为对应默认值:
Switch:1001
PS4:1002
PS5:1003
Xbox One:1004
Xbox Series X|S:1005
API
- Unity
- Unreal Engine
API | 函数定义 |
---|---|
GetStoreChannel | 获取商店渠道配置信息 |
API | 函数定义 |
---|---|
GetStoreChannel | 获取商店渠道配置信息 |
常见问题
什么是多商店渠道包?
各个渠道包的包名不同,在 Amazon,Samsung,Google Play 等商店上上架不同包名的应用包。
为什么要考虑多商店渠道包?
商务角度:当发布多个相同包名的安装包时,一个手机上只能安装其中一个。因此,玩家三星手机中已安装的三星渠道安装包可能会在玩家使用 Google Play 更新游戏后,被覆盖成 Google Play 渠道的安装包。这种情况也被称为洗包。由于 Amazon,Samsung,Google Play 等商店的分成不同,洗包会影响游戏的利润分成。因此需要通过不同包名解决洗包问题。
多商店渠道包是否能做到账号同步?
可以,Player Network SDK 目前的方案可以通过同一个 Game ID 生成同一个 Open ID 实现账号同步。
多商店渠道包的开发量有哪些?
需要评估不同包名下各个 SDK 的适配情况:
- Player Network SDK 已支持多商店渠道包适配,游戏开发只需编码一次,然后在打包时按照不同渠道的配置打包。
- 米大师 SDK 需要接入不同渠道包,游戏开发需按照不同渠道调用支付 SDK,并在打包时按照不同渠道配置打包。
请联系米大师团队确认细节。 - 其他组件 SDK 请游戏联系相应团队。
已接入 Player Network SDK 的业务是否支持升级到多商店渠道包?是否会导致功能异常?
支持未发布的游戏,清档后 CBT 上线前的数据避免账号问题。推荐使用此方法,在游戏刚开始接入时就考虑多商店渠道包。也支持已发布游戏在玩家无感知的情况下升级多商店渠道包。
如果使用此方案将有一定的功能限制,例如不支持 Unity SDK 和 Unreal Engine SDK 的 LoginWithConfirmCode
功能。
新业务是否从接入开始就应该考虑多商店渠道包?
是的,建议业务在刚开始接入时就考虑多商店渠道包,直接采用多商店渠道包的方式接入以便后续支持账号同步。
是否有打包工具平台,可以支持多商店渠道打包?
可以联络 [karenkzhao] 或者 Player Network 助手。