FAQ

Prev Next

Available in Classic and VPC

Login error

The following covers frequently asked questions and answers related to login errors.
For social login features, the default is based on the respective platform's development guides. If you encounter any issues, then check that platform's login development guide first.

Q. I get the following error when I try to log in.
Please check if you have set the 'XXXX' channel before using it. Did you import or set 'XXXX' information in gradle.build file
A. You don't have the required GAMEPOT SDK libraries for the XXXX type of login, or you haven't made any login-related settings after the initialization point.

  1. For native Android/iOS environment
  • Make sure that the login-related GAMEPOT libraries are installed at build time.
    • Example: Apple login on Android requires the gamepot-channel-apple-signin.aar file to be mounted.
  • Make sure you have the correct settings for your login type.
    • Example: Set up configuration values and other settings within (Android) build.gradle/(iOS) GamePotConfig-Info.plist.
  • Make sure you have addchannel handled.
    • Example: For Android, after initializing the GAMEPOT SDK for Apple login, proceed with the following: GamePotChannel.getInstance().addChannel(this, GamePotChannelType.APPLE, new GamePotAppleSignin()); )
  1. For Unity environment
  • Make sure that the login-related GAMEPOT libraries are installed at build time.
    • Example: Apple login on Android requires the gamepot-channel-apple-signin.aar file to be mounted in the /Assets/Plugins/Android/libs folder.
  • Make sure you have the correct settings for your login type.
    • Example: Unity 2019.02.XX and earlier: mainTemplate.gradle, Unity 2019.03.XX and later: Set up configuration values and other settings within launcherTemplate.gradle.

Google login

The following covers frequently asked questions and answers related to Google login.

Q. My login attempts immediately return a cancel login. (Android, iOS)
A. This happens because the required environment isn't set up.

  1. Make sure that the Firebase configuration file, google-service.json, is properly included in your project.
  2. (Android) Make sure you have added the SHA-1 value of the keystore you used to build the APK to the Firebase console.
    • Request the SHA-1 value from the developer.

gamepot-faq01_firebase1_ko

  1. Check that your project settings are correct in the Firebase console.
    3-1) Check to see if the build has the following applied.
    - Whether it was built with the package name (Android)/bundle ID (iOS) set on the console
    - (Android) Whether it was built with a keystore that extracted SHA-1
    3-2) Make sure you have a support email set up in the Firebase console.

gamepot-faq02_firebase2_ko

3-3) If you click the Google Developers Console > Settings > App integrity menu, you will see the following page.
- (Android) If you're using app signing in Google Console, you'll also need to add the SHA-1 value created in the console.

gamepot-faq31_googleSHA_ko

  1. If you've checked all of the items above and you're still having trouble, you need to change your support email to another one.
Note

Occasionally, setting up the initial support email doesn't work properly. In this case, change it to a different email.

If you've followed Steps 1 through 4, but still get an onCancel on login attempt, check the following items.

  1. Access the Google Cloud console.

  2. Go to Project > Top left menu > APIs & Services > Credentials > OAuth 2.0 Client IDs, and check if it has the Android/iOS/web application information.
    gamepot-faq03_googlecloud1_ko

For Android, make sure the package name and SHA-1 value are the same as the one you are using in your build.

  1. Go to the Project > Top left menu > APIs & Services > OAuth consent screen, and check if the Publishing status is Production and the User type is External.
    gamepot-faq04_googlecloud2_ko

Q. If I install the APK directly, I'm logged in, but if I download the app from the store, I can't log in. (Android)
A. This issue is caused by using the "App signing" feature in the Google Developer Console. If you enable "App signing" when uploading an APK from the console, then the keystore will be replaced with a key managed by the console. In this case, add the SHA-1 value of the keystore managed by the console to the Firebase console.
gamepot-faq05_firebase3_ko

If you're using Facebook login, you'll also need to add the keyhash value of the new keystore to the Facebook for Developers console.

Q. I get an error (401 error: disabled_client) when logging in with Google on iOS. (iOS)
A. The issue may be caused by not having a support email set up in your Firebase console settings. Set up your support email in the Firebase console and check again.
gamepot-faq06_firebase4_ko

Q. I'm getting a pop-up when I log in with Google on iOS, but it shows something other than the game name. (iOS)
A. Change the value of the Product Name item in Xcode > Targets > Build Settings.
gamepot-faq_appname.png

Facebook login

The following covers frequently asked questions and answers related to Facebook login.

Q. When I have the Facebook app installed on my smartphone, I can't log in normally. (Android, iOS)
A. The issue may be caused by incorrect preferences in the Facebook for Developers console. Add the key hash value of the keystore, used when your APK is built, to the Facebook console.
facebook-keyhash1.jpeg

If you're using the "App signing" feature in Google Console, you'll also need to add a keyhash value for the keystore managed by Google Console.
facebook-keyhash2.jpeg

Apple login

The following covers frequently asked questions and answers related to Apple login.

Q. I get an error when I try to log in with Apple. (iOS)
A. This happens because the required environment is not properly set up.

  1. Check if Sign In with Apple has been added to Xcode > Targets > Signing & Capabilities > Capability.
  2. Check if LocalAuthentication.framework and AuthenticationService.framework have been added to Xcode > Targets > Build Phases > Link Binary With Libraries. If the Target version is iOS 13 or earlier, set AuthenticationService.framework to optional.
    xcode-setting1.jpeg

Log in with NAVER ID

The following covers frequently asked questions and answers related to Log in with NAVER ID.

Q. I get an error when logging in with NAVER. (Android, iOS)
A. The issue may occur because the environment settings in the NAVER Developers Console are different from the build settings. Make sure that the NAVER Developers Application settings and the build settings match.
naver_setting1.jpeg

Q. When integrating the NAVER Cafe SDK, Login with NAVER ID via webview is unavailable. (iOS)
A. This issue is caused by the Login with NAVER ID SDK existing together with the Cafe SDK's login module. This only applies when you also integrate the NAVER Cafe SDK.

  1. Download the patch file (Download).
  2. Delete the two frameworks that already exist in your project.
    • GamePotNaver.framework
    • NaverThirdPartyLogin.framework (if it exists)
  3. Save the downloaded patch (GamePotNaver.framework) in the same existing path.
    • Due to the iOS UIWebview issue, use the NAVER Cafe SDK version 4.4.7 or later.
  4. (Unity only) In the NAVER Cafe initialization step, explicitly add a URL scheme.
    ../Assets/NCSDK/Plugins/iOS/NCSDKUnityManager.mm
    naver_setting3.jpeg
  5. Edit the priority of the URL scheme value in info.plist to first.

LINE login

The following covers frequently asked questions and answers related to LINE login.

Q. I get an error (400 error: Bad_Request) when logging in with LINE. (Android, iOS)
A. The issue may be caused by incorrect preferences in the LINE Developers Console. Check that the settings in the LINE Developers Console are correct.
line_setting.jpeg

Apple login (Android)

