FAQ
    • PDF

    FAQ

    • PDF

    Article Summary

    Available in Classic and VPC

    Login Error

    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()); )

    2. 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

    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.png
    3. 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 Firebase console

    gamepot-faq01.png

    3-3) In the Google Developer Console, you will see the following page in the Settings > App integrity menu.
    - (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-faq_appsigning.png

    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.
      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

    • Access https://console.cloud.google.com website
    • Go to the Project > Top left menu > APIs & Services > Credentials > OAuth 2.0 Client IDs menu, and check if it has the Android/iOS/web application information.

    gamepot-gamepot-faq04.png

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

    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, you need to add the SHA-1 value of the keystore managed by the console to the Firebase console.
    gamepot-faq06.png

    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-gamepot-faq15.png

    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 Product Name item in the Xcode > Targets > Build Settings.
    gamepot-faq_googlesignin.png

    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.
    gamepot-gamepot-faq09.png

    • 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.

    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

    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. Place 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

    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. You need to make sure that the settings in the LINE Developers Console are correct.
    line_setting.jpeg

    Apple login (Android)

    1. When the error message when trying to log in is Insufficient data!
      • This is because there is no relevant setting in GAMEPOT > Dashboard > Project settings > General > Apple ID login. Fill in the information in the help.
    2. When you see the invalid_client error page when trying to log in
      • This is when you select 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 GAMEPOT > Dashboard > Project settings > General > Apple ID login item 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

    Common

    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.
    gamepot-gamepot-faq16.png

    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 Dashboard > Project settings > General > Public key. Enter the key by referring to Help.
    gamepot-gamepot-faq17.png

    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.
      gamepot-gamepot-faq18.png

    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.
      gamepot-gamepot-faq19.png

    4. Access the test participation URL to see if you've signed up for the test.
      gamepot-gamepot-faq34.png

    5. Make sure you've added a test account to License testing in Console > Settings.
      gamepot-gamepot-faq20.png

    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

    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.

    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
      gamepot-gamepot-faq21.png

    2. Check whether the license key for the ONE Store console has been applied
      gamepot-gamepot-faq22.png

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

    3. Whether the client secret is applied in the ONE Store console
      gamepot-gamepot-faq24.png

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

    Q. After completing the payment, the payment fails with the message "The result value retrieved does not exist 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

    • ONE Store app account registration and payment preferences set to Sandbox status in the ONE Store console > In-app information > Test payment menu

    • 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-gamepot-faq26.png

    • Make sure that the payment item (test user) address is registered in the GAMEPOT dashboard > Project settings > Webhook field.
      gamepot-gamepot-faq27.png

    If your ONE Store checkout page is in a production environment

    • ONE Store app account registration and payment preferences set to Commercial testing status in the ONE Store console > In-app information > Test payment menu

    • 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-gamepot-faq28.png

    • Make sure that the payment item (service) address is registered in the GAMEPOT dashboard > Project settings > Webhook field.
      gamepot-gamepot-faq29.png

    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

    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. Go to Dashboard > Project settings > White user, and add a white user (Type: development, test device IP).

    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 entry must be added to the Xcode > Capability section.
    • 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

    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 have your payment settings set up. 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

    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.
    In the console (terminal), go to the AdBrixRM.framework file location and 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

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

    Service launch

    Q. Is there anything I should pay attention to when launching a service for the iOS platform?
    A. 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.

    Push

    Q. I'm not getting notifications on iOS.
    A. Check the following 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.
        • Set type to Sandbox in the Development Provisioning > Register Apple Development certificate
        • Set type to Production in the Adhoc/Distribution Provisioning > Register iOS Distribution certificate
    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 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 on the App Settings > Cloud Messaging tab in the Firebase console.
      • Check the settings of Certificate field in the NAVER Cloud console > Simple & Easy Notification Service (SENS) > Push.
        https://console.ncloud.com/sens/push-certificate
    • 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

    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 Developer Console, you will see the following page in the Settings > App integrity menu. 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-faq_appsigning.png

    User ID transfer

    Note

    You can only transfer a user ID to another username if the user ID is linked 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 and 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-faq30.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 and check if the social ID you transferred exists.
      gamepot-faq31.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

    1. Search for the user ID in the GAMEPOT dashboard > Member > List page 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-faq32.png

    Integrate dashboard advance reservation page

    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.
    Go to Game > Advance reservation > Add > Name, and then enter the name and save it.
    From the GAMEPOT advance reservation page's Category Id, select the saved name and click the copy icon next to it.
    gamepot-faq33.png

    3. SMS verification text

    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"
    }
    
    AttributeTypeRequiredDescription
    projectIdString-GAMEPOT SDK's projectId
    categoryIdString-GAMEPOT advance reservation page's categoryId
    fromString-Approved caller ID
    toString-Contacts to receive SMS verification code
    storeString-Store (Google, ONE, Apple)

    Response

    {
        "code": 200,
        "message" : ""
    }
    
    AttributeTypeDescription
    codeIntResult value (200: success, 404: failure)
    errorStringIt 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"
    }
    
    AttributeTypeRequiredDescription
    projectIdString-GAMEPOT SDK's projectId
    categoryIdString-GAMEPOT advance reservation page's categoryId
    codeString-Received verification code
    toString-Contacts to receive SMS verification code
    storeString-Store (Google, ONE, Apple)

    Response

    {
        "code": 200,
        "message" : ""
    }
    
    AttributeTypeDescription
    codeIntResult value (200: success, 404: failure)
    errorStringIt 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":""
    }
    
    AttributeTypeRequiredDescription
    projectIdString-GAMEPOT SDK's projectId
    categoryIdString-GAMEPOT advance reservation page's categoryId
    codeString-Received verification code
    fromString-Approved caller ID
    toString-Contacts to receive SMS verification code
    storeString-Store (Google, ONE, Apple)
    tagString-Other information (information such as inflow channel)

    Response

    {
        "code": 200,
        "message" : ""
    }
    
    AttributeTypeDescription
    codeIntResult value (200: success, 404: failure)
    errorStringIt displays contextual errors

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

    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 a different login, but it tries the Google Play login. 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

    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.

    • Put 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.

    • Put 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

    Check GAMEPOT API latency

    https://tools.bunny.net/latency-test?query=gamepot.apigw.ntruss.com
    gamepot-faq37_gamepotapi_ko.png

    Dashboard

    1. When push messages are not received

    1. Check the values of AccessKey, Secret Key, SENS-PUSH, and SENS-SMS in Dashboard > Project settings > Ncloud API authentication key.
    2. Make sure you have set up the Certificate in the SENS project for that authentication key.
      gamepot-faq38_ncloud_ko.png

    2. User metric retention calculation method
    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.
    gamepot-faq39_retention_ko.png

    3. When you deactivate member suspensions

    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.

    Others

    Q. When extracting google-service.json from 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.
    gamepot-faq35.png

    Q. When validating GAMEPOT login, the 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 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.
    gamepot-faq36.png

    When attempting to make a payment in the GAMEPOT SDK, the GAMEPOT SDK receives a success response, but the payment is not registered in the Payment > Payment list in the dashboard and the request is not passed to the game server.
    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.
    ref.) When a new account is issued and the key value is extracted, it takes about a day for the new key to be applied.
    gamepot-faq37.png

    5. After completing the payment, I get a Google Play Developer API not linked error.
    This is an issue that can occur when the Google API key settings are incorrect. You need to click View help to regenerate the JSON value and register it.
    ref.) When a new account is issued and the key value is extracted, it takes about a day for the new key to be applied.
    gamepot-faq43_nolinkederror_ko.png

    6. The payment API fails even though I applied the key value after issuing a new service account.
    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.

    7. iOS push message reception issue

    iOS APNS certificate registration guide

    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.
      Upload [Development]: Click Provisioning > Push Development, in that order, to upload the certificate, and set Type to Sandbox.
      Upload [Adhoc/Distribution]: Click Provisioning > Push Distribution, in that order, to upload the certificate, and 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.

    8. iOS payment testing method

    1. Tap Settings > iTunes & Store > Apple ID: XXXX > Log out.
    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.

    9. The app name for push messages is determined at client build time.

    gamepot-faq44_appname_ko.png

    If you want to change the name of your app to match the language, you can do so in the following way.

    • 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. Go to Xcode > Targets > Info > Localization, and add languages you want to add
        gamepot-faq45_xcode1_ko.png
      2. Go to Xcode > File > File and click the strings file icon -> Next -> Create a file after defining it with the filename InfoPlist
      3. Select the created file and set the Localization settings.
        gamepot-faq46_xcode2_ko.png
      4. Selecting a language will create associated files, and you can give each of them a language-specific app name.
        [InfoPlist.string] CFBundleDisplayName="Set the app name for the language";
        gamepot-faq47_xcode3_ko.png

    10. Each store has a different value for Price in the GamePot.getPurchaseItems() API when getting in-app list information.
    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

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

    11. I can't log in to my dashboard admin account with 5 failed passwords. (V2 dashboard users)

    1. In order, access the Services > Gaming > GAMEPOT menus on the NAVER Cloud Platform console with an admin account.
    2. After selecting the dashboard you want to reset your password for, click on the Manage projects 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.
      gamepot-faq38.png

    gamepot-faq39.png

    gamepot-faq40.png

    12. Dashboard data reset support coverage
    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.

    ListBefore store deploymentAfter store deployment
    User indicatorsXX
    Sales indicatorsXX
    Member (including social account integration)OConditionally available
    Payment listOO
    NoticeXX
    Maintenance checkXX
    UpdateXX
    MessengerXX
    CouponsXX
    SupportXX
    Game > PlayerXX
    Game > GiftXX

    13. List of personal information collected under Apple's iOS 14 privacy policy enhancements
    Based on the General information > [App privacy] tab in the Apple Console (which is not linked to customer identification 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.

    14. Frequently asked error codes for payment/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 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.

    15. How do I change the currency unit on the payment in-app list?
    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.)

    16. What should I consider when downgrading from GAMEPOT Pro to Essential?
    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)

    17. What features are available in Google > App content > Data security and how can I use them?
    App communication uses https communication method which is encrypted. If a member withdrawal is considered as information to be deleted.
    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 the version of Unity you're installing, and rename it. GAMEPOT environment variables are defined in the launcherTemplate file, so you don't need to define them in the mainTemplate file. Use it to define any additional libraries you put in.
      • 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.
    gamepot-faq51_unity_ko.png

    1. 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.
      gamepot-faq52_unity2_ko.png
    • 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 [Apply] button in the "Please fix your Bundle ID" pop-up 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',
    

    Was this article helpful?

    Changing your password will log you out immediately. Use the new password to log back in.
    First name must have atleast 2 characters. Numbers and special characters are not allowed.
    Last name must have atleast 1 characters. Numbers and special characters are not allowed.
    Enter a valid email
    Enter a valid password
    Your profile has been successfully updated.