Skip to main content

Multi-store channel package solution

In general, the game channel tags written in specific areas of the APK might be overwritten during app store updates, causing package overwrite issues.For instance, the channel package on a player's Samsung phone gets overwritten to a Google Play channel package after being published via Google Play.

Due to inconsistent revenue sharing ratios across different channels, games must prevent channel packages from overwriting each other (package overwrite) to enhance channel quality.Hence, games can collaboratively address the issue of mutual package overwrite with the technical middle ground by adapting channel packages with different package names.The Player Network SDK currently offers support for multi-store channel packages, with the most crucial aspect being ensuring account interoperability across different channel packages.

info

The essence of multi-store channel packages lies in different package names. The Player Network SDK provides solutions through different package names, while other SDKs need to assess compatibility concerning different package names themselves. Considerations for account synchronization between multiple stores:

  • Version requirements: Player Network SDK v1.14.01 and above
  • Contact Player Network Assistant to enable multi-store channel solutions

Account interoperability plan

caution

When multiple channel packages are enabled for the Facebook channel, the channel UID will change (Player Network SDK will handle adaptation transparently). If you need to get the mapping between the previous UID and the Player Network SDK OpenID, see Query third-party channel account ID (Multi-merchant channel package) or contact the Player Network Assistant.

The essence of multi-store channel packages lies in different package names. The Player Network SDK provides solutions through different package names, while other SDKs need to assess compatibility concerning different package names themselves.
For account synchronization between multiple stores, access notes:

  • Some login channels generate different user IDs for the same user under different app IDs (e.g., WeChat and Facebook).
  • Most login channels verify the application's package names, and some channels only allow a single package name configuration (e.g., Apple and Google).
  • In multi-package scenarios, the Player Network SDK's account token length increases to accommodate application identification and other purposes.

Achieving account interoperability between channel packages with different package names presents two challenges:

  • Using the same Player Network SDK game ID for multiple channel packages (different game IDs generate different OpenIDs for the same user).
  • Customize account generation strategies according to different login channel characteristics.Currently, the confirmed supported channels are Apple, Discord, Google, Facebook, LINE, QQ (Player Network SDK not yet supported), X, VK, WeChat (Player Network SDK not yet supported), and Guest accounts.

Client access process

  1. Integrate versions of Player Network SDK supporting multi-store channel packages.

    • V1.15.02 supports custom accounts, Guest, Facebook, Google, Apple, Discord (single app ID), LINE, X.
    • V1.16 adds support for VK and Discord (multiple app IDs).
  2. Apply for a common Player Network SDK Game ID for channel packages with different package names in the Player Network console.

  3. Apply for one or more app IDs on the corresponding third-party platform, based on different login channels, and configure according to requirements.

    Module - ChannelConfiguration description
    Login - GuestNo additional configuration required; the same configuration can be used.
    Login - AppleFollow the guide, create multiple game apps with different app IDs under the same developer account, and complete each game's configuration.
    Login - DiscordIt is supported but not recommended to apply and use a single app ID, as each game requires an individual Discord REDIRECT_URL_SCHEME configuration, with up to 30 configs managed on the Discord side.If channel packages exceed 10, it is recommended to apply for multiple app IDs.
    For more information, see Configuring Discord Login.
    Login - GoogleFollow the guide, create multiple game apps with different app IDs under the same developer account, and complete each game's configuration.
    Login - FacebookGenerally, Player Network utilizes the userid provided by Facebook as user identity in social channels.After using the multi-store channel package feature, Player Network SDK utilizes both Facebook's token_for_business and userid as user identity in social channels.Following guidance, apply for multiple app IDs under the same Facebook merchant and complete configurations for each application.
    Login - LINEOnly need one app ID; configure all channel package names and corresponding signatures in the LINE admin panel.
    See Configure LINE Login for more information
    Login - QQ (Player Network SDK not yet supported)Follow the guide, create multiple game apps with different app IDs under the same developer account, and complete each game's configuration.
    Login - XNo additional configuration required; the same configuration can be used.
    Login - VKFollow the guide, create multiple game apps with different app IDs under the same developer account, and complete each game's configuration.
    Login - WeChat (Player Network SDK not yet supported)Follow the guide, create multiple game apps with different app IDs under the same developer account, and complete each game's configuration.
    APASNo additional configuration required; use package names to distinguish data sources.
    Push - FirebaseApply for multiple apps in the same Firebase project.
    See Firebase multi-store channel configuration for details
    UA - AdjustApply for multiple app IDs under the same merchant.
    See Adjust multi-store channel configuration for more information
    UA - AppsFlyerApply for multiple app IDs under the same merchant.
    See AppsFlyer multi-store channel configuration for details
    UA - FacebookApply for multiple app IDs under the same merchant.
    See Facebook multi-store channel configuration for details
    UA - FirebaseApply for multiple apps in the same Firebase project.
    See Firebase multi-store channel configuration for more information
    NotificationNo additional configuration required; use the extended fields to distinguish channel packages
    ComplianceNo additional configuration required; unable to differentiate channel package configuration temporarily.
    Game UpdateNo additional configuration required; use branches to differentiate channel packages.
    Server NavigationNo additional configuration required; unable to differentiate channel package configuration temporarily.
    Customer ServiceNo additional configuration required; distinguish channel packages by setting tags.
    Deep LinkConfigure deep links for multiple applications.
    See iOS Universal Link and Android App Link for more information
  4. Configure the client according to different channel requirements and build multi-store channel packages.