The following covers frequently asked questions and answers related to Apple login (Android).

  1. When the error message when trying to log in is Insufficient data!
    • This is because there is no relevant setting for the Apple ID login item in GAMEPOT > Dashboard > Project settings > General. Fill out the information provided in Help.
  2. When you see the invalid_client error page when trying to log in
    • This is when you select the app ID of the app you want to use in the "Primary App ID" field and enter the GAMEPOT API domain and return URL in the "Register Website URLs" field on the Apple console, and the values are handled incorrectly. In the Help button, see Step 7 of Set client ID.
  3. When login fails with Apple SDK and the error message is "Error occurs from Apple server."
    • This is because the information entered in the Apple ID login item of GAMEPOT > Dashboard > Project settings > General is incorrect, causing an error on Apple's servers. Check the Set key part in the Help button and save the key value again.

Payment error

The following covers frequently asked questions and answers related to payment errors.

Common

The following covers commonly asked questions and answers related to payment errors.

Q. When I try to pay, I see the message "Productid was wrong!"
A. Add the store's product ID to GAMEPOT dashboard > Payment > IAP.
purchase_item.jpeg

Q. There is no response to my first payment attempt, and the second payment attempt responds that the payment was successful. (Play Store, ONE Store)
A. This is because the key is incorrect in Public key of Dashboard > Project settings > General. Enter the key by referring to View help.
gamepot-public-key.jpeg

Google Play Store

The following covers frequently asked questions and answers related to Google Play Store.

Q. I see the Google payment pop-up, but the payment doesn't go through.

A. This happens because the environment for Google payment is not set up correctly. Check the following items.

  1. Make sure your in-app is listed as the active APK in Console > App information > In-app product.
    google-inappitem.jpeg
  2. Check if your app is in the Released status in the console.
    Put it on the private/internal test track, not the production track. We recommend putting it on the internal test track if possible.
  3. Check that you have registered your test account in Console > Test > Manage track > Manage test participant.
    google_addtester.png
  4. Access the test participation URL to see if you've signed up for the test.
    google_added_tester.jpeg
  5. Make sure you've added a test account to License testing in Console > Settings.
    google_Licensetesting.jpeg
  6. Check that you have deleted all accounts in the Device > Settings > Accounts menu, except for the account that participated in the test.

ONE Store

The following covers frequently asked questions and answers related to ONE Store.

Q. I see "Payment was requested from an abnormal app."

A. The app before release is only accessible to test accounts. Check the following.

  • Check to see if a test account is registered.
  • Check that the ONE Store app installed on the device is logged in with the test account you registered in Step 1.

Q. At checkout, the message [package] doesn't exist or wrong secret. is displayed.

A. Check the GAMEPOT dashboard to make sure that the key values for ONE Store have been applied correctly.

  1. Check that the package name of the APK is the same as the package name registered on ONE Store.
    onestore_app_package.png

  2. Check whether the license key for the ONE Store console has been applied.
    onestore_Licensetesting.jpeg

    Check to see if that value has been applied to the item under the GAMEPOT dashboard.
    onestore_public_key.png

    gamepot-public-key.jpeg

  3. Check whether the client secret is applied in the ONE Store console.
    onestore_Client_secret.jpeg{height="" width="70%"}
    Check to see if that value has been applied to the item under the GAMEPOT dashboard.
    onestore_server_key.png{height="" width="70%"}
    gamepot-server-key.jpeg{height="" width="70%"}

Q. After completing the payment, the payment fails with the message "The result value retrieved does not exist (9001)."

A. This issue is caused by a difference in the live/test environment when requesting receipt verification from ONE Store.
If your ONE Store checkout page is in a sandbox environment

  • Check if the ONE Store app account registration and payment preferences are set to Sandbox status in the ONE Store console > In-app information > Test payment menu.
  • Check if the test device has the ONE Store app installed and is logged in with a registered account.
  • Make sure your IP is registered as Payment/coupon in the GAMEPOT dashboard > Project settings > White user menu.
    gamepot_WhiteUser.jpeg
  • Make sure that the payment item (test user) address is registered for the Webhook field in the GAMEPOT dashboard > Project settings menu.
    gamepot_webhook_setting.png

If your ONE Store checkout page is in a production environment

  • Check if the ONE Store app account registration and payment preferences are set to Commercial testing status in the ONE Store console - In-app information - Test payment menu.
  • Check if the test device has the ONE Store app installed and is logged in with a registered account.
  • Check if the IP is unused or unregistered with Payment/coupon in the GAMEPOT dashboard > Project settings > White user menu.
    gamepot_WhiteUser_off.jpeg
  • Make sure that the payment item (service) address is registered for the Webhook field in the GAMEPOT dashboard > Project settings menu.
    gamepot_webhook_setting_real.jpeg

ONE Store SDK in-app version SDK support coverage
One-Store SDK's in-app version SDKs have different support coverage, depending on the GAMEPOT SDK version.

  • GAMEPOT SDK V 3.5.0 and later: api21, V7 support
    • Related library files: gamepot-billing-onestore.aar, gamepot-common.aar, sdk-auth-1.0.2.aar, sdk-base-1.0.3.aar, sdk-iap-21.00.00.aar
  • GAMEPOT SDK V 3.4.3-oneV6: api19, V6 support
    • Related library files: iap_sdk-v19.00.02.aar, gamepot-billing-onestoreV6.aar, gamepot-common_onestoreV6_only.aar

GAMEPOT SDK V 3.4.2: api17, V5 support
Related library files: gamepot-billing-onestore.aar, gamepot-common.aar

When building Android, if you build with targetSdkVersion 30 (Android 11) or later, the ONE Store APK is not found, even though it is installed on Android 11 OS devices.
Add the following statement in the AndroidManifest.xml file.

   <!-- ONE Store related patch when targetSdkVersion is 30 or later [Start] -->
    <queries>
        <intent>
            <action android:name="com.onestore.ipc.iap.IapService.ACTION" />
        </intent>
        <intent>
            <action android:name="android.intent.action.VIEW" />
            <data android:scheme="onestore" />
        </intent>
    </queries>
    <!-- ONE Store related patch when targetSdkVersion is 30 or later [End] -->
    <application>

Galaxy Store

The following covers frequently asked questions and answers related to Galaxy Store.

Q. When I log in, I see "No Samsung in-app purchases selected."
A. This happens when the app is not deployed. To make a test in-app payment before deploying the app, you must proceed as follows.

  1. From the Dashboard > Project settings > White user menu, click the [Add] button.
  2. Add a white user by entering the following.
  • Type: Development
  • IP/user ID: test device IP

Apple Store

The following covers frequently asked questions and answers related to Apple Store.

  • The country information for the sandbox account making the payment must be the country included in the app deployment country settings on the Apple console.
  • The in-app purchase field must be added to the Xcode > Capability field.
  • Contract, tax, and financial transaction items on Apple's console must be accurate. If there are any incomplete portions, the in-app information is not provided by the Apple in-app SDK and payment is unavailable.

In-app error

The following covers frequently asked questions and answers related to in-app errors.

