FAQ
If you encounter any problems that are not listed on this page, please contact the Player Network representative.
LEVEL INFINITE PASS
Will upgrading to LI PASS cause the loss of the original account or any other login problems?
No. During registration, LI PASS will check the email to see if it is already registered with a custom account, then automatically create a new OpenID or migrate an existing OpenID accordingly. LI PASS also supports rolling back to the original account to avoid account loss.
What is the user experience like during the upgrade to LI PASS? Will it confuse the player and result in user churn?
Players are guided with clear prompts during the upgrade, causing minimum fluctuation in user experiences.
Have there been any additional steps introduced, like the need for re-verifying age, that could potentially lead to user churn?
No steps were added. LI PASS comprises of a whole set of UI interactions such as account registration, login, and compliance services. It guarantees a consistent branding concept and reduces the cost of integration during game development. The compliance service supports the migration of states from minor age verification and cross-game verification, reducing user churn due to repeatedly requiring age and real-name to be verified.
How are LI PASS players (from other games) attracted to your game? Are there any compliance or reputational risks?
Games send marketing emails to LI PASS players through SmartLink or take up LI PASS website marketing resources to promote games and influence downloads. The LI PASS privacy agreement must state how player data will be used, and the legal team must approve of the privacy agreement to avoid compliance and reputational risks.
Does INTLConfig.ini
support configuring multilanguage URLs for the Terms of Service and Privacy Policy?
No, multilanguage is not supported in INTLConfig.ini
. This should be done from the HTML5 page.
How to change the country/region list for LI PASS?
The following steps shows how to change the country/region list for V1.06 and earlier. For V1.07 and later, see the UpdateCountryList
API for Unity SDK or Unreal Engine SDK for more information.
- Unity
- Unreal Engine
- Contact the LI PASS contact to raise a ticket to change the country/region list.
- Use the
AssetBundle
file provided by the developers to overwrite theAssetBundle
file in the{Project}\Assets\StreamingAssets\INTLGameNative\
directory.
Manually delete the following 32-bit and 64-bit LUAC files that have the same name as the LUA file.
{Project}\LevelInfinite\Content\INTLGameNative\LevelInfinite\Luac\MinorsCertificate\Region32.luac
{Project}\LevelInfinite\Content\INTLGameNative\LevelInfinite\Luac\MinorsCertificate\Region64.luac
Move
Region.lua
to the file location of the deleted LUAC files, that is,{Project}\LevelInfinite\Content\INTLGameNative\LevelInfinite\Luac\MinorsCertificate
.
How to resolve the compilation errors that occur after importing LI PASS into Unity?
Sample error:
Assets\LevelInfinite\Scripts\INTLGameNative\Scripts\LuaObject\Unity\INTLLua_UnityEngine_SystemInfo.cs(1836,16): error CS0619: 'SystemInfo.supportsGPUFence' is obsolete: 'SystemInfo.supportsGPUFence has been deprecated, use SystemInfo.supportsGraphicsFence instead (UnityUpgradable) -> supportsGraphicsFence'
This is because the LuaObject code generated by sLua does not match the current engine version and needs to be regenerated. From the Unity menu bar, select INTLLua > All > Clear > Make. For more information, see Import LI PASS resources.
Does LI PASS support customizing the compliance procedures?
No, LI PASS does not support customizing the compliance procedures, but compliance procedures for third-party channels can be customized.
After turning off hot updates for LI PASS, how can old resources be cleared to load new local resources?
For the mobile platform, the player has to be prompted to uninstall and reinstall the app, while for PC platform the Player Network SDK cache directory has to be cleared.
The default directory for the Player Network SDK cache data on PC will be %ProgramData%\INTL\{game id}\{application name}\
, if the SetDefaultUserStorage
API has not been invoked by the game. For example, for a game with game id = 11 and application name = INTLSDKDemo, the Player Network SDK cache data will be saved to the directory %ProgramData%\INTL\11\INTLSDKDemo\
.
For more information, see the SetDefaultUserStorage
API for Unity SDK or Unreal Engine SDK.
SetRewardExtraJson
failed with an input parameter parsing error. How is the SDK compatible with the input parameters?
Input parameters with no passed value or ""
have been made compatible on the SDK level, but validation for proper JSON format will have to added separately. Input parameters with improper JSON format can cause SDK parsing failure when passed.
When logging in to LI PASS on Windows, the language switches to Chinese automatically. When a numeric character is entered after a string of alphabets, the characters already entered are deleted.
This is due to the input method editor being switched to Chinese on the system, and is not a problem with the Player Network SDK component. When text in the password input box changes, any characters other than alphanumeric characters and supported symbols are excluded from the field.
Set the default input method language to English in the system settings.
When using the remote configuring function on Player Network Console, when will the configurations take effect in the client?
It is possible for some players to not receive the configuration updates immediately, due to problems with their network at that time.
For example, when a player installs the game on iOS for the first time, network authorization will be required and updates delivered before authorization often fail. Once the player authorizes the network, updates from the remote servers are pulled every time the game client is started, and will take effect at the next startup.
To avoid issues with configuration updates being delayed, games with multi-store packages are advised to complete configurations for the different stores during the packaging process.
Game initialization error GameNative sdk get config failed!, ret:1006, msg:gameid not valid!
GameNative permissions are required when integrating LI PASS for the first time, reach out to the Player Network representative for more information.
After importing LI PASS into Unreal Engine on Windows, calling ULevelInfiniteAPI::OpenLoginPanel
will trigger an error message in Editor.
Sample error:
[UE]: INTLGameNative::Lua error: ...elInfinite\Lua\Lua_unreal\AuthWindow\AuthWindowPanel.lua:565: attempt to index a nil value (field 'TextBlock_SendCodeButtonText')
LI PASS calls CloseLI
when exiting on Windows, but the API cannot be triggered in Editor. Therefore, CloseLI
has to be called before initializing Editor mode to clear up any residual data left by the previous Lua virtual machine.
"ret":1018,"msg":"sigkey not found"
This is due to the INTL_URL
and ACCOUNT_URL
environment information being inconsistent in the INTLConfig.ini config file. If the error persists even after modifying INTLConfig.ini
, try again after deleting the below cache files in the LOG path:
- ApasRemoteConfig
- IntlCustomConfig.tmp
- IntlRemoteConfig
- LipassRemoteConfig
How can the LuaProfiler
performance checking tool used by LI PASS be turned off?
Delete the contents under
LISluaProfile
from theLevelInfinite.uplugin
file, andLuaProfiler
will no longer run.
Delete the folder that corresponds to
LuaProfiler
.
Calling INTLAPI.SetAuthEncryptData
to start the game in debug mode causes Unity to crash.
Player Network SDK has to be initialized first before initializing LI PASS.
Authentication
Common solutions for login failures
Check your network status. Then, use the Player Network SDK logs to troubleshoot based on the system time.
In the log, find records with a
method_id
of 102 or 101.{"ret":0,"msg":"success","method_id":102,"ret_code":0,"ret_msg":"Success",...}
ret_code
indicates a client error, see Client Error Codes."ret_code":9999
indicates a third-party channel error, see Third-party Channel Error Codes."ret_code":5
indicates a backend error, see Back-end Error Codes.
Can account data be cleared?
For the testing environment, contact the Player Network representative to clear data.
Account data in the production environment cannot be cleared.
After linking an account, how can I get its information?
After logging in, call the QueryUserInfo
method. In the callback result, the BindList
in INTLAuthResult
gives the information of the linked account.
Can I link two accounts from the same channel? For example, can I link two Facebook accounts to a guest or link one Facebook account to another Facebook account?
No, you can only link one account of a given channel.
Failed to link, error code: retCode: 5
, thirdCode: 1403
.
This may occur for the following reasons:
- You have already linked an account from this channel.
- This account has already been linked.
- The linked account has been used to log in.
When you query information of a linked account, if there is no linked account channel information in the BindList
, the reason is either 2 or 3. Otherwise, the reason is 1.
Will the OpenID change after I link a guest account to a channel account?
No, the OpenID will not change.
Will guest accounts reset after I uninstall a game?
No, this will not happen when using SDK V1.7 or later versions. To reset the accounts, call the ResetGuest
method. When using V1.6 or earlier versions, guest accounts are reset when the game is uninstalled.
After successful authorization through a third-party channel, the linking failed and it became impossible to switch accounts or log out.
Clear the browser data, and then log out of the third-party channel account from the browser. Next, clear the app data and try to link again.
What is the intl_cluster
parameter in account deletion?
This is the base64URL
encoding of INTL_URL
in INTLConfig.ini
.
How can I clear the Android game cache?
The procedure is different for different phones. The following instruction takes the Google Pixel 4a model as an example.
- Turn on the phone and go to Settings.
- Select Storage > Internal Shared Storage > Games and then select the game for which you would like to clear the cached data.
- Tap Clear Storage and Clear Memory.
[Unity] The INTLAuthResult
obtained by MiniJson deserialization is empty
Check if the Managed Stripping Level under Unity's Project Setting is low. If using other levels, reach out to the Player Network representative.
Are the OpenIDs generated by the same third-party account in different environments the same?
Not the same, the generated OpenIDs are different between different environments.
Failed to auto login, error code: retCode: 5
, thirdCode: 11002
.
Auto login has failed because the login token has expired and has been removed (default 30 days after login). When the error message is received, games can bring up the login UI again to allow the player to relogin.
Problem with the password box merging with the background in the UI.
Set ForceVolatile
in UIRoot
.
Issues with web game configurations
Refer to the below image and confirm if the Website configuration has been filled up on Facebook App Dashboard. Only games with a web version should have this configuration and as such, delete this configuration if there is no web version. If configured incorrectly, the game might get banned by Facebook.
[iOS]The image shared to Facebook by the system is not the image from ImagePath
.
This is caused by the system sharing process on iOS. Because images are provided from both Link
and ImagePath
, iOS retrieves the image from Link
first.
[System]Text, links and images are shared at the same time, but the text is not shown.
When there is an image or link present, the text will not be displayed and will have to be entered manually.
[Discord]When querying friends, is the information being returned limited to friends playing the same game?
No, Discord returns platform friends, and not friends playing the same game.
[Discord]For multi-store packages, if the Discord appid
is different for each package, is the friend information returned by Discord also separated for each package?
No.
Why does login not trigger any callbacks?
There may be a problem with the callback logic:
When the interface is opened, listen to the method
AuthResultObserver
.- Unity
- Unreal Engine
public override void Start()
{
base.Start();
INTLAPI.AddAuthResultObserver(OnAuthResultEvent);
}For more information, see
AuthResultObserver
.void ULevelInfiniteWindow::OnOpen()
{
Super::OnOpen();
FocusSampleUI();
AuthResultObserver = UINTLSDKAPI::GetAuthResultObserver().AddUObject(this, &ULevelInfiniteWindow::OnAuthResult_Callback);
}For more information, see
AuthResultObserver
.Call the below interface when initializing:
- Unity
- Unreal Engine
public void OnLIPASSInitClick()
{
isVMStart = true;
var activityName = INTLAPI.GetConfig(LevelInfinite.DefaultActivityKey, "LILandscape");
ShowLogInNewLine(string.Format("Init:\nLI plugin ver:[{0}] \ndefault activity:[{1}]", LevelInfinite.Version, activityName));
LevelInfinite.InitLIP(font,LI_Sample_APP_VERSION);
LevelInfinite.SetUIRoot(uiRoot);
SetupCanvasResolution();
}void ULevelInfiniteWindow::LIInit()
{
FString Version = LI_Sample_APP_VERSION;
// FString Version = FApp::GetBuildVersion();
UE_LOG(LogTemp, Display, TEXT(">>>>> LIInit, Version:%s"), *Version);
//#if PLATFORM_WINDOWS || PLATFORM_ANDROID || PLATFORM_IOS
UE_LOG(LogTemp, Display, TEXT(">>>>> call ULevelInfiniteAPI::InitLIP"));
ULevelInfiniteAPI::InitLIP(GetGameInstance<UGameInstance>(), Version);
ULevelInfiniteAPI::SetUIRoot(INTLGN_LIActivity);
#if PLATFORM_ANDROID || PLATFORM_IOS
ULevelInfiniteAPI::SetUICustomScale(1.44f);
#elif PLATFORM_WINDOWS
ULevelInfiniteAPI::SetUICustomScale(1.0f);
#endif
//#endif
}
Login errors 5_1401
and 5_30004
.
- The LIP backend configuration is missing, reach out to the Player Network representative.
- Check the compliance configuration and the compliance interface switches.
Guest login failed, error code: retCode: 5
, thirdCode: 1104
.
The Login and Account Services of the Player Network have not enabled guest login. Go to Player Network to enable guest login.
After linking an account, bindlist
returns blank and does not have any information about the linked account.
You need to call QueryUserInfo
to return bindlist
first, for auto-login to contain bindlist
.
How do I reset guest accounts?
When using SDK V1.7 or later versions, call the ResetGuest
method to reset the accounts. When using V1.6 or earlier versions, guest accounts are reset when the game is uninstalled.
Crash during guest login.
LI PASS V1.16 and later:
Check whether INTLAPI.InitLIP()
has been called to initialize the SDK.
LI PASS V1.06 - V1.15:
Check whether INTLAPI.InitLI()
has been called to initialize the SDK.
LI PASS V1.05 and earlier:
Check whether INTLAPI.Init()
has been called to initialize the SDK.
Login failed, retCode:5
, msg:CURLCode for more details
.
Check if the INTLSDK.bundle
was read during Unity packaging, or if UnityFramework
is missing the INTLSDK.bundle
.
Why is the same guest OpenID used on multiple iPhones?
The OpenID is synced by iCloud. Check if multiple iPhones are logged in to the same iCloud account with keychain enabled.
Guest login on iOS device A generates a certain UID, the same UID is then shown through guest login on iOS device B.
Secure keychain syncing may have been enabled on iOS, causing multiple devices to have the same device ID or OpenID.
The device ID information is stored within the keychain data on iOS, which is read only by default and Player Network SDK will not modify or delete this data. If multiple devices are signed in to the same Apple account with keychain items enabled for iCloud Backup, iOS will synchronize the OpenID to all devices. As such, it is possible for multiple devices to have the same device ID, and the same OpenID for guest login.
If the game has the kick-out function enabled, guest accounts may get kicked out as a result. Players may disable Keychain Sharing from iCloud Backup, then reinstall the app to resolve this issue.
For more information, see Secure keychain syncing.
Login failed on PC, network request API returns error code: ret:77
, msg:CURLCode for more details
.
While libcurl
on Windows was upgraded in Player Network SDK V1.21.02, the changes had not been synchronized to some configurations from earlier versions. This causes problems when reading the certificate path on non-UTF8 Windows systems.
Either upgrade Player Network SDK to V1.22.00 or later, or replace the INTLFoundation.dll
file. For more information, reach out to the Player Network representative.
Login failed,network request API returns error code: ret:28
, msg:the timeout time was reached
.
Try the following troubleshooting steps:
- Check the network connection by making sure the network is stable, or try restarting the router.
- Clear browser cache and cookies, or try using incognito mode.
- Try using a different browser or device.
- Turn off VPN and try again if currently connected to one.
- Check if the server is online and the service is running properly, such as by verifying the server status overview.
- Try logging in again later, as a high server load may sometimes cause timeout issues.
Apple
Apple error codes
For more information on Apple's error codes, see ASAuthorizationError
For a list of all Channel Error Codes, see Channel Error Codes.
Login failed, error code: 4
- Check if there is any
INTLSDK.bundle
inUnityFramework
. - Check if there is any
INTLSDK.bundle
inUnity-iPhone
.
Login failed, error code: retCode: 5
, thirdCode: 1202
Check if the channel configuration BundleID
in Player Network is correct. The BundleID
format should be similar to com.company.name
.
Login failed, error code: retCode: 5
, thirdCode: 1006
, msg:invalid gameid or channelid
- Check if the SDK environment configuration is correct in the iOS INTLConfig.ini.
- Check if the Login and Account Services channel information is correctly configured in Player Network.
Does Apple login support landscape orientation or auto screen rotation?
Apple SDK does not support landscape orientation and auto screen rotation.
Where can I obtain the Key ID
and PrivateKey
?
After registering the project's distribution certificate and developer certificate within KeyStore, contact O2000 (Oteam Integrated Technical Support) to activate AppleID
as a login method for the app.
After the process is complete, refresh the certificates in the KeyStore, then configure the Player Network backend using the Key ID
and PrivateKey
obtained from O2000.
Login failed, error code: retCode: 9999
, thirdCode: 1000
, msg: Error Domain=com.apple.AuthenticationServices.AuthorizationError
Troubleshooting steps:
- Check that
com.apple.developer.applesignin
in theEntitlements
file is configured correctly; - Check the signature configurations in the
provision
file.
DMM
DMM Error Codes
- Unity
- Unreal Engine
void CheckThirdCode(INTLAuthResult result)
{
if(result.RetCode == 9999)
{
switch(result.ThirdCode):
{
case 2000:
// The logged-in user has no profile registered.
break;
case 300:
// Failed to get the DMM member ID
break;
case 2002:
// User who withdraws from membership
break;
default:
// Unknown error code
break;
}
}
}
void CheckThirdCode(FINTLAuthResult result)
{
if(result.RetCode == 9999)
{
switch(result.ThirdCode):
{
case 2000:
// The logged-in user has no profile registered.
break;
case 300:
// Failed to get the DMM member ID
break;
case 2002:
// User who withdraws from membership
break;
default:
// Unknown error code
break;
}
}
}
Error Code | Error Information |
---|---|
300 | Failed to get the DMM member ID |
400 | Bad request |
403 | OAuth authentication failed |
500 | DMM game platform error |
1000 | Failed to get the app information |
2000 | The logged in user has no profile registered. |
2001 | User already in blocklist |
2002 | DMM account deleted |
Epic
Login error 9999_5, msg: EOS_AccessDenied
.
This is due to a lack of permissions, ensure that the account being used has been added as a member in Epic Developer Portal, with developer role permissions granted.
For more information, see Epic Organization Page Tabs.
Facebook
Facebook Error Codes
For more information on Facebook Error Codes, see Facebook Error Codes.
For a list of all Channel Error Codes, see Channel Error Codes.
Facebook login failed, no timeout, error code returned: 6
(timeout)
Check to see if Facebook is configured in the INTLConfig.ini
LIFECYCLE
. For more information, see INTLConfig.ini Configuration.
No avatar returned after Facebook login.
If the Facebook app type is Gaming Service, update to Player Network SDK V1.7 or later versions to return avatars.
Facebook login failed, error code: retCode: 5
,thirdCode: 1202
.
Player Network configuration error. To ensure the relevant parameters are aligned, see Configure Player Network Backend.
Facebook login failed, error message: Key Hashes not configured or not matched
.
Facebook console configuration error. To ensure the Key Hashes configuration is correct, see Configure the App (iOS) / Configure the App (Android).
Facebook login failed, SERVER_ERROR: [code] 1675030 [message]: Error during query execution. [extra]:
Check if the account is added to the Facebook login allowlist for the test environment. To set allowlist:
On the Server Editor page, click Whitelist.
In the Select Whitelist popup, select the allowlist for the area.
Configure one allowlist for each area. This allowlist is used throughout the area.
On the Whitelist page, add, delete, and edit the allowlist content.
The Facebook login function has disabled popup prompts: To ensure account security, the browser-embedded Facebook login function has been disabled.
Install the Facebook app and log in. If users need to log in from their browser, Facebook requires users to install a browser that supports custom tabs, such as Chrome.
How do I change the app name displayed on the Facebook consent screen?
Change it on the Facebook Apps Configurations page.
Facebook login failed with an "App not active" error.
If the game is ready to be released for all the players, change the App Mode from Development to Live. For more information, see Publish Checklist - Facebook.
If the game is going through internal testing, add the required users as Testers. For more infomation, see Getting Started Facebook - Add user permissions.
Facebook login failed, web login success with error "Invalid Claims" reported.
- Ensure that the following required fields have been filled up.
- Check the
appid
for errors and spaces.
How do I generate a Key Hash for Facebook?
When your app is released to the store, the integration with Facebook may not work properly unless a release key hash is generated and added to the Android settings within your Facebook app ID. This guarantees that the exchange of information between Facebook and your app is authenticated.
For more information, see Create a Release Key Hash.
Obtain App Signing Key Hash from Google Play
While Google's Play App Signing does not provide a keystore, configuration on Facebook will require a keystore to generate a key hash. Follow the below steps to get the hash value required by Facebook:
Open Google Play Console and select Release > Setup > App integrity.
Under the App signing key certificate section, copy the SHA-1 value.
Open Terminal/Bash on Windows (such as Git Bash) and enter the following command to get the hash value.
echo {INTL_SHA-1_KEY} | sed s/\\://g | xxd -r -p | base64
Obtain APK Key Hash from the Keystore
cautionAPK Key Hash is used only for APK testing. Use Google Play App Signing Key Hash instead for the public release.
- Mac
- Windows
To generate a hash for the keystore, run the following command:
keytool -list -printcert -jarfile [path_to_your_apk] | grep "SHA1: " | cut -d " " -f 3 | xxd -r -p | openssl base64
For Windows, you need the following:
- Key and Certificate Management Tool (keytool) from the Java Development Kit
- OpenSSL for Windows Library from the Google Code Archive
To generate a hash for the keystore, run the following command in a command prompt in the Java SDK folder, substituting the
KEY_ALIAS
andKEY_PATH
to the keystore accordingly:keytool -exportcert -alias <KEY_ALIAS> -keystore <KEY_PATH> | PATH_TO_OPENSSL_LIBRARY\bin\openssl sha1 -binary | PATH_TO_OPENSSL_LIBRARY\bin\openssl base64
Make sure to use the password set when you first created the key.
Obtain APK Key Hash from APK
cautionAPK Key Hash is used only for APK testing. Use Google Play App Signing Key Hash instead for the public release.
- Mac
- Windows
To generate a hash for the keystore, run the following command, substituting the
KEY_ALIAS
andKEY_PATH
to the keystore accordingly:keytool -exportcert -alias <KEY_ALIAS> -keystore <KEY_PATH> | PATH_TO_OPENSSL_LIBRARY\bin\openssl sha1 -binary | PATH_TO_OPENSSL_LIBRARY\bin\openssl base64
For Windows, you need the following:
- Key and Certificate Management Tool (keytool) from the Java Development Kit
- OpenSSL for Windows Library from the Google Code Archive
- Gitbash
To generate a hash for the keystore, use Gitbash to run the following command in a command prompt in the Java SDK folder:
keytool -list -printcert -jarfile [path_to_your_apk] | grep -Po "(?<=SHA1:) .*" | xxd -r -p | openssl base64
Make sure to use the password set when you first created the key.
Copy the Key Hash to Facebook
This command should generate a 28-character string. Copy and paste the key hash into the Android settings within your Facebook app ID.
Check that the Android settings within your Facebook app ID also contains the correct package name and main activity class for your Android package.
"Login Error" shown when logging in on Facebook.
keyhash
has not been configured correctly.
- Check if
keyhash
has been configured on the Facebook app dashboard. - Confirm if
keyhash
has been calculated correctly. - If Google Store was involved in the generation of
keyhash
, also update the signing key on Google.
Facebook APP login error 9999-309
(iOS) and 9999 -1
(Android).
Facebook security verification failed to return Invalid ID token from login response
due to a custom event changed on the phone. Find the date and time settings on your phone and turn on automatic time setting.
Links can be shared on Facebook for iOS successfully, but images cannot be shared and cannot be seen in profile pages on the Facebook app.
Confirm that the app name configured on the Facebook App Dashboard is exactly the same as
FACEBOOK_DISPLAYNAME
inINTLConfig.ini
.While Facebook does not provide official requirements for app names, avoid the use of special characters.
Failed to share image to Facebook channel. Errors reported: "ret":-1, "msg":"Need Messenger installed or login!", "method_id":201, "ret_code":15, "ret_msg":"Need install app"
Check that the Facebook app has been installed.
Install Messenger, open Messenger and confirm that login is successful.
Check the file declarations within the
AndroidManifest.xml
file that is inside the installation package. If declarations cannot be found, it is not possible to determine whether the system has the Facebook app installed.Use the function on demo to test if the app is installed on the phone:
- Go to Tool > isAppInstalled.
- Enter the package name for channel, leaving extraJson blank.
For example, to test for Facebook, enter:com.facebook.katan
.
How do I change the app name on the Facebook login consent page for iOS?
Facebook iOS SDK uses ASWebAuthenticationSession
to implement authentication.
The settings on Apple's official ASWebAuthenticationSession
reads the TargetName
of an Xcode project for display, instead of the CFBundleName/CFBundleDisplayName
.
As a result, the Target
name of the Xcode project will have to be changed in order to adjust the app name being displayed.
For more information regarding ASWebAuthenticationSession
, see ASWebAuthenticationSession
and SFAuthenticationSession
use the target name instead of bundle display name.
Things to note about switching the Facebook app type from Game to Gaming Services
- Login permission changes, need to parse the default permission
gaming_profile
. - The Facebook domain to host APIs needs to be updated. Inform the Player Network backend engineer [v_fyjzhan] to update the respective Facebook domain in Player Network SDK.
Facebook invitation (GameRequest) precautions
- Avoid sending invitations frequently. Otherwise, recipients may fail to receive the invitation.
- There is some latency for invitations.
- Facebook App Console can block messages.
- If the Facebook app is not released, only those with testing permissions can receive invitations.
- During testing, use test accounts as much as possible to avoid the above problems.
Facebook app is not opened for authentication during Facebook login
Disabling App Tracking Transparency (ATT) on a device running iOS 17 or above causes Limited Login to be triggered on Facebook, where app switching is not supported. In this case, use WebView for authentication instead.
The Facebook Android SDK incorrectly shows as V0.x.x in Facebook App Dashboard, being marked as "Needs upgrade".
The version number for Facebook Android SDK V16.x.x may be displayed incorrectly in Facebook App Dashboard. This may be resolved by replacing the Gradle version.
Since V1.21.00, Player Network SDK uses Facebook Android SDK V16.1.3, and may be affected by the issue, see SDK Version Compatibility for version details.
For more information regarding this error, see Issue #1191 from facebook-android-sdk on Github.
The error "Logging in to this app with your Facebook account isn't allowed." is shown when logging in to Facebook.
This error may occur if Instant Games have been added to your Meta for Developers account. Remove Instant Games first, then try logging in again.
Meta for Developers prompts that the version of the Facebook Graph API has been deprecated and has to be updated to V15.0 or later.
Facebook Graph API has been updated to V19.0 in the backend of Player Network SDK, projects can disregard this prompt.
Game Center
Game Center Error Codes
For more information on error codes for the GameKit error domain, see GKError.Code.
- Unity
- Unreal Engine
void CheckThirdCode(INTLAuthResult result)
{
if(result.RetCode == 9999)
{
switch(result.ThirdCode):
{
case 6:
//GKError.Code.notAuthenticated: The system can’t complete the requested operation because the system hasn’t authorized the player.
break;
case 15:
//GKError.Code.gameUnrecognized: The system can’t complete the requested operation because Game Center doesn’t recognize the app.
break;
case 3:
//GKError.Code.communicationsFailure: The system can’t complete the requested operation due to an error communicating with the server.
break;
default:
// Unknown error code
break;
}
}
}
void CheckThirdCode(FINTLAuthResult result)
{
if(result.RetCode == 9999)
{
switch(result.ThirdCode):
{
case 6:
//GKError.Code.notAuthenticated: The system can’t complete the requested operation because the system hasn’t authorized the player.
break;
case 15:
//GKError.Code.gameUnrecognized: The system can’t complete the requested operation because Game Center doesn’t recognize the app.
break;
case 3:
//GKError.Code.communicationsFailure: The system can’t complete the requested operation due to an error communicating with the server.
break;
default:
// Unknown error code
break;
}
}
}
Why is there no callback after Game Center Login or Linking?
Game Center specifies that if a user cancels the login or linking operation three times, it will not be able to open the Game Center login interface.
A callback is only returned on the first request when the game process calls the Game Center login or linking API. Therefore, when users are unable to open the Game Center login box within the game, they need to go back to Settings > Game Center to log in to Game Center manually.
Garena
Login failed, response timed out.
Check if the requestExchangeFacebookToken
was returned successfully in the log. If the return failed, contact the person in charge of Garena.
Login timeout occurs frequently. How do I modify the timeout interval?
The default login timeout interval is 30 seconds. Use SDK_AUTH_OVERTIME
and WEB_AUTH_OVERTIME
in INTLConfig.ini to set the timeout interval.
It is recommended to configure both at the same time as SDK_AUTH_OVERTIME
is associated with application login while WEB_AUTH_OVERTIME
is associated with web login.
Google
Google Error Codes
- Unity
- Unreal Engine
void CheckThirdCode(INTLAuthResult result)
{
if(result.RetCode == 9999)
{
switch(result.ThirdCode):
{
case 9 :
//The version of the Google Play services installed on this device is not authentic.
break;
case 3:
//The installed version of Google Play services has been disabled on this device
break;
case 10;
//The application is misconfigured. This error is not recoverable and will be treated as fatal
break;
case 7:
//The application is misconfigured. This error is not recoverable and will be treated as fatal
break;
case 16:
//One of the API components you attempted to connect to is not available. The API will not work on this device, your app or this account, and updating Google Play services will not likely solve the problem
break;
default:
// Google handle error
break;
}
}
}
void CheckThirdCode(FINTLAuthResult result)
{
if(result.RetCode == 9999)
{
switch(result.ThirdCode):
{
case 9 :
//The version of the Google Play services installed on this device is not authentic.
break;
case 3:
//The installed version of Google Play services has been disabled on this device
break;
case 10;
//The application is misconfigured. This error is not recoverable and will be treated as fatal
break;
case 7:
//The application is misconfigured. This error is not recoverable and will be treated as fatal
break;
case 16:
//One of the API components you attempted to connect to is not available. The API will not work on this device, your app or this account, and updating Google Play services will not likely solve the problem
break;
default:
// Google handle error
break;
}
}
}
ConnectionResult
Error code | Error Information |
---|---|
5 | Invalid account |
7 | Network error |
10 | Configuration error |
13 | Canceled by user |
16 | The requested API is disabled. |
For more information, see ConnectionResult.
GamesActivityResultCodes
Error Code | Error Information |
---|---|
10001 | Reconnect to GoogleApiClient. |
10002 | Login failed. |
10003 | The user is not authorized for the game. |
10004 | Game Service configuration error |
10006 | Server request failed due to a network error. |
For more information, see GamesActivityResultCodes.
For a list of all Channel Error Codes, see Channel Error Codes.
Configuration Crash
A crash will occur when the App ID and Server Client Key are not properly configured:
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)
...
GMS Update and Version Compatibility
Early versions of Google Play Services cannot be used together due to version compatibility issues. Currently, Player Network SDK supports GMS version 16.0.1 and Firebase version 16.0.5.
DEVELOPER_ERROR Error
Do not use the Android client key here, or else the DEVELOPER_ERROR will occur. Make sure that the signature used during debugging is consistent with the app signature uploaded to the Google console.
GOOGLE_CLIENT_KEY
is the web client key required by Player Network SDK.
Cannot log in to Google, returns third-party error code 10
The third-party error code 10
indicates a DEVELOPER_ERROR
, and may have been caused by the below problems.
Problems with configuration:
Check if the Google configuration and Player Network configuration are aligned.
Check the INTLConfig.ini to see if the
GOOGLE_CLIENT_KEY_ANDROID
contains the Web Client ID for the Google console.Check if the install package name and
SHA-1
are aligned with the Google configuration.
Problems with login configuration due to re-signing of the Android Google Store AAB package:
When installing from the store, due to re-signature being enabled in Google Play's signature configuration, the actual downloaded AAB package signature may not match the original
SHA-1
setting. The signature configuration in Google Play must be set to match the signature of the package when it was developed.- To update Google Play's App signing key certificate, select Setup > App integrity on the left
- Select App signing
- Click Request key upgrade
- Select Upload a new app signing key from Java keystore
- Follow the steps given by Google, download the tool to generate the key and upload the generated
ZIP key
file - After uploading, click Upgrade > Upgrade Google signing key certificate at the bottom right corner
Is the avatar returned for Google account login?
Player Network SDK will return the Google avatar. See PictureUrl
from the AuthResult
API for Unity SDK and Unreal Engine SDK.
Google cannot log in, after selecting the email, the popup login interface displays "Loading" until login times out.
On the Google API console, set "Publishing status" as "PUBLISH APP". For more information, see Production Environment Configuration.
The app suddenly closes upon iOS launches
Go to Plist Configuration and check if the GoogleService-Info.plist
has been configured.
Google login authorization error (403)
The Google API console has not authorized it. The app is still under development. Add test users on the Google API console or set "Publishing status" as "PUBLISH APP".
On an Android device, the authorization interface is not opened when I tap Google Login, error code: ret_code:9999
- Check if your phone can access the Internet.
- Check if your phone can access the international (non-Chinese Mainland) website.
- Check if you have correctly installed GMS. See How to Install GMS.
On an iOS device, I cannot log in via Google, error message: You must specify clientID for GIDSignIn
Check if the main target has INTLSDK.bundle
. Manually add if it is missing.
On an iOS device, I cannot log in via Google, error message: Audience is not a valid client ID
.
Check if the GOOGLE_CLIENT_KEY_ANDROID
configuration in INTLConfig.ini
is correct. Complete iOS configuration according to the instructions in INTLConfig.ini Configuration.
How to change the app name displayed on the Google Web consent screen?
Change it on the OAuth Consent screen page's [Authorised domain].
14. Google login authorization Error Error 400: redirect_uri_mismatch
It may be that the redirection URI
in your application Settings does not match the authorization redirection URI
, or that the URI
you are using is not the URI
you specified for the client ID
in the Google API Console
.
Google login error 1281
The idtoken
has expired. idtoken
is obtained after logging in to Google, which contains information about the token's expiration date.
If the phone's local time is set to a past date, logging into Google after about an hour later will not refresh the token. If the token is requested again, a 1281
error will occur.
Kakao
Kakao Error Codes
For more information on Kakao Error Codes, see Kakao Error Codes.
For a list of all Channel Error Codes, see Channel Error Codes.
Kakao failed to link, with a KaKaoAuth checkIsSdkStartStatus sdk start failed
error.
The Kakao app needs to be running in the background during the linking process. Open the Kakao app, then try linking again.
LINE
LINE Error Codes
For more information on LINE Error Codes, see LINE iOS Error Codes and LINE Android Error Codes
For a list of all Channel Error Codes, see Channel Error Codes.
LINE login interface error 400
- Check the adaptation to Swift-LINESDK.
- Check if the configuration file, package name, and
LINE_CHANNEL_ID
are correctly entered. - Check the
INTLLINEKit.projmods
file. - Check the callback URL for LINE Developers Console.
LINE login, cannot redirect back to the game from Webview or LINE app after tapping Allow.
In Player Network SDK V1.10 AndroidManifest
file, if the Android:taskaffinity
property value is blank, you will be unable to redirect after LINE WebView login.
Delete this code to solve the LINE login problem.
The LINE login interface has no icons.
Go to the LINE platform to set app icons.
LINE login prompts Error, cannot process properly
.
This may be caused by a network issue, try again using a different network environment.
LINE login failed, error code: 3016,the error message is similar to CryptoError: Verification failed for key: Swift.KeyPath<LINESDK.JWT.Payload, Swift.Optional<Foundation.Date>>. Got: 2022-04-19 12:15:12 +0000, expected earlier than 2022-04-19 12:10:47 +0000
This error occurs when users modify their device's time.
7. The LINE web page cannot be accessed in iOS China version, and there is no callback after opening LINE and logging in
This is a known issue with LINE SDK.
How to change the app name displayed on the LINE consent screen?
Change it on the LINE App Basic Settings page.
PS5
Sony has three environments dev, QA, and product. Which environment does the Player Network SDK use? If currently the game is in the dev environment, do you need to make relevant adjustments to the configuration of the Player Network SDK when reviewing and releasing it later?
Sony's environment can be switched on the dev engine. The SDK will automatically identify the Sony environment and inform the SDK Server, and the SDK server will access Sony's different servers according to the environment ID. Regardless of the environment, when switching from dev to QA to the production environment, Player Network SDK can switch automatically switch without additional settings.
QQ
Login error "ret":1204, "msg":"ret[-3], msg[app has no privilege to use this api]
This is due to a lack of login permissions for APIs called by QQ, see the section Apply for OpenAPI is_login permissions for QQ Connect in the portion regarding QQ Connect under Prerequisites, located within the tutorials to Set up QQ for iOS or Android for more details.
Steam
Login failed, error code: 5, third error code: 1206
This is due to Steam being disconnected. Open Steam and reconnect.
Steam login failed in UE Editor
Place the steam_appid.txt
file in the same directory where UE4Editor.exe
is run from, the yourEngine/Engine/Binaries/Win64
directory.
How do I locate the program entry point of the Steam login error from the editor?
Place the steam_appid.txt
file in the same directory where UE4Editor.exe
is run from, the yourEngine/Engine/Binaries/Win64
directory. If the application has its own ID, replace the ID here, else use 480
.
ret:17, retMsg "SteamAPI_Init failed. Please check your Steam client status"
Windows administrator privileges may be required when running a game on Steam, therefore it is possible for accounts without administrator privileges to encounter errors when initializing Steam. As the Steam initialization API does not distinguish between error categories, try the below steps to troubleshoot:
- Confirm that the Steam client has been launched and logged in.
- Confirm that the Windows account used has administrator privileges.
- Reinstall the Steam client, or try using a different device.
- Visit Steam Community to learn more about ways to troubleshoot.
ret:33, retMsg "Please launch app by Steam Client"
The game was not started normally from the Steam client. Delete the steam_appid.txt
file inside the executable directory of the game and try again.
ret:35, retMsg "STEAM_USER_NOT_LOGINED"
The player is not logged in to the Steam client. Check if the player has successfully logged in to the Steam client, and is currently online.
Network error, error code: 5, third error code: 1200
Connection timed out from Player Network backend to Steam backend, contact the Player Network representative for details.
Twitter
Twitter Error Codes
For more information on Twitter Error codes, see Twitter Response Codes and Errors.
For a list of all Channel Error Codes, see Channel Error Codes.
- Unity
- Unreal Engine
void CheckThirdCode(INTLAuthResult result)
{
if(result.RetCode == 9999)
{
switch(result.ThirdCode):
{
case 401:
/*
Unauthorized: There was a problem authenticating your request.
This could be due to missing or incorrect authentication credentials.
*/
break;
case 500:
/*
Internal Server Error: Something is broken.
This is usually a temporary error, for example in a high load situation or if an endpoint is temporarily having issues.
*/
break;
case 503:
// Service Unavailable: The Twitter servers are up, but overloaded with requests. Try again later.
break;
default:
// Unknown error code
break;
}
}
}
void CheckThirdCode(FINTLAuthResult result)
{
if(result.RetCode == 9999)
{
switch(result.ThirdCode):
{
case 401:
/*
Unauthorized: There was a problem authenticating your request.
This could be due to missing or incorrect authentication credentials.
*/
break;
case 500:
/*
Internal Server Error: Something is broken.
This is usually a temporary error, for example in a high load situation or if an endpoint is temporarily having issues.
*/
break;
case 503:
// Service Unavailable: The Twitter servers are up, but overloaded with requests. Try again later.
break;
default:
// Unknown error code
break;
}
}
}
On an Android device, if a user logs in to Twitter, logs out, and then clicks Register when logging in the next time, a network error is reported.
This occurs because the cookies of https://.api.twitter
have not been cleared. On Android devices, you can only clear cookies through the RemoveAllCookie
method, but this will remove cookie information for all websites. This issue is currently not resolved.
Twitter login interface constantly displays "Loading".
- Check if a callback allowlist has been configured on the Twitter console.
- Check if the Player Network
key
andsecret
are correct.
How to change the app name displayed on the Twitter consent screen?
Change it on the Twitter App Configuration page.
Twitter limits sharing when a user shares too many times in a short period of time. Confirm in the log whether the sharing API is restricted. If the log shows Twitter API error: Your account is suspended and is not permitted to access this feature (code 64)
, the API is restricted.
On an iOS device, versions earlier than Player Network SDK V1.18 do not support switching Twitter accounts and users can only use the first sharing account to share. To switch accounts, users need to reinstall the game package.
Twitter iOS sharing error ret_code: 9999
, third_code: 32
The login status of the Twitter SDK is invalid. This problem has been fixed after V1.16.05. If this problem still exists after V1.16.05, configure {"login_first":1}
in extra_json. For more information, see Twitter Friend KnownIssues.
Unable to log in when 2FA is enabled on Twitter.
If 2FA is enabled on Twitter when logging in to the game with Twitter, the login may fail and the player is redirected to the main Twitter website. The player is advised to temporarily disable 2FA first, log in to the game, then re-enable 2FA again for added security.
Ubisoft
Ubisoft Error Codes
- Unity
- Unreal Engine
void CheckThirdCode(INTLAuthResult result)
{
if(result.RetCode == 9999)
{
switch(result.ThirdCode):
{
case 0:
//Successful
break;
case -4:
//Failed to request Uplay Roaming Profile
break;
case -6:
//Failed to create Roaming Profile
break;
case -1:
//Failed to create Guest user
break;
case -8:
//Failed to create Roaming session (Flow2 login)
break;
default:
// Unknown error code
break;
}
}
}
void CheckThirdCode(FINTLAuthResult result)
{
if(result.RetCode == 9999)
{
switch(result.ThirdCode):
{
case 0:
//Successful
break;
case -4:
//Failed to request Uplay Roaming Profile
break;
case -6:
//Failed to create Roaming Profile
break;
case -1:
//Failed to create Guest user
break;
case -8:
//Failed to create Roaming session (Flow2 login)
break;
default:
// Unknown error code
break;
}
}
}
Error code | Description |
---|---|
0 | Success |
-1 | Failed to create Guest user |
-2 | Failed to create Guest session |
-3 | Failed to create Uplay Roaming session |
-4 | Failed to request Uplay Roaming Profile |
-5 | Failed to create Roaming user |
-6 | Failed to create Roaming Profile |
-7 | Failed to create Roaming session (Flow1 first login) |
-8 | Failed to create Roaming session (Flow2 login) |
-9 | Failed to create Roaming session (Flow3 automatic login) |
-10 | Failed to rename user |
-11 | No user data for automatic login |
-12 | Invalid user for auto login |
-13 | Invalid linking parameters |
-14 | Guest Facade is null or session is invalid |
-15 | Uplay Facade is null or session is invalid |
-17 | Login cancellation |
-18 | link cancellation |
-10000 | When players have successfully logged in through WebAuth to link a guest account to their Ubisoft account, the ubiserver requested by the ubiservicesSDK returns that the Ubisoft account can be linked. |
-10001 | When players have successfully logged in through WebAuth to link a guest account to their Ubisoft account, the ubiserver requested by the ubiservicesSDK returns that the Ubisoft account cannot be linked. |
-20000 | When players have successfully logged in through Ubisoft Connect, ubiservicesSDK returns that the device has a local guest account and prompts the player whether to link the existing guest account. |
WeChat
iOS Login Error 9999_9999,"call WX api sendReq return failure"
Check the WECHAT_UNIVERSAL_LINK_IOS
configuration in the local INTLConfig.ini
file.
Social
Notice
Why can't I pull notices?
- Check if the RequestNoticeData API is called.
- Check that the notice is currently valid.
- Check if the time zone is set correctly.
- Check if the language parameters are valid.
- Check if the region parameters are valid.
- Check if the environment in the notice configuration is consistent with the client (testing or production environment).
After I modify the notice, the old version is still pulled.
Restart the game or modify the NOTICE_INTERVAL in the cache configuration to clear cached notices.
I cannot get Portuguese notices.
The correct language type parameter for Portuguese is pt
. For more information, see Language Type Definitions.
There is no callback when adding or removing notices.
There is no callback when adding or removing notices. You need to get notices manually. Users are not proactively notified like push notifications.
Which notice field is used to differentiate custom values?
This is performed through the ExtraData
field in INTLNoticeInfo
.
What is the correlation between notice data acquisition parameters and notice callback information?
The callback information INTLNoticeInfo
is returned by the request parameter region
. The notice's content list ContentList
is returned by the request parameter langType
.
Example:
- The notice is only configured in Portuguese (pt). However, when English (en) is used to pull the notice,
INTLNoticeInfo
is pulled, but theContentList
is blank. - The language type of notice configuration information is English (en), but the information input is in Portuguese (pt). If you specify
en
while getting the notice, the results will include both the English (en) and Portuguese (pt) notices.
Why can't I receive the notice PictureList
?
INTLNoticeInfo
and INTLNoticeContent
both contain the PictureList
. Check if the PictureList
is configured in the correct data structure.
What is the difference between notices, popups, and news in Player Network?
News is not pulled through the SDK. Popups and notices are the same, so players only need to look at notices.
Push notification
Why can't I receive push notifications?
- Check if the
GoogleService-Info.plist
used in the console configuration, certificate, and packaging is consistent with thegoogle-services.json
file in the backend. - Check your network connection and make sure your phone can access Google services.
- iOS:
- Make sure the
APNs
certificate is configured for theFirebase
project. - Add
Push Notification capability
in the iOS project. - For iOS projects exported by Unity,
UNITY_USES_REMOTE_NOTIFICATIONS
is 1. - Whether to
RegisterPush
, whether the user selects "Yes" in the popup push authorization window.
- Make sure the
- Android:
- Configure the
keystore
fingerprint for the Firebase project. - Whether the phone has installed Google Mobile Service (GMS)
- Configure the
Failed to register Firebase push.
Use another phone or VPN.
Test push using pushToken is received properly, but push notifications in the production environment are not received.
Check whether there are multiple push registrations. The push registration API should be called one time. If not, contact Firebase to submit a work order.
iOS Firebase does not receive any push notifications.
This occurs when FirebaseAppDelegateProxyEnable : NO
is configured in info.plist
. This disables method swizzling: the APNs tokens are mapped to FCM registration tokens. See Get Current Registration Token to solve this problem.
iOS cannot receive remote push notifications after re-signing with enterprise certificate.
Re-signing the IPA with the enterprise certificate makes it different from the original development certificate signature. Because the existing push certificate does not match the re-signed IPA, the push cannot be received.
The Icon Badge displaying the number of push messages does not disappear.
Configure iOS based on iOS Remote Push App Icon Hint Removal.
Cannot receive push callbacks when the game is running in the backend.
The game can receive callbacks in the front end. In the backend, the callback pushes a notification to the notification bar.
iOS AddPushBaseResultObserver also has no callback.
Set UNITY_USES_REMOTE_NOTIFICATIONS
to 1.
Local push notifications are not received.
- Grant push notification permissions on the phone.
- For an Android device, go to
INTLConfig.ini
and setANDROID_LOCAL_NOTIFICATION_ENABLE
to 1.
Local push notifications are not received after closing the app in Android 12.
Android 12 and later systems require additional permissions for the AlarmManager
alarm API. Player Network SDK uses internal delay triggering to implement push notifications, and therefore local push notifications cannot be triggered after the app is closed.
How can I push notifications in different languages to different regions?
For Firebase, each push only sends one tag, allowing you to send push content in different languages to different regions.
No image displayed in iOS remote push notifications.
To receive and process notification images in Apple apps, add the notification service extension. For more information, see Send Images in Notification Payload.
No image displayed in Android remote push notifications.
Android push images require a transparent channel.
How can notifications be pushed to game versions that have yet to be released?
Firebase Messaging is able to create versions while setting up push notifications.
How can push resend cycle be set, if the RepeatType
parameter does not exist on Android?
Push resending is not supported on Android.
If the player is from a different region, how will the set FireTime timestamp resolve the different time zones?
The FireTime timestamp is set in UTC, and therefore the push notifications will not be affected by the player's current time zone.
What do the Android SmallIcon and iOS Badge parameters represent?
Android: The design of small icons can be customized through the SmallIcon parameter, with the app icon being used by default. As phone systems from China require the standardization of app and small icons, small icons cannot be customized on certain device models. (Through testing, they can still be customized for Samsung, Vivo, and old Xiaomi devices.)
iOS: Icons cannot be customized. The Badge field represents the badge number to be pushed, and is hidden when set as the default value of 0.
iOS Remote Push not received, error Error Domain=NSCocoaErrorDomain Code=3000 "no valid 'aps-environment' entitlement string found for application"
The aps-environment
attribute may be missing from Info.plist
, which needs to be added:
- Open the
Info.plist
file for your application in Xcode. - If the
aps-environment
key is missing, click the + button to add a new key. - Enter
aps-environment
as the key name and set the type toString
. - Set the key value according to the current environment, to either
development
for the development environment orproduction
for the production environment.noteThe Apple Push Notification service certificate from Apple Developer Center should match the environment. A development certificate is used during the development and testing stages, while a production certificate is used after the production version is released to App Store.
- Save the
Info.plist
file and rebuild your application.
WebView
Android cannot open the privacy agreement, prompting no permission.
If you have integrated MidasBuy or configured a network allowlist, add the domain name of the privacy agreement to the allowlist in the network_security_config.xml file
.
When opening iOS WebView, the error Could not find specified service
is displayed.
This error does not affect any functions.
The screen goes white when the built-in WebView is opened on an Android device.
You need to use https://
.
Android calls OpenUrl
to open the built-in WebView, and the game gets stuck on the main thread.
Calling the OpenUrl
API launches a new process, not a thread, so the WebView process moves to the front end, and the app switches to the backend. The game logic proceeds as if the game has been switched to the backend.
How to determine if the player opens the H5 page through the game's built-in browser?
UserAgent can be obtained through the getUserAgent
interface in INTLWebViewSample.html. If the page is opened using INTLWebView, the typeface of INTLBrowser will be returned.
When opening a webpage (OpenURL), an extra %
appears when encoding space
.
Currently, calling OpenUrl
results in space
being encoded to %%20
, which should be %20
. This is a log output error that does not affect the actual URL opened. To use the URL in the log, just remove the extra %
.
Why are WebView related errors reported during compilation when the WebView module is not integrated?
Check whether Twitter login is enabled. Twitter login depends on Player Network SDK WebView module. If Twitter login is enabled without integrating the WebView module, WebView related errors are reported.
INTLWebView makes the game window shrink.
Two configurations should be added to INTLConfig.ini
:
WEBVIEW_DPI_AWARENESS_ENABLE = 0
WEBVIEW_DYNAMIC_RESOLUTION_ENABLE = 1
Placement display issue in web launcher for Level Infinite interface
The renderMode
parameter can be adjusted to modal
frame mode, see Initialization Parameter for more information.
How can the sharing function be hidden?
Either set visibleShareMore
to false
, or WEBVIEW_SHARE_CHANNEL
to NONE
.
visibleShareMore
: Sets whether to display the sharing function, and has higher priority. For more information, see the OpenUrl extended field configurations for Unity SDK or Unreal Engine SDK.
WEBVIEW_SHARE_CHANNEL
: Sets the supported sharing channels when the sharing function is enabled, the sharing function will not be displayed if this is set to NONE
. For more information, see Configure Webview Module.
Code sample:
visibleShareMore:false
WEBVIEW_SHARE_CHANNEL:Facebook, System
visibleShareMore:true
WEBVIEW_SHARE_CHANNEL:NONE
When a web page is opened in Unity Editor, a white screen is displayed and nothing happens when the close button is clicked.
The built-in browser cannot be used in Unity Editor, try using the system browser instead.
Data insight
Why is the Firebase Crash backend not initialized?
The client must successfully report one crash to initialize the Firebase backend.
How to disable Firebase Crash reporting?
Android:
Check if Firebase console configuration, certification, .plist, and .json files are aligned.
In the
application
section inAndroidManifest.xml
, add meta-data tag to disable automatic collection.<meta-data
android:name="firebase_crashlytics_collection_enabled"
android:value="false" />
For more information, see Customize your Firebase Crashlytics crash reports.
iOS:
Add a new key-value pair in Info.plist
:
- Key:
FirebaseCrashlyticsCollectionEnabled
- Value:
false
For more information, see Customize your Firebase Crashlytics crash reports.
The Firebase Crash stack has not recovered.
Users need to upload a symbol table.
CrashSight reports are not received.
- Check whether CrashSight is configured in
ANALYTICS_CRASH_CHANNEL
in the INTLConfig.ini. - Check whether
InitAnalytics
is called. - Check the reporting address configured in the INTLConfig.ini.
The Custom.log
file cannot be created for log reports from the Windows platform.
This is because there is no read/write access to this directory and CrashSight does not provide a way to change the path.
Editor reports the error Unable to get ReportException function from library
. Player Network SDK Error code: 9999
, Windows Error code: 126
Crashsight currently does not support editors.
Firebase push problems
After integrating Player Network SDK's push service into the client, configure remote push messages in the Firebase console for the client to receive them.
Projects can develop the backend API functions provided by Firebase, and through the backend API interface, let Firebase send push notifications to the client.
For more information, see Backend API Documentation for Firebase.
A warning message is displayed when integrating Facebook iOS SDK
If FacebookAutoLogAppEventsEnabled
and FacebookAdvertiserIDCollectionEnabled
are not configured, the Facebook SDK will display a warning message.
<Warning>: Please set a value for FacebookAutoLogAppEventsEnabled. Set the flag to TRUE if you want to collect app install, app launch, and in-app purchase events automatically. To request user consent before collecting data, set the flag value to FALSE, then change it to TRUE once user consent is received. Learn more: https://developers.facebook.com/docs/app-events/getting-started-app-events-ios#disable-auto-events.
<Warning>: You haven't set a value for FacebookAdvertiserIDCollectionEnabled. Set the flag to TRUE if you want to collect Advertiser ID for better advertising and analytics results. To request user consent before collecting data, set the flag value to FALSE, then change it to TRUE once user consent is received. Learn more: https://developers.facebook.com/docs/app-events/getting-started-app-events-ios#disable-auto-events.
For more information, see Event reporting.
Facebook reporting requires tracking on the iOS app
Facebook reporting after iOS 14.5 requires tracking on the iOS app. Before reporting Facebook events, call the RequestTrackingAuthorization
API for Unity SDK or Unreal Engine SDK.
Facebook data reporting failed, the event reporting function in Facebook App Dashboard is not associated with the game app.
No data source can be found from Facebook Events Manager. This is because the project's account has not been authorized and linked with the company, complete the steps from Verify your business to resolve this issue.
Troubleshooting steps:
Verify the
ANALYTICS_REPORT_CHANNEL
andANALYTICS_AUTH_REPORT_ENABLE
configurations in INTLConfig.iniConfirm whether the local report was successful, by searching
ReportEvent with channel = Facebook, eventName =xx
in the INTL logs
For more information, see Data reporting acceptance.
Tools & Utilities
How can I test the RequestIPInfo
API?
Switch VPN regions to test.
iOS in-app ratings unable to be opened
- During the development process, the review interface can be opened at any time.
- For the TestFlight package, the review interface cannot be opened.
- After releasing on the App Store, each user can only open the review interface a maximum of 3 times within 365 days.
For more information, see requestReview.
Compliance
Minor compliance failed, error code: 30010
Invalid region
parameter. Check the country or region code, which is a three-digit code based on the ISO 3166-1 standard.
For example: A region parameter error will be reported 76 is entered instead of 076.
Minor compliance failed, error code: 30004
The compliance scheme may not be configured. Reach out to the Player Network representative.
Email verification failed, the Yes button cannot be selected.
Clear the browser cache and try again.
Is the country or region selected by the player recorded?
Yes, the country or region selected by the player is recorded in the region
field of the callback.
Will the game ask if the player is a minor every time the game is launched after successful self-verification?
ParentCertificateStatusExpiration
will only return a value after email verification and credit card verification, the player will be able to enter the game directly when self-verification returns 0 for ParentCertificateStatusExpiration
.
A parent has received multiple emails. Which of them is the primary verification email?
When parents receive multiple verification emails, only the first email verification is valid. After the first email verification, performing verification through other emails will not change the initial parent verification status.
When making payment with a credit card during minor verification, how do I return to the process after viewing the privacy agreement?
Because the credit card payment process cannot be interrupted, a return will lead to unsuccessful verification. Therefore, the game team needs to add a return button on the privacy agreement page.
Are there any differences between the ComplianceQueryUserInfo
interface and ComplianceQueryUserStatus
interface?
Although the ComplianceQueryUserStatus
interface and ComplianceQueryUserInfo
interface both return the same data structure, which is the compliance status of the current Openid, ComplianceQueryUserStatus
also sets the Region for the Openid.
As the Openid's Region has already been set in other interfaces, the ComplianceQueryUserInfo
interface is recommended to be used to query the compliance status of the Openid.
For more information, see the ComplianceQueryUserStatus
API for Unity SDK, Unreal Engine SDK, and ComplianceResult
API for Unity SDK, Unreal Engine SDK.
Why is the username blank in the account deletion email?
The account deletion email being sent follows the account deletion process, where the user_name
field is used to pass the username of the player's in-game character. If an empty string was passed, the username will appear to be blank in the email, which can cause confusion.
Windows
Network error 60, CURLCode for more details
This indicates a problem with the CA certificate. Delete the cacert.pem
file, then download the cacert.pem
file again from Player Network Console.
How does the client acquire the friend list?
The client can only get friend lists for the Epic channel. Users can get the lists for other channels through the backend. For more information, see the
QueryFriends
API for Unity SDK or Unreal Engine SDK.