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.
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
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
-
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).
-
Apply for a common Player Network SDK Game ID for channel packages with different package names in the Player Network console.
-
Apply for one or more app IDs on the corresponding third-party platform, based on different login channels, and configure according to requirements.
Module - Channel Configuration description Login - Guest No additional configuration required; the same configuration can be used. Login - Apple Follow the guide, create multiple game apps with different app IDs under the same developer account, and complete each game's configuration. Login - Discord It is supported but not recommended to apply and use a single app ID, as each game requires an individual Discord REDIRECT_URL_SCHEMEconfiguration, 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 - Google Follow the guide, create multiple game apps with different app IDs under the same developer account, and complete each game's configuration. Login - Facebook Generally, 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 - LINE Only need one app ID; configure all channel package names and corresponding signatures in the LINE admin panel.
See Configure LINE Login for more informationLogin - 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 - X No additional configuration required; the same configuration can be used. Login - VK Follow 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. APAS No additional configuration required; use package names to distinguish data sources. Push - Firebase Apply for multiple apps in the same Firebase project.
See Firebase multi-store channel configuration for detailsUA - Adjust Apply for multiple app IDs under the same merchant.
See Adjust multi-store channel configuration for more informationUA - AppsFlyer Apply for multiple app IDs under the same merchant.
See AppsFlyer multi-store channel configuration for detailsUA - Facebook Apply for multiple app IDs under the same merchant.
See Facebook multi-store channel configuration for detailsUA - Firebase Apply for multiple apps in the same Firebase project.
See Firebase multi-store channel configuration for more informationNotification No additional configuration required; use the extended fields to distinguish channel packages Compliance No additional configuration required; unable to differentiate channel package configuration temporarily. Game Update No additional configuration required; use branches to differentiate channel packages. Server Navigation No additional configuration required; unable to differentiate channel package configuration temporarily. Customer Service No additional configuration required; distinguish channel packages by setting tags. Deep Link Configure deep links for multiple applications.
See iOS Universal Link and Android App Link for more information -
Configure the client according to different channel requirements and build multi-store channel packages.
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
| Module | Validation 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) |
| APAS | Test based on business needs |
| Push | In Firebase management end, distinguish channel packages to validate push function |
| Crash reporting | Crashes can be reported normally, distinguish crash information by package names |
| UA | Reported under corresponding app IDs with different package names |
| Announcements | Test based on business needs |
| Compliance | Test based on business needs |
| Game Update | Test based on business needs |
| Server Navigation | Test based on business needs |
| Customer Service | Filter by tag in AIHelp management end to view different package name complaints |
| Deep Link | Can 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 number | Channel name |
|---|---|
| 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 (Official Website) |
| 101 | Steam |
| 102 | Epic |
| 103 | PC (Google Play) |
| 1001 | Switch |
| 1002 | PS4 |
| 1003 | PS5 |
| 1004 | Xbox One |
| 1005 | Xbox 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_CHANNELconfiguration, default value is 100 - Console: Obtained from INTLConfig.ini using
CONSOLE_STORE_CHANNELconfiguration, the following are default values:
Switch: 1001
PS4: 1002
PS5: 1003
Xbox One: 1004
Xbox Series X|S: 1005
API
- Unity
- Unreal Engine
| API | Function Definition |
|---|---|
| GetStoreChannel | Get store channel configuration information |
| API | Function Definition |
|---|---|
| GetStoreChannel | Get store channel configuration information |
If you have any questions about the multi-store channel package solution, please see the FAQ