Q. If you can't get the list of in-app items
A. Check the following.

  • GAMEPOT payments are only available for consumable in-app purchases.
  • The payment library must be installed at build time.
    • Google in-app SDK:

      (Unity)
      ../Assets/Plugins/Android/libs/billing-5.0.0.aar
      ../Assets/Plugins/Android/libs/firebase-crashlytics-buildtools-2.9.1.jar
      
      (Native) 
      implementation 'com.google.firebase:firebase-crashlytics-buildtools:2.9.1'
      implementation 'com.android.billingclient:billing:5.0.0'
      
    • ONE Store in-app SDK:

      (Unity)
      ../Assets/Plugins/Android/nativeLibs/gamepot-billing-onestore.aar
      ../Assets/Plugins/Android/nativeLibs/sdk-auth-1.0.2.aar
      ../Assets/Plugins/Android/nativeLibs/sdk-base-1.0.3.aar
      ../Assets/Plugins/Android/nativeLibs/sdk-iap-21.00.00.aar
      
      (Native) 
      implementation(name: 'gamepot-billing-onestore', ext: 'aar')
      implementation(name: 'sdk-auth-1.0.2', ext: 'aar')
      implementation(name: 'sdk-base-1.0.3', ext: 'aar')
      implementation(name: 'sdk-iap-21.00.00', ext: 'aar')
      
    • Galaxy Store in-app SDK:

      (Unity)
      ../Assets/Plugins/Android/nativeLibs/gamepot-billing-galaxystore.aar
      
      (Native) 
      implementation(name: 'gamepot-billing-galaxystore', ext: 'aar')
      
  • You need to complete payment-related settings. See Payment error.
  • If you're using the getPurchaseItems API, this API initializes the payment module after login and asynchronously receives the in-app list and shows the results. Depending on the timing of the call, the information may not be available. If you don't have the information, then we recommend using the getPurchaseDetailListAsync API (synchronous in-app list item acquisition). Google may not respond on devices that don't have a Google account registered on the device.
  • The payment account for each store's in-app payment must be logged in to the device, and the country information for the account making the payment must belong to the country where the store app is deployed.
  • In the case of the Apple Store, due to the nature of Apple's system, the deployment of apps and their in-app information is structured differently. Their policy is to deploy within 24 hours.

It pulls information from the development version/test flight version with the in-app product verified and deployment set up. However, if you can't get the item list in just the commercial version, it means that the in-app information hasn't been deployed to Apple's servers. This is usually resolved within 24 hours of setting up the deployment. Sometimes, however, Apple doesn't send the relevant information for up to 3 days.

Q. I have an in-app receipt, but there is no receipt information in the dashboard. Is there any logic that can be used to recover a payment if it is aborted?
A. The following describes the GAMEPOT payment logic.
Client -> Proceed with store in-app payment -> GAMEPOT server validates the receipt based on the information entered in the dashboard.
If there are no issues with receipt validation, the information is added to the dashboard payment list after sending the payment webhook API. Regardless of the webhook API result, it is handled as a success in the client SDK.
If the store's in-app payment is successful and then aborts for an unknown reason (network issue, app crash, etc.), the shared memory stores the information passed in the payment API call.
Exit the app where the issue occurred -> Relaunch the app -> Upon successful login, GAMEPOT internally checks for aborted payment history. If there is any aborted history, the payment logic will be re-run based on what is stored in shared memory and if everything is fine up to receipt validation, the information will be added to the dashboard payment list after sending the payment webhook API.

If there is an in-app receipt but no payment history in the GAMEPOT dashboard, this indicates a problem with the GAMEPOT payment logic. If you prompt the user to log in by re-launching the app where they made the payment, then the payment logic will be restarted internally. If everything goes well, then the payment API will be sent and the payment will be recorded in the dashboard.

If the payment module launches a different app, then the payment recovery logic will not occur.
<Example> Failure after proceeding with Google payment -> Logging in to the ONE Store version won't trigger the payment recovery logic because the payment module is different.
In the case of Google, proceed by only leaving the account that made the payment in the device settings. (The login account and the account making the payment may be different.)

Adbrix Remaster

The following covers frequently asked questions and answers related to Adbrix Remaster.

Q. A crash occurs when building iOS after applying Adbrix Remaster.
A. Adbrix Remaster is a library implemented in Swift, and additional settings are required when applying Swift libraries. Set the following settings in Xcode and build it. If it remains the same, run a clean build and check.
gamepot-faq28_adbrix1_ko.png

gamepot-faq29_adbrix2_ko.png

Q. An error occurs when uploading to the App Store after applying Adbrix Remaster.
A. The issue is caused by Adbrix Remaster library including x86_64, i386 architecture. Follow the steps below to rebuild and check.
From the console (terminal), go to the location of the AdBrixRM.framework file, and then enter the following two commands.

lipo -remove x86_64 ./AdBrixRM.framework/AdBrixRM -o ./AdBrixRM.framework/AdBrixRM lipo -remove i386 ./AdBrixRM.framework/AdBrixRM -o ./AdBrixRM.framework/AdBrixRM

gamepot-faq30_adbrix_error_ko.png

NAVER Cafe

The following covers frequently asked questions and answers related to NAVER Cafe.

Q. When displaying iOS NAVER Cafe, it is displayed in English.
A. Change the native development region to Korea in Xcode > Targets > Info > Localization and check again.

Service launch

The following covers frequently asked questions and answers related to service launch.

Q. Is there anything I should pay attention to when launching a service for the iOS platform?
A. 1) In the case of the iOS App Store, the app review period takes about 1 - 2 weeks, so you should allow about 2 weeks before applying for transfer to the real zone dashboard to ensure a trouble-free process.

Q. Major rejection reasons for iOS validations

  1. App completeness
    If there are bugs, unfinished features that display phrases such as "coming soon," or the app contains phrases such as beta, test, etc.
  2. ATT permission
    It has been changed to require users to be authorized when obtaining IDFA values.
    If it's not clear what you're collecting and what you'll use it for, it may be rejected.
  3. Reward policy
    When rewards are used to drive app installs or reviews
  4. Related to validation testing
    Make sure you pass the test ID correctly so that the inspector can run the test.
  5. Lack of an unsubscribe feature, or an in-app coupon feature, is also a reason for rejection.
  6. Screenshot specifications
    When utilizing screenshots of Android-powered screens or using low-resolution images, etc.
    Link to Apple screenshot specifications

Push notifications

The following covers frequently asked questions and answers related to push notifications.

Q. I'm not getting notifications on iOS.
A. Check the following items one by one.

  1. In the Ncloud SENS settings, make sure your iOS certificate is registered in Certification.
    • iOS requires different certificates to be registered depending on the type of provisioning profile used at build time.
      • In Development Provisioning > Register Apple Development certificate, set Type to Sandbox.
      • In Adhoc/Distribution Provisioning > Register iOS Distribution certificate, set Type to Production.
  2. After certificate registration, check to see if login is completed on the client.
    • GAMEPOT passes the push token to the server upon successful login. Therefore, once you've registered the certificate, proceed to log in on the client and check.
  3. Check if the app is in the foreground.
    • On iOS, you won't receive pushes while the app is in foreground. Click the home button and check the main screen to see if you're receiving pushes.
  4. When building in Xcode, make sure that the capability includes Push Notification.
    • When you build in Xcode, the capability must include Push Notification. If you're not getting pushes, check to see if this section was left out at build.