note

In the original released packages, all channel app IDs must use original configurations and cannot be updated.

Server access process

Involve multiple server interface changes by adding an additional service channel through the Player Network console.

Multi-store channel package construction

Due to the lengthy construction time of game packages, the technical middle ground will launch channel package construction tools on the Player Network to speed up game distribution and minimize manual errors.

Test cases

ModuleValidation content
Login
Friends
Guild
1. Multiple packages installed simultaneously on one device
2. Login works normally, same account has same openid
3. Friends and guild features work normally (sharing, messaging, getting friends list, app launch)
APASTest based on business needs
PushIn Firebase management end, distinguish channel packages to validate push function
Crash reportingCrashes can be reported normally, distinguish crash information by package names
UAReported under corresponding app IDs with different package names
AnnouncementsTest based on business needs
ComplianceTest based on business needs
Game UpdateTest based on business needs
Server NavigationTest based on business needs
Customer ServiceFilter by tag in AIHelp management end to view different package name complaints
Deep LinkCan launch different applications

Plan risk

Google, VK, Discord generate the same user IDs under different app IDs, but official documentation does not clearly specify.If the account generation rules of these channels change, it will impact account interoperability across different channel packages.

Channel packaging

As multi-channel packages become widely integrated, business needs to determine the channel number during payment, and invoke different payment SDKs via channel number.

For Google, the channel packaging tool will add channel number configurations in AndroidManifest.xml:

```xml
<?xml version="1.0" encoding="utf-8"?>
<manifest>
<application>
<meta-data
android:name="INTL_STORE_CHANNEL"
android:value="10" />
</application>
</manifest>
```

The value of the channel number is an int array, equipped with appropriate configurations:

Channel numberChannel name
0App store
1Google
2Samsung
3Huawei
4Xiaomi
5Oppo
6Vivo
7Transsion
8Onestore
9Aptoide
10Amazon
11Uptodown
12Apkpure
100PC (Official Website)
101Steam
102Epic
103PC (Google Play)
1001Switch
1002PS4
1003PS5
1004Xbox One
1005Xbox Series X\

For the GetStoreChannel API and collection of comm_c_store_channel data:

  • Android gets it from AndroidManifest.xml, default value 1 (Google)
  • iOS default value 0 (App store)
  • Windows fetches it from INTLConfig.ini via the WINDOWS_STORE_CHANNEL configuration, default value is 100
  • Console: Obtained from INTLConfig.ini using CONSOLE_STORE_CHANNEL configuration, the following are default values:
    Switch: 1001
    PS4: 1002
    PS5: 1003
    Xbox One: 1004
    Xbox Series X|S: 1005

API

APIFunction Definition
GetStoreChannelGet store channel configuration information
info

If you have any questions about the multi-store channel package solution, please see the FAQ