跳到主要内容

多商店渠道包支持方案

一般情况下,写在 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、LINE、QQ(Player Network SDK 尚未支持)、Twitter、VK、WeChat(Player Network SDK 尚未支持)和游客账号。

客户端接入流程​

  1. 接入支持多商店渠道包的 Player Network SDK 版本。

    • V1.15.02 支持自建账号,Guest,Facebook,Google,Apple,Discord (单 app ID),LINE,Twitter。
    • V1.16 新增支持 VK 和 Discord (多 app ID)。
  2. 在 Player Network 控制台为不同包名的渠道包申请一个通用的 Player Network SDK Game ID。

  3. 针对不同登录渠道,在对应的第三方平台申请一个或多个 app ID,并按要求进行配置。

    模块 - 渠道配置说明
    登录 - Guest无需额外配置,可以用相同的配置
    登录 - Apple请按照 指引,在同一开发者账号下创建多个不同 app ID 的游戏应用,并完成每个游戏应用的配置。
    登录 - Discord支持但不建议申请并使用单个 app ID,因每个游戏需要配置独立的 Discord REDIRECT_URL_SCHEME,并将其全部配置在 Discord 管理端(最多配置 30 个)。如果渠道包大于等于 10 个,建议申请多个 app ID。
    更多信息,请参见 配置 Discord 登录。
    登录 - Google请按照 指引,在同一开发者账号下创建多个不同 app ID 的游戏应用,并完成每个游戏应用的配置。
    登录 - Facebook通常情况下,Player Network 会使用 Facebook 提供的 userid 作为社交渠道中的用户身份。使用多商店渠道包功能后,Player Network SDK 将同时使用 Facebook 提供的 token_for_business 和 userid 作为社交渠道中的用户身份。请按照 指引,在同一个 Facebook 商户下申请多个 app ID,并完成每个应用的配置。
    登录 - 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 应用程序链接 以获取更多信息
  4. 根据不同渠道的要求配置客户端并构建多商店渠道包。

注意

已上线的原始包中,所有渠道的 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 version="1.0" encoding="utf-8"?>
<manifest>
<application>
<meta-data
android:name="INTL_STORE_CHANNEL"
android:value="10" />
</application>
</manifest>

渠道号 value 是一个 int 数组,配有相应的配置:

渠道号渠道名
0App store
1Google
2Samsung
3Huawei
4Xiaomi
5Oppo
6Vivo
7Transsion
8Onestore
9Aptoide
10Amazon
11Uptodown
12Apkpure
100PC(官网)
101Steam
102Epic
103PC(Google Play)
1001Switch
1002PS4
1003PS5
1004Xbox One
1005Xbox 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​

API函数定义
GetStoreChannel获取商店渠道配置信息

常见问题​

什么是多商店渠道包?​

Answer

各个渠道包的包名不同,在 Amazon,Samsung,Google Play 等商店上上架不同包名的应用包。

为什么要考虑多商店渠道包?​

Answer

商务角度:当发布多个相同包名的安装包时,一个手机上只能安装其中一个。因此,玩家三星手机中已安装的三星渠道安装包可能会在玩家使用 Google Play 更新游戏后,被覆盖成 Google Play 渠道的安装包。这种情况也被称为洗包。由于 Amazon,Samsung,Google Play 等商店的分成不同,洗包会影响游戏的利润分成。因此需要通过不同包名解决洗包问题。

多商店渠道包是否能做到账号同步?​

Answer

可以,Player Network SDK 目前的方案可以通过同一个 Game ID 生成同一个 Open ID 实现账号同步。

多商店渠道包的开发量有哪些?​

Answer

需要评估不同包名下各个 SDK 的适配情况:

  • Player Network SDK 已支持多商店渠道包适配,游戏开发只需编码一次,然后在打包时按照不同渠道的配置打包。
  • 米大师 SDK 需要接入不同渠道包,游戏开发需按照不同渠道调用支付 SDK,并在打包时按照不同渠道配置打包。
    请联系米大师团队确认细节。
  • 其他组件 SDK 请游戏联系相应团队。

已接入 Player Network SDK 的业务是否支持升级到多商店渠道包?是否会导致功能异常?​

Answer

支持未发布的游戏,清档后 CBT 上线前的数据避免账号问题。推荐使用此方法,在游戏刚开始接入时就考虑多商店渠道包。也支持已发布游戏在玩家无感知的情况下升级多商店渠道包。

如果使用此方案将有一定的功能限制,例如不支持 Unity SDK 和 Unreal Engine SDK 的 LoginWithConfirmCode 功能。

新业务是否从接入开始就应该考虑多商店渠道包?​

Answer

是的,建议业务在刚开始接入时就考虑多商店渠道包,直接采用多商店渠道包的方式接入以便后续支持账号同步。

是否有打包工具平台,可以支持多商店渠道打包?​

Answer

可以联络 [karenkzhao] 或者 Player Network 助手。