Q. Q. I'm not getting notifications on Android OS.
A. Check the following.

  • Check that the push settings are set correctly on the NAVER Cloud console.
    • Check the server key and sender ID information in the Firebase Console > App Settings > [Cloud Messaging] tab.
    • Check the settings in the [NAVER Cloud console > Simple & Easy Notification Service (SENS) > Push > Certificate] field.
      https://console.ncloud.com/sens/push-certificate
  • Make sure that android.permission.POST_NOTIFICATIONS permission is obtained and that app notifications are allowed on the device you are testing.
  • Make sure that "Push consent/advertising push consent" is enabled in your GAMEPOT dashboard - Member information.
  • If you are using the Firebase SDK installed separately
    • Make sure the following code is applied in ../Assets/Plugins/Android/AndroidManifest.xml.
        ....
        </activity>
    
        <!-- FCM [start]-->
        <service android:name="io.gamepot.common.GamePotFCMIDService">
        <intent-filter>
            <action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
        </intent-filter>
        </service>
        <service android:name="io.gamepot.common.GamePotFCMService">
        <intent-filter>
            <action android:name="com.google.firebase.MESSAGING_EVENT"/>
        </intent-filter>
        </service>
        <!-- FCM [End]-->
    
        ...
        <meta-data android:name="android.max_aspect" android:value="2.1" />
    

Precautions for using Google app signing

The following covers frequently asked questions and answers about using Google app signing.

Q. Social login works fine for APKs I install myself, but when I download from the store and log in with social login, I can't log in.
A. This is when the keystore has been changed by enabling app signing in the Google Developer Console. In the Google Developers Console > Settings > App integrity menu, you'll see the following page. If you are using Google login, add the SHA-1 value to the Firebase console, and if you are using Facebook login, add the keyhash of the above SHA-1 value to the Facebook console.
gamepot-faq31_googleSHA_ko.png

User ID transfer

The following covers frequently asked questions and answers related to user ID transfers.

Note

You can only transfer a user ID to another user ID if it is connected to a social account.

  1. Obtain the user ID you want to transfer from, and the user ID you want to transfer to.
  2. For the user ID you want to transfer, go to the GAMEPOT dashboard > Member > List page and click the user ID to go to the details page.
  3. Click the Account integration tab at the bottom > Click the settings icon next to the social ID you want to move.
  4. In the Change integration information pop-up window, enter the user ID to be transferred to and click the [Change] button.
    • Once changed, the social account information will disappear from that user ID.
      gamepot-faq32_userIDmove_ko.png
  5. For the user ID that received the transfer, go to the GAMEPOT dashboard > Member > List page and click the user ID to go to the details page.
  6. Click the [Account integration] tab at the bottom > Check if the social ID you transferred exists.
    • gamepot-faq33_userIDmove2_ko.png
  7. Log out of the client logged in with the user ID you transferred from, and then proceed with the login process again.

Restore user ID

The following covers frequently asked questions and answers related to user ID recovery.

  1. Search for the user ID in GAMEPOT dashboard > Member > List and click the user ID to go to the details page.
  2. Click the Restore member button, and then click the [OK] button.

However, if the user was issued a new user ID after withdrawing and logging in with the same social account, then you'll need to follow steps 1 and 2 to transfer the user ID using the user ID transfer method.
gamepot-faq34_userIDmove3_ko.png

Integrate dashboard advance reservation page

The following describes how to proceed with the dashboard advance reservation.

1. Request caller ID

You can send texts after you request a caller ID and the number is approved.
See the SMS caller ID request guide.

2. Integrate advance reservation page API

The API must be run in the following order: Send SMS verification text->Complete SMS certification->Complete SMS advance reservation.
In the Game > Advance reservation page, click the [Add] button to enter the name, and then click the [Save] button.
From the GAMEPOT advance reservation page's Category Id, select the saved name and click the copy icon next to it.
gamepot-faq35_Pre-booking_ko.png

3. SMS verification text

The following covers frequently asked questions and answers related to SMS verification texts.

3-1. Send SMS verification text

Request

POST
url : https://gamepot.apigw.ntruss.com/gpapps/v2/phone/request
Header : 'content-type: application/json'
data:
{
	"projectId":"ab2775b4-cf09-4794-9480-XXXXXXXXXXXX",
	"categoryId":"b062a3f3-0a37-44d1-9e8f-XXXXXXXXXXXX",
	"from":"XXXXXXX",
	"to":"010XXXXXXX",
	"store":"google"
}
Attribute Type Required Description
projectId String - GAMEPOT SDK's projectId
categoryId String - GAMEPOT advance reservation page's categoryId
from String - Approved caller ID
to String - Contacts to receive SMS verification code
store String - Store (Google, ONE, Apple)

Response

{
    "code": 200,
    "message" : ""
}
Attribute Type Description
code Int Result value (200: success, 404: failure)
error String It displays contextual errors

3-2 Complete SMS verification

Request

POST
url : https://gamepot.apigw.ntruss.com/gpapps/v2/phone/verify
Header : 'content-type: application/json'
data:
{
	"projectId":"ab2775b4-cf09-4794-9480-XXXXXXXXXXXX",
	"categoryId":"b062a3f3-0a37-44d1-9e8f-XXXXXXXXXXXX",
	"code":"6137",
	"to":"010XXXXXXX",
	"store":"google"
}
Attribute Type Required Description
projectId String - GAMEPOT SDK's projectId
categoryId String - GAMEPOT advance reservation page's categoryId
code String - Received verification code
to String - Contacts to receive SMS verification code
store String - Store (Google, ONE, Apple)

Response

{
    "code": 200,
    "message" : ""
}
Attribute Type Description
code Int Result value (200: success, 404: failure)
error String It displays contextual errors

3-3 Complete SMS advance reservation request

Request

POST
url : https://gamepot.apigw.ntruss.com/gpapps/v2/phone/join
Header : 'content-type: application/json'
data:
{
	"projectId":"ab2775b4-cf09-4794-9480-XXXXXXXXXXXX",
	"categoryId":"b062a3f3-0a37-44d1-9e8f-XXXXXXXXXXXX",
	"code":"6137",
   	"from":"02XXXXXXXX",
	"to":"010XXXXXXX",
	"store":"google",
    	"tag":""
}
Attribute Type Required Description
projectId String - GAMEPOT SDK's projectId
categoryId String - GAMEPOT advance reservation page's categoryId
code String - Received verification code
from String - Approved caller ID
to String - Contacts to receive SMS verification code
store String - Store (Google, ONE, Apple)
tag String - Other information (information such as inflow channel)

Response

{
    "code": 200,
    "message" : ""
}
Attribute Type Description
code Int Result value (200: success, 404: failure)
error String It displays contextual errors

See the following link for the PHP source base for the advance reservation website.

GooglePlayGames API

The following covers frequently asked questions and answers related to the GooglePlayGames API.

Unlike Google login, Google Play Games Services login does not support cross-platform login. For this reason, we recommend that you do not use the Google Play Games Services login as your main login method in GAMEPOT. By default, if you have the Google Play Game Services library (gamepot-channel-google-playgame.aar), GAMEPOT will log you into Google Play after the default login, assuming this is the action for connecting to Google Achievements and Leaderboards.

Q. I'm trying to use a different platform to log in, but it tries to log in with Google Play. How do I prevent related pop-ups from appearing?
A. GAMEPOT will prompt you to log in to Google Play after the default login, assuming that this is the action to connect to Google Achievements and Leaderboards.

If you want to use Google Play Games Services sign-in but not Google Achievements or Leaderboards, set the following settings before the login API.

  • Android
GamePotChannel.getInstance().enableGPG(false);
  • Unity
GamePot.enableGPG(false)

Google Play Game API - Google Achievements and Leaderboards

The following covers frequently asked questions and answers related to Google Achievements and Google Leaderboards.

Q. Can I use the GooglePlayGames API through the GAMEPOT SDK?
A. There is a GooglePlayGames API that is supported by the GAMEPOT SDK. (Achievements, Leaderboards) (Android, Unity, Unreal) For each platform, the following describes how to use the GooglePlayGames API.

Android

When you build, include gamepot-channel-google-playgame.aar to run the build.
Enter the gamepot_gpg_id value in ../app/build.gradle.

...
android {
    ...
    defaultConfig {
        ...
        resValue "string", "gamepot_gpg_id", ""
    }
    ...
}
import io.gamepot.channel.GamePotChannel;
import io.gamepot.channel.google.playgame.GamePotAchievementInfo;

//Achievement Handling API
GamePotChannel.getInstance().showAchievement(ACTIVITY);

GamePotChannel.getInstance().loadAchievements(ACTIVITY, new GamePotChannelListener<GamePotAchievementInfo>() {
    @Override
    public void onCancel() {
    }
    @Override
    public void onSuccess(GamePotAchievementInfo info) {}
    
    @Override
    public void onFailure(GamePotError err) {}
    });

GamePotChannel.getInstance().unlockAchievement(Activity activity, String achievementId);

GamePotChannel.getInstance().incrementAchievement(Activity activity, String achievementId, int Count);


//Leaderboard Handling API
GamePotChannel.getInstance().showLeaderboard(Activity activity);

GamePotChannel.getInstance().submitScoreLeaderboard(Activity activity, String leaderBoardId, int leaderBoardScore);

Unity

When you build, include gamepot-channel-google-playgame.aar to run the build.
Enter the gamepot_gpg_id value in ../Assets/Plugin/Android/mainTemplate.gradle.

...
android {
    ...
    defaultConfig {
        ...
        resValue "string", "gamepot_gpg_id", ""
    }
    ...
}
using GamePotUnity;

//Achievement Handling API
GamePot.showAchievement();

GamePot.unlockAchievement(string achievementId);

GamePot.incrementAchievement(string achievementId, string count);

GamePot.loadAchievement();

//loadAchievement Handled by Callback Function
void onLoadAchievementSuccess(List<NAchievementInfo> info);
void onLoadAchievementFailure(NError error);
void onLoadAchievementCancel();

//Leaderboard Handling API
GamePot.showLeaderboard();

GamePot.submitScoreLeaderboard(string leaderBoardId, string leaderBoardScore);

Unreal

For Unreal Engine, the buildscripts in the engine source default to manifest merging the gpg APP ID value. (As of Unreal Engine 4.26)
To avoid duplicating the GAMEPOT GooglePlayGames module, comment out the following 2 lines in Engine/Source/Programs/UnrealBuilTool/Platform/Android/UEDeployAndroid.cs in your engine source.
image.png

Edit GamePot_Android_UPL.xml

...
<resourceCopies>
        <copyFile src="$S(PluginDir)/ThirdParty/Android/libs/gamepot-channel-google-playgame.aar" dst="$S(BuildDir)/libs/gamepot-channel-google-playgame.aar" />
</resourceCopies>

...

<AARImports>
    <insertValue value="com.google.android.gms,play-services-games,21.0.0"/>
    <insertNewline/>
    <insertValue value="com.google.android.gms,play-services-base,17.5.0"/>
    <insertNewline/>
    <insertValue value="com.google.android.gms,play-services-auth,19.0.0"/>       
    <insertNewline/>
</AARImports>

...

<buildGradleAdditions>
    <insert>

        ...
        dependencies {
            ...
            implementation(name: 'gamepot-channel-google-playgame', ext: 'aar')
            implementation 'com.google.android.gms:play-services-games:21.0.0'
            implementation 'com.google.android.gms:play-services-base:17.5.0'
            implementation 'com.google.android.gms:play-services-auth:19.0.0'
            ...
        }
        ...

        defaultConfig {
            ...
            resValue "string", "gamepot_gpg_id","xxx" //insert gpg App ID
            ...
        }

    </insert>
</buildGradleAdditions>

...

<gameActivityImportAdditions>
  <insert>
    import io.gamepot.channel.google.playgame.GamePotGooglePlaygame;
  </insert>
</gameActivityImportAdditions>

...
#include "GamePotSDKPluginModule.h"

//Achievement Handling API
FGamePotSDKPluginModule::GetSharedGamePotSdk()->showAchievement();

FGamePotSDKPluginModule::GetSharedGamePotSdk()->unlockAchievement(FString achievementId);

FGamePotSDKPluginModule::GetSharedGamePotSdk()->incrementAchievement(FString achievementId, FString count);

//loadAchievement Handled by Callback Function
FGamePotSDKPluginModule::GetSharedGamePotSdk()->loadAchievement();

void FOnSdkLoadAchievementSuccess(FNAchievementInfo info);
void FOnSdkLoadAchievementFailure(FNError error);
void FOnSdkLoadAchievementCancel();

//Leaderboard Handling API
FGamePotSDKPluginModule::GetSharedGamePotSdk()->showLeaderboard();

FGamePotSDKPluginModule::GetSharedGamePotSdk()->submitScoreLeaderboard(FString leaderBoardId, FString leaderBoardScore);

Casebook

The following covers frequently asked questions and answers related to Casebook.

Check GAMEPOT API latency

To check the latency of the GAMEPOT API, see Test latency.

image.png

Dashboard

The following covers frequently asked questions and answers related to the dashboard.

Q. I can't receive push messages.
A. Check the values of access key, secret key, SENS-PUSH, and SENS-SMS in Dashboard > Project settings > Ncloud API authentication key. Make sure you have set up the Certificate in the SENS project for that authentication key.
image.png

Q. I'm curious about how the user metric retention is calculated.
A. To exclude false positives from sources such as ads, it counts users who create an account and then log in the next day as new users.

<Example>
In the image below, looking at 2020-01-07, it determines that there are 5 new users from 2020-01-07 who accessed on 2020-01-08 and that there are 5 new users on that date (2020-01-07). (Same as the Day 1 value) Based on that number of people, it shows 1 person connected on Day 2 (the next day, 2020-01-09), 0 people connected on Day 3, and 1 person connected on Day 4. Out of 5 users, there will be a period of 0% in the middle because they are counted on the nth day.
image.png

Q. If I add a member to the suspension list and then proceed with a Google refund, will their user ID be activated?

A. If a user ID is added to the suspension list and is inactive, then even a Google refund won't automatically reactivate the list. Also, we are not preventing account access for deactivated user IDs.

Remarks

The following covers other frequently asked questions and answers related to GAMEPOT.

Q. I get an error extracting google-service.json from the Firebase console.
A. On the Firebase console, extract google-service.json with the SHA fingerprint registered. Otherwise, some values in the JSON file may be extracted with missing values, which may prevent normal login.
image.png

Q. When validating GAMEPOT login, a Token authentication failed error occurs.
A. This is an issue that may be experienced by companies using the beta zone. If the login validation request URL is set to "https://gamepot.apigw.ntruss.com/gpapps/v1/loginauth," change it to "https://cloud-api.gamepot.io/loginauth" and check again.

  • Real zone: https://gamepot.apigw.ntruss.com/gpapps/v1/loginauth
  • Beta zone: https://cloud-api.gamepot.io/loginauth (service terminated)

Q. When running a build, the message "The app was launched abnormally. Please download it from the store." pops up.
A. This may be caused by an incorrectly set hash key in the Dashboard > Project settings > [General] tab. Delete the hash key or enter the correct hash key and check.
image.png

Q. When attempting to make a payment in the GAMEPOT SDK, the GAMEPOT SDK receives a success response, but the payment is not registered in Dashboard > Payment > Payment list, and the request is not passed to the game server.
A. In the Dashboard > Project settings > [General] tab, make sure the JSON value of your Google API key is registered. When the Google API key was set to version 2, payment was possible without the key value, but from version 3, you need to enter the key value.
If it is already entered, click View help to generate the JSON value again and register.

Note

When a new account is issued and the key value is extracted, it takes about a day for the new key to be applied.

image.png

Q. After completing the payment, I get a Google Play Developer API not linked error.
A. This is an issue that can occur when the Google API key settings are incorrect. Click View help to regenerate the JSON value and register it.

Note

When a new account is issued and the key value is extracted, it takes about a day for the new key to be applied.

image.png

Q. The payment API fails even though I applied the key value after issuing a new service account.
A. We received a bug report from Google Console (2020.02.13) that the payment API fails even though a new key has been issued and applied (when transferring a Google Services account).
The following error occurs after the payment process.

  • Error text: "The current user has insufficient permissions to perform the requested operation."

After further checking that the permissions are set correctly for the service account in Google Console, create a random in-app product in Google Console and see if the issue is resolved.

Q. I get an error receiving iOS push messages.
A. If you get an error receiving iOS push messages, see the (KO) iOS APNS certificate registration guide or (EN) iOS APNS certificate registration guide and proceed as follows.

  1. Make sure you have your authentication key and certificate registered under Certification in your SENS settings.
  2. iOS requires different certificates to be registered depending on the type of provisioning profile used at build time.
    [Development]: Upload the Push Development certificate in Xcode > Provisioning, and then set Type to Sandbox.
    [Adhoc/Distribution]: Upload the Push Development certificate in Xcode > Provisioning, and then set Type to Production.
  3. GAMEPOT passes the push token to the server upon successful login. Therefore, once you've registered the certificate, proceed to log in on the client and check.
  4. On iOS, you won't receive pushes while the app is in foreground. Click the home button and check the main screen to see if you're receiving pushes.
  5. For iOS, when you build in Xcode, the capability must include Push Notification. If you're not getting pushes, check to see if this was left out at build.

Q. I want to test payments on iOS.
A. To test your payments on iOS, proceed as follows.

  1. Tap Settings >> iTunes & Store >> Apple ID: XXXX >> Log out from the device you want to test on.
  2. Run the app
  3. Select the app's in-app purchase item.
  4. Select to use the existing appleID when pop-up occurs.
  5. Enter the test account ID and password to log in.
    • Depending on the status, multiple pop-ups may appear.
  6. The price and name of the in-app purchase item are displayed in the form of a pop-up, and the text [Environment: Sandbox] is displayed.
  7. Select Purchase.
  • When the [Environment: Sandbox] text is displayed on the payment page, no actual charges will be made.

Q. I want to change the app name that appears in Push messages.
A. The app name is determined at client build time. To change the app name for the language, proceed as follows.
image.png

  • Android

    app/src/main/res/values-country code/strings.xml
    

    <Example> If you want to change the name of your app when the device language is English

    app/src/main/res/values-en/strings.xml
    
  • Unity Android

    Assets/Plugins/Android/GamePotResources/res/values-country code/strings.xml
    

    <Example> If you want to change the name of your app when the device language is Korean

    Assets/Plugins/Android/GamePotResources/res/values-ko/strings.xml
    

    strings.xml

    <?xml version="1.0" encoding="utf-8"?>
        <resources>
            <string name="app_name">Set the app name for the language</string>
        </resources>
    
  • iOS

    1. Add the desired language in the Localization field under Xcode > Targets > Info.
      image.png
    2. In Xcode > File > File, click the strings file icon, and then click the [Next] button. Create the file by naming it InfoPlist.
    3. Select the created file and enter the Localization settings.
      image.png
    4. Selecting a language creates an associated file, where you enter the app name for each language.
      [InfoPlist.string] CFBundleDisplayName="Set the app name for the language";
      image.png

Q. Each store has a different value for Price in the GamePot.getPurchaseItems() API when getting in-app list information.
A. The following values are passed by each store's in-app SDK when fetching in-app listings.

  • Google Store: The value of price is the currency + in-app price.
    <Example> ₩1,000
  • Apple Store: The value of price is the in-app price.
    <Example> 1000

See the price_currency_code value to indicate the currency unit on iOS.
<Example> price_currency_code: KRW

Q. I can't log in to my dashboard admin account with 5 failed passwords. (V2 dashboard users)
A. If you fail to log in to your admin account more than five times, you'll need to reset your password. Proceed with password reset as follows.

  1. Log in with the admin account in the NAVER Cloud Platform console, and then click the Services > Gaming > GAMEPOT menu.
  2. After selecting the dashboard you want to reset your password for, click on the Manage project item and you will see the Reset password menu.
  3. When you select the Reset password menu, a pop-up appears asking you to enter your admin account, and when you enter the details, an email is sent to you for the reset.
    image.png

image.png

image.png

Q. I'm curious about the scope of dashboard data reset support.
A. It is recommended to organize and request the desired list before store deployment. Resetting data after the app is deployed is not recommended because the distinction between real users' data and dummy data is not clear, causing confusion in the service. If you conduct a CBT first and do not keep your membership information during the launch, be sure to request deletion before the launch, as the history of GAMEPOT account integration must also be deleted when the game DB is reset. The deleted data cannot be restored, so be careful.
Deletion is only possible for dashboards in the Korea Region.

The range of data that can be deleted for each dashboard menu is as follows.

List Before store deployment After store deployment
User indicators X X
Sales indicators X X
Member (including social account integration) O Conditionally available
Payment list O O
Notice X X
Maintenance check X X
Update X X
Message X X
Coupons X X
Support X X
Game > Player X X
Game > Gift X X

Q. I'm curious about the list of personal information collected under Apple's iOS 14 privacy policy enhancements.
A. Based on the Apple Console > General information > [App privacy] tab (which is not associated with customer identifiable information and is not intended to be tracked as such), the GAMEPOT SDK collects the following.

  • Identifier
    • User ID (account information)
    • Device ID (IDFA, auto generated)
    • Purchased item
  • User contents
    • Photos or video
    • Support

For user content, this applies to customers who use GAMEPOT PRO or higher, when they use the GAMEPOT customer inquiry UI. When using the Object Storage feature, you can upload image files as attachments to customer inquiries.

Q. I'm curious about the error codes at payment/login.
A. The following are error codes that can occur during payment and login.

  • Error code on payment failure - 405: This occurs when the same payment information is received by the GAMEPOT server.

    • If the payment logic is called continuously without completion after calling the payment API, check if it is called after the payment is processed.
    • When the same payment information is requested twice due to a network issue, and if the payment information is sent to the GAMEPOT server but no response is received (the GAMEPOT server received the related information and processed it - Purchase webhook API is sent), the client sends the payment information to the GAMEPOT server again, and the GAMEPOT server recognizes the case as duplicate processing and treats it as a failure. This happens because the client structure does not allow it to receive only one response, so in reality, the user should have received the payment item and there should be no operational issues in this case.
  • Error code on payment failure - 5000: An unknown error occurred in the payment and an error occurred in the store's in-app SDK, as described in the guide.

    • This occurs when the payment environment on the device is not set up or payment-related settings are not set up. E.g., Payment module library not installed at build time, missing payment-related settings in each store console, missing payment-related settings information in the GAMEPOT dashboard, on-device payment account not matching the country where the app is deployed, etc. See Payment error.
    • "A payment error has occurred. code (number) ..." message is caused by an in-app SDK error, and the number in the code () is the error code for the in-app SDK. In the case of Google payment, certain users sometimes get an error about code(5) when checking out.
      • APK tamperability - Prompt to delete the app with the issue and download the version again from the store.
      • If the issue persists after reinstalling the app, it may be an issue with the information stored in the Google Store app and the payment information. Try deleting Google Account from the device and deleting data from the Google Store app, and re-registering the Google account.
      • Google in-app error code reference: https://developer.android.com/reference/com/android/billingclient/api/BillingClient.BillingResponseCode?authuser=1#DEVELOPER_ERROR
  • Error code at login - 407: This is a case where the user ID has been suspended. In the error message, the reason for the suspension set in the dashboard is passed.

Q. How do I change the currency unit on the payment in-app list?
A. The currency units in the payment in-app listings are provided by your store's in-app SDK. Generally, the country and payment method of the payment account from which you're making the payment will determine the relevant information. If you'd like to see the currency units for a different country, then you'll need to create a payment account for that country and set up the relevant settings. (For Google, you'll need to delete all accounts except your payment account in your on-device account settings.)

Q. What should I consider when downgrading from GAMEPOT Pro to Essential?
A. Statistics (user metrics/sales metrics), maintenance & updates, customer support (customer inquiries/terms/page features, etc.), coupons, etc. should be implemented separately.

  • The GAMEPOT Essential product supports the following menus.
    Operation > Member (list/daily users/new users/concurrent users/suspension)
    Operation > Payment (list/IAP/statistics)
    Operation > Message (push message/text message)

Q. In GAMEPOT, which features does the Google > Select Project > App Content > Data Security section provide and what are they for?
A. App communication uses HTTPS communication method which is encrypted. If there is a feature to unsubscribe, it is considered as deleting information from the user's perspective.
It is used for app functionality purposes only.

  • Personal Information
    • Email address
    • User ID
  • Device or other ID
    • Device or other ID
  • Pictures or Videos
    • Photo
    • Video

Photos and videos apply to customers who use GAMEPOT PRO or higher, when they use the GAMEPOT customer inquiry UI. When using the Object Storage feature, you can upload image files as attachments to customer inquiries.

Changes in Ver 3.5.1 - Use of this version prohibited due to security issues

Change in guest login handling method (Ver 3.5.1)

Starting with version 3.5.1 of the GAMEPOT SDK, the guest login handling has been changed.

  • Previous method
    In previous versions of the GAMEPOT SDK 3.5.0 and earlier, a new GAMEPOT user ID was provided when a guest login attempt was made after deleting the app or deleting in-app data.

  • Changed method
    Starting with version 3.5.1 of the GAMEPOT SDK, the previously used GAMEPOT username information is provided when a guest login attempt is made after deleting the app or deleting in-app data. The GAMEPOT user ID is generated based on the ANDROID_ID and UDID information. User ID information is not retained if related information changes.
    Guest login attempts after membership withdrawal after a successful guest login or a successful account integration with another social login will provide the new GAMEPOT user ID information as the one used previously.
    If a user has successfully logged in as a guest using GAMEPOT SDK 3.5.0 or earlier and updates to GAMEPOT SDK 3.5.1, the user will be provided with their old user ID information, but will be provided with a new GAMEPOT user ID (new guest login user ID) when attempting to log in as a guest after uninstalling the app or deleting in-app data. The guest user ID of the old version will not be retained when the app is uninstalled or in-app data is deleted.
    If you try to log in as a guest after uninstalling the app or deleting in-app data after the above cases, you will be provided with your old user ID (the last new guest login user ID you received).

Migration

Ver Unity 2.1.1 To Ver Unity 2.1.2 or New Version

Unity version 2019.02.XX or earlier

  • Proceed with the update in the same way as before

Unity 2019.3.0 - 2019.3.6

Keep your existing settingsTemplate.gradle/mainTemplate.gradle files.
Due to the nature of this version of the engine, there are restrictions on mounting external libraries, so we recommend using a different version of the Unity plugin.

Unity 2019.3.7 or later (when working from scratch)

Based on GAMEPOT SDK version 3.5.1
Notes when changing mainTemplate.gradle/launcherTemplate.gradle/baseProjectTemplate.gradle files

  • [File]GAMEPOT_UNITY[Year][Intermediate][Minor or later version]
  • UNITY_2019_3_Over: used for UNITY 2019.3.XX or later versions
  • UNITY_2020_XX_Over_2022_1_XX: used for UNITY_2020 or later and UNITY_2022.1.XX or earlier versions
  • UNITY_2022_2_XX_Over: used for 2022.2.XX or later versions
  1. Delete the mainTemplate.gradle file (delete the existing file as it is based on Unity 2018).
  2. Find the mainTemplate.gradle file for your version of Unity and rename it.
    The GAMEPOT environment variable is defined in the launcherTemplate file, so you don't need to define it in the mainTemplate file.
    • Case 1) If the Unity Editor version is 2019.4.40, rename the mainTemplate_GAMEPOT_UNITY_2019_3_Over file to mainTemplate.gradle.
    • Case 2) If the Unity Editor version is 2021.3.13, rename the mainTemplate_GAMEPOT_UNITY_2020_XX_Over_2022_1_XX.gradle file to mainTemplate.gradle.
    • Case 3) If the Unity Editor version is 2022.3.00, rename the mainTemplate_GAMEPOT_UNITY_2022_2_XX_Over file to mainTemplate.gradle.
  3. Find the launcherTemplate.gradle file for the version of Unity you're installing, rename it, and then open it to define the GAMEPOT environment variables.
    • Case 1) If the Unity Editor version is 2019.4.40, rename the launcherTemplate_GAMEPOT_UNITY_2019_3_Over file to launcherTemplate.gradle.
    • Case 2) If the Unity Editor version is 2021.3.13, rename the launcherTemplate_GAMEPOT_UNITY_2020_XX_Over_2022_1_XX.gradle file to launcherTemplate.gradle.
    • Case 3) If the Unity Editor version is 2022.3.00, rename the launcherTemplate_GAMEPOT_UNITY_2022_2_XX_Over file to launcherTemplate.gradle.
  4. Find the baseProjectTemplate.gradle file for the version of Unity you're installing, and rename it.
    • Case 1) If the Unity Editor version is 2019.4.40, rename the baseProjectTemplate_GAMEPOT_UNITY_2019_X_XX file to baseProjectTemplate.gradle.
    • Case 2) If the Unity Editor version is 2021.3.13, rename the baseProjectTemplate_GAMEPOT_UNITY_2020_X_Over_2022_1_XX.gradle file to baseProjectTemplate.gradle.
    • Case 3) If the Unity Editor version is 2022.3.00, rename the baseProjectTemplate_GAMEPOT_UNITY_2022_2_XX_Over file to baseProjectTemplate.gradle.

Based on GAMEPOT SDK version 3.4.2

  • Add baseProjectTemplate.gradle. In general, you can use the following file by renaming it. baseProjectTemplate_GAMEPOT_UNITY_2019_3_Over.gradle => baseProjectTemplate.gradle
  • Delete settingsTemplate.gradle. ../Assets/Plugins/Android/settingsTemplate.gradle
  • Define environment variable definitions in launcherTemplate.gradle, such as gamepot_project_id, that were defined in the mainTemplate.gradle file. In general, define the values of the GAMEPOT environment variables after renaming the following file. launcherTemplate_GAMEPOT_UNITY_2019_3_Over.gradle => launcherTemplate.gradle
  • Refer to the mainTemplate_GAMEPOT_UNITY_2019_3_Over.gradle file and set mainTemplate.gradle. Environment variables such as gamepot_project_id are defined in launcherTemplate.gradle, so you can delete them.

Unity 2022.2.X or later

As the formatting within the baseProjectTemplate.gradle/launcherTemplate.gradle/mainTemplate.gradle files has changed in Unity Editor version 2022.2.X and later, you can apply based on the patch file and proceed to build.
gradle_files for 2022.2.X: Download

Unity 2023.1.X or later

As the formatting within the baseProjectTemplate.gradle/launcherTemplate.gradle/mainTemplate.gradle files has changed in Unity Editor version 2023.1.X, you can apply based on the patch file and proceed to build.

If you encounter a multidex-related error in Unity 2022.3.X, then proceed with the following.

  1. Select the Unity Editor > Player Settings > Publishing Settings > Custom Gradle Properties Template field.
  2. Add the android.useAndroidX / android.enableJetifier settings in the ../Assets/Plugins/Android/gradleTemplate.properties file and save it.
    org.gradle.jvmargs=-Xmx**JVM_HEAP_SIZE**M
    org.gradle.parallel=true
    unityStreamingAssets=**STREAMING_ASSETS**
    **ADDITIONAL_PROPERTIES**
    
    android.useAndroidX= true      // Add
    android.enableJetifier=true    // Add
    

Additional fixes when using Unity versions 2020.X, 2021.X, and 2022.1.X (for GAMEPOT SDK 3.4.X and earlier)

  • Patch for Unity version 202X.X: Download
  • Replace folders and files
    ../Assets/ExternalDependencyManager
    ../Assets/Firebase
    
  • Add folders and files
    ../Assets/Parse
    (Optional) ../Assets/GooglePlayPlugins   //com.google.android.appbundle-1.7.0.unitypackage 
    
  • Edit folder name
    Existing: ../Assets/Plugins/Android/Firebase
            Edited: ../Assets/Plugins/Android/FirebaseApp.androidlib
            Existing: ../Assets/Plugins/Android/GamePotResources
            Edit: ../Assets/Plugins/Android/GamePotResources.androidlib
    
  • Edit mainTemplate.gradle (edited based on the change of the folder name).
    Previous: 
        dependencies {
            ...
            implementation project('GamePotResources')
            implementation project('Firebase')
        Edited:
        dependencies {
            ...
            implementation project('GamePotResources.androidlib')
            implementation project('FirebaseApp.androidlib')
            ...
        aaptOptions {
            noCompress = ['.ress', '.resource', '.obb'] + unityStreamingAssets.tokenize(', ') // add
            ...
        - Edit launcherTemplate.gradle     
        aaptOptions {
            noCompress = ['.unity3d', '.ress', '.resource', '.obb'**STREAMING_ASSETS**]+ unityStreamingAssets.tokenize(', ') //add
            ...
    

In the Unity Editor, disable all libraries in the ../Assets/Plugins/Android/nativeLibs folder from being included in Android builds.
image.png{height="" width="70%"}
```
6. When the "Please fix your Bundle ID" pop-up appears, check the package name, and then click the [Apply] button.
The Google Android Resolver library should recognize the google-services.json or GoogleService-Info.plist and accept it with a pop-up confirming that you want to parse it. This needs to be done in order for Google-related actions to work properly.
image.png{height="" width="70%"}

  • For Android/iOS in Unity Editor 2021.X and later, enter the package name manually in the Build Settings > Player Settings > Other Settings menu, switch the platform to the OS you want to build on, and then build.
    If you have not completed the above, then the Please fix your Bundle ID pop-up > Apply button will not work with an Ambiguous match found error due to an internal bug in the Google resolver library.

    • Related content: https://github.com/googlesamples/unity-jar-resolver/issues/523#issuecomment-1147499484
  • In Unity Editor version 202X.X, replace the sample scene file: [Download] (https://xyuditqzezxs1008973.cdn.ntruss.com/patch/GamePotSampleSin_unity_2021.zip)

  • If you encounter the following error in the Android version build environment in Unity Editor 2019.X or earlier, then download the patch from [Patch download] (https://xyuditqzezxs1008973.cdn.ntruss.com/patch/patch_for_unity_202X_X.zip) and fix it as follows.

System.TypeLoadException: Could not resolve type with token 01000074 (from typeref, class/assembly Google.EditorInitializer, Google.VersionHandlerImpl, Version=1.2.0.0, Culture=neutral, PublicKeyToken=null)
UnityEditor.EditorAssemblies:ProcessInitializeOnLoadAttributes (System.Type[]) (at /Users/bokken/buildslave/unity/build/Editor/Mono/EditorAssemblies.cs:138)
- Replace folders and files
../Assets/ExternalDependencyManager
../Assets/Firebase


- Edit folder name 
Existing: ../Assets/Plugins/Android/Firebase
Edited: ../Assets/Plugins/Android/FirebaseApp.androidlib

- Edit mainTemplate.gradle (edited based on the change of the folder name).
Previous: 
dependencies {
    ...
	implementation project('Firebase')
Edited:
dependencies {
    ...
	implementation project('FirebaseApp.androidlib')
    ...
  • (As of macOS Monterey 12.3) If you get the following error when building Unity, replace the files in ./Assets/Firebase/Editor.
    • https://github.com/techyworm10/firebase-unity-sdk-editor-python-fix

Download the patch file from [Patch download] (https://xyuditqzezxs1008973.cdn.ntruss.com/patch/Fixed_Firebase.Editor.zip), unzip it, and place the file in the /Assets/Firebase/Editor folder (replace the Firebase.Editor.dll file).

Error text

Unable to find command line tool python required for Firebase Android resource generation.
python is required to generate the Firebase Android resource file google-services.xml from Assets/Plugins/Android/google-services.json. Without Firebase Android resources, your app will fail to initialize.
python was distributed with each Firebase Unity SDK plugin, was it deleted?
System.ComponentModel.Win32Exception (0x80004005): ApplicationName='python',