FAQ
    • PDF

    FAQ

    • PDF

    Article Summary

    Classic/VPC環境で利用できます。

    ログインエラー

    ソーシャルログイン機能の場合、基本的にそのプラットフォームの開発ガイドを基準にします。問題が発生した場合、まず、そのプラットフォームのログイン開発ガイドをご確認ください。

    Q. ログインしようとすると、以下のようなエラーが表示されます。
    Please check if you have set the 'XXXX' channel before using it. Did you import or set 'XXXX' information in gradle.build file
    A. XXXXタイプのログインに必要な GAMEPOT SDKライブラリがないか、初期化後にログイン関連の設定を行わなかった場合です。

    1. Android / iOSネイティブ環境の場合

    • ログイン関連の GAMEPOTライブラリがビルド時に搭載されたかご確認ください。
      • 例: android基準 Appleログイン時、gamepot-channel-apple-signin.aarファイルが搭載されている必要があります。
    • ログインタイプに合った設定値が入っているかご確認ください。
      • 例: (Android) build.gradle/(iOS) GamePotConfig-Info.plist内で設定値のセッティングやその他の設定を行う
    • addchannel処理されているかご確認ください。
      • 例: android基準 Appleログインのために GAMEPOT SDKを初期化後、GamePotChannel.getInstance().addChannel(this, GamePotChannelType.APPLE, new GamePotAppleSignin()); )

    2. Unity環境の場合

    • ログイン関連の GAMEPOTライブラリがビルド時に搭載されたかご確認ください。
      • 例: android基準 Appleログイン時、/Assets/Plugins/Android/libsフォルダに gamepot-channel-apple-signin.aarファイルが搭載されている必要があります。
    • ログインタイプに合った設定値が入っているかご確認ください。
      • 例: Unity 2019.02.XX以前のバージョン: mainTemplate.gradle / Unity 2019.03.XX以降のバージョン: launcherTemplate.gradle内に設定値のセッティングやその他の設定を行う

    Googleログイン

    Q. ログインしようとすると、すぐにログインキャンセルが返されます。(Android, iOS)
    A. 必要な環境が設定されていないために起こる現象です。

    1. Firebase設定ファイルの google-service.jsonファイルが、プロジェクトに正常に含まれているかご確認ください。

    2. (Android) APKのビルド時に使用した Keystoreの SHA-1値を Firebase Consoleに追加したかご確認ください。

      • SHA-1値は開発会社にお問い合わせください。
        FAQ_firebase-projectsettings_ja.png
    3. Firebase Consoleでプロジェクト設定が正常に行われたか確認
      3-1) 該当する内容が適用されたビルドで合っているか確認
      - Console上で設定した Package Name(Android) / Bundle ID(iOS)でビルドしたかどうか
      - (Android) SHA-1を抽出した Keystoreでビルドしたかどうか
      3-2) Firbase Conosoleにサポートメールを設定したか確認
      FAQ_firebase-email_ja.png

      3-3) Google開発者コンソールの設定 > アプリの完全性メニューに下記のような画面が表示されます。
      - (Android) Google Consoleでアプリ署名を使用する場合、Consoleで作成された SHA-1値も追加で入力します。
      FAQ_google-appsigning_ja.png

    4. 上記のチェック項目をすべて確認したにもかかわらず、解決しない場合は、サポートメールを別のメールに変更します。
      ごく稀に、最初のサポートメール設定時に正常に動作しない場合が発生しています。この場合、別のメールアドレスに変更します。

    1~4の項目まで試したのに、ログインしようとすると onCancel処理される場合

    • https://console.cloud.google.comサイトにアクセス
    • プロジェクトを選択してから 左上メニュー > APIとサービス > ユーザー認証情報 > OAuth 2.0クライアント IDタイプに Android/ iOS/ウェブアプリケーション情報があるか確認

    FAQ_google-certification_ja.png

    • プロジェクトを選択してから 左上メニュー > APIとサービス > OAuth同意画面 > 公開状態がプロダクションであり、ユーザータイプが外部であることを確認する
      FAQ_google-Oauth_ja.png

    Q. APKを直接インストールするとログインできますが、ストアにアップロードしたアプリをダウンロードしてログインするとログインできません。(Android)
    A. Google Developer Consoleで「アプリ署名」機能を使用したために発生する問題です。コンソールで APKをアップロードする際に「アプリ署名」を有効にすると、keystoreがコンソールで管理するキーに置き換えられて発生する問題です。コンソールで管理する keystoreの sha-1値を、Firebase consoleに追加する必要があります。
    FAQ_google-sha-1_ja.png

    Facebookログインを使用する場合、Facebook developer consoleにも新しい keystoreの keyhash値を追加する必要があります。

    Q. iOSで Googleログインしようとすると、エラー(401エラー: disabled_client)が発生します。(iOS)
    A. Firebaseコンソール設定にサポートメールが設定されていないと、問題が発生する可能性があります。Firebaseコンソールでサポートメールを設定して、ご確認ください。
    FAQ_firebase-email_ja.png

    Q. iOSで Googleログインするとポップアップが表示されますが、ゲーム名ではなく、他の値が表示されます。(iOS)
    A. Xcode > Targets > Build Settingsメニューで Product Name項目の値を変更してください。
    FAQ_googllogin_ja.PNG

    Facebookログイン

    Q. Facebookアプリがスマートフォンにインストールされていると、正常にログインできません。(Android, iOS)
    A. Facebook Developer Consoleの環境設定が正しくないせいに問題が発生する可能性があります。APKをビルドする際に使用した Keystoreのキーハッシュ値を Facebookコンソールに追加します。
    FAQ_facebook-keyhash1_ja.png

    Google Consoleで「アプリ署名」機能を使用する場合、Google Consoleで管理する keystoreの keyhash値も追加する必要があります。
    FAQ_facebook-keyhash2_ja.png

    Appleログイン

    Q. Appleログインしようとすると、エラーが発生します。(iOS)
    A. 必要な環境が正しく設定されていないために起こる現象です。

    1. Xcode > TARGETS > Signing & Capabilities > Capability > Sign In with Appleが追加されているかご確認ください。
    2. Xcode > TARGETS > Build phases > Link Binary With Librariesに LocalAuthentication.framework、AuthenticationService.frameworkが追加されているかご確認ください。 Targetのバージョンが iOS 13以前の場合、AuthenticationService.frameworkは optionalに設定します。
      xcode-setting1.jpeg

    NAVER IDでログイン(ネアロ)

    Q. NAVERログインしようとすると、エラーが発生します。(Android, iOS)
    A. NAVER Developers Consoleの環境設定がビルド設定と異なると、問題が発生する場合があります。NAVER Developers Applicationの設定とビルド設定が一致しているかご確認ください。
    naver_setting1.jpeg

    Q. NAVER Cafe SDKと連携したら、ウェブビューでネアロ(NAVER IDでログイン)ができません。(iOS)
    A. ネアロ SDKと Cafe SDKのログインモジュールが共存しているために発生する問題です。NAVER Cafe SDKを一緒に連携する場合にのみ適用されます。

    1. パッチファイルをダウンロードします。(Download)

    2. プロジェクト内に存在する2つの既存の frameworkを削除します。

      • GamePotNaver.framework
      • NaverThirdPartyLogin.framework(存在する場合)
    3. ダウンロードしたパッチ(GamePotNaver.framework)を既存のパスに入れます。

      • iOS UIWebviewの問題で、NAVER Cafe SDKは4.4.7以降のバージョンを使用します。
    4. (UNITY ONLY) NAVER Cafeの初期化段階で、url schemeを明示的に追加します。
      ../Assets/NCSDK/Plugins/iOS/NCSDKUnityManager.mm
      naver_setting3.jpeg

    5. info.plistの URL Scheme値の優先順位を1番目に変更します。

    LINEログイン

    Q. LINEログインしようとすると、エラー(400エラー: Bad_Request)が発生します。(Android, iOS)
    A. LINE Developers Consoleの環境設定が正しくないと、問題が発生する可能性があります。LINE Developers Consoleの設定が正しいかどうかご確認ください。
    line_setting.jpeg

    Appleログイン(Android)

    1. ログイン試行時のエラーメッセージ: Insufficient data! の場合
      • GAMEPOT > ダッシュボード > プロジェクトの設定 > 一般メニューで Apple ID Login項目に関連設定がない場合です。ヘルプの内容を確認して記入します。
    2. ログイン試行時に invalid_clientエラー画面が表示される場合
      • Appleコンソール上で「Primary App ID」項目に使用するアプリの App IDを選択した後、「Register Website URLs」項目に GAMEPOT APIドメインと Return URLが正しく入力されなかった場合です。ヘルプボタン内の Client IDを設定する7番項目を参考にします。
    3. Apple SDKでログイン失敗/エラーメッセージが Error occurs from apple server. の場合
      • GAMEPOT > ダッシュボード > プロジェクトの設定 > 一般メニューで Apple ID Login項目に記入された情報に誤りがあり、Appleサーバでエラーが発生した場合です。 ヘルプボタン内の Keyを設定する部分を確認し、キーを保存し直します。

    決済エラー

    共通

    Q. 決済しようとすると「productid was wrong!」 というメッセージが表示されます。
    A. GAMEPOTダッシュボード > 決済 > IAPにストアの商品 IDを追加します。
    FAQ_purchase_item_ja.png

    Q. 最初の決済試行では応答がなく、2回目の決済試行で決済に成功したと応答がありました。(Play Store, ONE Store)
    A. ダッシュボード > プロジェクトの設定 > 一般メニューで Public Keyのキーが正しくない場合です。ヘルプを参考にしてキーを入力します。
    FAQ_gamepot-public-key_ja.png

    Google Play Store

    Q. Google決済のポップアップは表示されますが、決済が行われません。

    A. Google決済ができる環境が正しく設定されていないために発生する場合です。以下の項目をご確認ください。

    1. コンソール > アプリ情報 > In-App商品に In-Appアプリがアクティブ APKになっているか確認
      FAQ_google-inappitem_ja.png

    2. コンソールにアプリが公開された状態であるか確認
      プロダクショントラックではなく、非公開/内部テストトラックにアップロードします。可能であれば、内部テストトラックにアップロードすることをお勧めします。

    3. コンソール > テスト > トラックの管理 > テスト参加対象の管理にテストアカウントが登録されているか確認
      FAQ_google_addtester_ja.png

    4. テスト参加 URLにアクセスし、テスト参加が申し込まれているか確認
      FAQ_google_added_teste_ja.png

    5. コンソール > 設定で、ライセンステストにテストアカウントが追加されているか確認
      FAQ_google_Licensetesting_ja.png

    6. 端末 > 設定 > アカウントメニューでテストに参加したアカウント以外、すべて削除されているか確認

    ONE Store

    Q. 「異常なアプリから決済が依頼されました」というメッセージが表示されます。

    A. オープン前のアプリはテストアカウントのみアクセス可能です。以下の内容をご確認ください。

    • テストアカウントが登録されているか確認
    • 端末にインストールされた ONE Storeアプリが1番で登録したテストアカウントでログインしたか確認

    Q. 決済の際に[package] doesn't exist or wrong secret. というメッセージが表示されます。

    GAMEPOTダッシュボードに、ONE Store関連のキーが正常に適用されたか確認します。

    1. APKの Package nameが、ONE Storeに登録されたパッケージ名と一致しているか確認
      FAQ_onestore_app_package_ja.png

    2. ONE Storeコンソールのライセンスキーが適用されているか確認
      FAQ_onestore_Licensetesting_ja.png

      該当値が GAMEPOTダッシュボードの以下の項目に適用されているか確認
      FAQ_onestore_public_key_ja.png

    3. ONE Storeコンソールの Client secretが適用されているか確認
      FAQ_onestore_Client_secre_ja.png

      該当値が GAMEPOTダッシュボードの以下の項目に適用されているか確認
      FAQ_onestore_server_key_ja.png

    Q. 決済を完了したら、「照会された結果値が存在しません。(9001)」と表示され、決済に失敗します。

    A. ONE Storeに領収書検証を依頼する際、本番環境/テスト環境の違いで問題が発生した場合です。
    ONE Storeの決済画面が Sandbox環境の場合

    • ONE Storeコンソール > In-App情報 > 決済テストメニューで、ONE Storeアプリアカウントの登録と決済設定を Sandbox状態に設定した状態

    • テスト機器に ONE Storeアプリがインストールされていて、登録されたアカウントでログインが完了した状態

    • GAMEPOTダッシュボード > プロジェクトの設定 > ホワイトユーザーメニューで決済/クーポンとして IPアドレスが登録されているか確認します。
      FAQ_gamepot_WhiteUser_ja.png

    • GAMEPOTダッシュボード > プロジェクトの設定メニューでWebhook項目で決済アイテム(テストユーザー)のアドレスが登録されているか確認します。
      FAQ_gamepot_webhook_setting_ja.FQpng

    ONE Storeの決済画面が Production環境の場合

    • ONE Storeコンソール > In-App情報 > 決済テストメニューで、ONE Storeアプリアカウントの登録と決済設定を常用テスト状態に設定した状態

    • テスト機器に ONE Storeアプリがインストールされていて、登録されたアカウントでログインが完了した状態

    • GAMEPOTダッシュボード > プロジェクトの設定 > ホワイトユーザーメニューで決済/クーポンの IPアドレスが未使用状態か、未登録状態かを確認します。
      FAQ_gamepot_WhiteUser_off_ja.png

    • GAMEPOTダッシュボード > プロジェクトの設定メニューで Webhook項目で決済アイテム(サービス)のアドレスが登録されているか確認します。
      FAQ_gamepot_webhook_setting_real_ja.png

    ONE Store SDK In-Appバージョン SDKのサポート範囲
    ONE Store SDK In-Appバージョン SDKは、GAMEPOT SDKバージョンに応じてサポートの範囲が異なります。

    • GAMEPOT SDK V 3.5.0以降: api21、V7をサポート
      • 関連ライブラリファイル: 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をサポート
      • 関連ライブラリファイル: iap_sdk-v19.00.02.aar、gamepot-billing-onestoreV6.aar、gamepot-common_onestoreV6_only.aar

    GAMEPOT SDK V 3.4.2 api17、V5をサポート
    関連ライブラリファイル: gamepot-billing-onestore.aar、gamepot-common.aar

    • Androidのビルド時に targetSdkVersion 30(Android 11)以降でビルドした場合、Android 11 OS機器に ONE Store APKがインストールされたにもかかわらず、見つけられません。
      AndroidManifest.xmlファイル内に以下の文言を追加します。
       <!-- targetSdkVersion 30以降の場合の ONE Store関連パッチ[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>
        <!-- targetSdkVersion 30以降の場合の ONE Store関連パッチ[End] -->
        <application>
    

    Galaxy Store

    Q. ログイン時に「Samsung In-App決済で選択した商品がありません」と表示されます。
    A. アプリが配信されていない場合に発生します。アプリ配信前にテスト In-App決済をするには、以下のように行ってください。ダッシュボード > プロジェクトの設定 > ホワイトユーザーの追加(種類: 開発/テスト機器の IPアドレス)設定を行います。

    Apple Store

    • 決済を行う Sandboxアカウントの国情報が、Appleコンソール上のアプリ配信国設定に含まれている国である必要があります。
    • Xcode > Capability項目に、in app purchase項目が追加されている必要があります。
    • Appleコンソール上の契約、税金および金融取引項目の関連情報に異常があってはいけません。未処理の部分があると、In-App情報が Apple In-App SDKから提供されず、決済ができません。

    In-Appエラー

    Q. In-Appアイテムリストを読み込めない場合
    A. 以下の内容をご確認ください。

    • GAMEPOT決済は消耗品の In-App商品のみサポートしています。
    • 決済ライブラリがビルド時に搭載されている必要があります。
      • 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')
        
    • 決済関連の設定が済んでいる必要があります。決済エラーを参照
    • getPurchaseItems APIを利用する場合、ログイン後に決済モジュールを初期化した後、非同期で In-Appリストを受け取り、その結果を表示する APIです。呼び出すタイミング上、情報がない場合があります。情報がない場合は、getPurchaseDetailListAsync API(同期式 In-Appリスト項目取得)を使用することをお勧めします。Googleの場合、機器に Googleアカウントが登録されていない機器では応答がないことがあります。
    • 各ストアの In-App決済のための決済アカウントが、機器でログインしている必要があります。さらに、決済を行うアカウントの国情報が、ストアアプリの配信国に属するアカウントである必要があります。
    • App Storeの場合、Appleシステムの特性上、アプリやアプリの In-App情報の配信が異なる構造ですが、ポリシー上24時間以内に配信されることになっています。

    In-App商品のレビューと配信の設定まで完了した状態で、開発バージョン/テストフライトバージョンから情報を取得します。ただし、常用サービスバージョンからしか取得できない場合は、Appleサーバに In-App情報が配信されていないことを意味します。通常、配信の設定後24時間以内に解決しますが、3日くらいまで Appleから関連情報が届かない場合もあります。

    Q. In-App領収書があるのに、ダッシュボードの領収書情報がありません / 決済が中断された場合、復旧するロジックはありますか?
    A. GAMEPOTの決済ロジックは以下のとおりです。
    クライアント > ストアで In-App決済 > GAMEPOTサーバで、ダッシュボードに記入した情報を基に領収証検証を行います。
    領収証検証時に問題がなければ、決済 Webhook api送信後、ダッシュボードの決済リストに情報が追加 / Webhook apiの結果と関係なく、クライアント SDKには成功処理されます。
    ストア In-App決済に成功後、不明な理由で(ネットワークの問題、アプリの強制終了など)中断された場合、決済 API呼び出し時に渡した情報を共有メモリに保存します。
    問題が発生したアプリを終了 -> アプリを再起動 -> ログイン成功時、GAMEPOT内部で決済中断履歴をチェックします。中断された履歴がある場合、共有メモリに保存された内容を基に決済ロジックが再開され、領収書検証まで異常がなければ決済 Webhook apiを送信し、ダッシュボードの決済リストに情報が追加されます。

    In-App領収証はあるのに、GAMEPOTダッシュボードに決済履歴がない場合は、GAMEPOT決済ロジックに問題が発生したケースです。ユーザーには、決済を行ったアプリを再実行してログインするように誘導してください。内部的に決済ロジックが再開され、異常がない場合、決済 APIを送信し、ダッシュボードに履歴を残します。

    決済モジュールが異なるアプリを実行すると、決済復旧ロジックが発生しません。
    <例> Googleの決済後に障害発生 -> ONE Storeバージョンでログインすると、決済モジュールが異なるため、決済復旧ロジックが行われません。
    Googleの場合、機器の設定で決済を行ったアカウントのみを残した状態で行います。(ログインアカウントと決済するアカウントは異なる場合があります)

    Adbrix Remaster

    Q. Adbrix Remasterを適用したら、IOSビルド時に Crashが発生します。
    A. Adbrix Remasterは Swiftで実装されているライブラリで、Swiftライブラリを適用する際に追加設定が必要です。XCodeで下記のように設定してビルドします。ビルドしても問題が続く場合、クリーンビルドをした後に確認します。
    image.png

    image.png

    Q. Adbrix Remasterを適用したら、AppStoreにアップロードする際にエラーが発生します。
    A. Adbrix Remasterライブラリが、x86_64、i386アーキテクチャを含んでいるために発生する問題です。以下のような措置をとった後、再ビルドして確認します。
    コンソール(ターミナル)で AdBrixRM.frameworkファイルの位置に移動し、以下の2つのコマンドを入力します。

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

    image.png

    Q. iOS NAVER Cafeが英語で表示されます。
    A. XCode > Targets > Info > Localizationメニューで native development regionを koreaに変更し、確認します。

    サービスのローンチ

    Q. iOSプラットフォーム向けにサービスをローンチする際に、注意すべき点はありますか?
    A. iOS App Storeの場合、アプリのレビュー期間が1~2週間程度かかります。2週間程度余裕を持って本番環境ダッシュボードへの移行をお申し込みください。

    プッシュ

    Q. iOSから通知が届きません。
    A. 以下を順に確認します。

    1. NCloud SENS設定の Certificationに、iOS証明書が登録されているか確認します。
      • iOSは、ビルド時に使用されたプロビジョニングプロファイルタイプに応じて登録する証明書が異なります。
        • Developement Provisioning > Apple Development証明書を登録メニューで Typeを Sandboxに設定
        • Adhoc / Distribution Provisioning > iOS Distribution証明書を登録メニューで Typeを Productionに設定
    2. 証明書を登録した後、クライアントでログインまで完了したか確認します。
      • GAMEPOTはプッシュトークンをログイン完了時にサーバに渡します。したがって、証明書を登録したら、クライアントでログインまで行った後、確認します。
    3. アプリが Forground状態でないか確認します。
      • iOSの場合、アプリが Forground状態ではプッシュが受信されません。homeボタンをクリックして、メイン画面でプッシュが受信されているか確認します。
    4. Xcodeで build時に、Capabilityに Push Notificationが含まれているか確認します。
      • Xcodeで build時に、Capabilityに Push Notificationが含まれている必要があります。受信ができない場合、ビルド時にこの部分が含まれているか確認します。

    Q. AOSから通知が届きません。
    A. 以下の項目をご確認ください。

    • NAVERクラウドコンソールで、プッシュが正しく設定されているか確認します。
    • Firebase SDKを別途搭載して使用している場合
      • ../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" />
      

    Googleアプリ署名を使用する時の注意事項

    Q. 直接インストールした APKはソーシャルログインが正常にできますが、ストアからダウンロードしてソーシャルログインするとログインできません。
    A. Google開発者コンソールでアプリ署名が有効化され、キーストアが変更された場合です。Google開発者コンソールの設定 > アプリの完全性メニューに、以下のような画面が表示されます。Googleログインを利用している場合は SHA-1値を firebase consoleに追加し、Facebookログインを利用している場合は上記の SHA-1値の keyhashを Facebookコンソールに追加します。
    FAQ_google-Playappsigning_ja.png

    ユーザー IDの移行

    参考

    ユーザー IDの移行は、ソーシャルアカウントで連携されたユーザー IDでのみ他のユーザー IDに移行できます。

    1. 移行するユーザー IDと移行を受けるユーザー IDを確保します。

    2. 移行するユーザー IDは、GAMEPOTダッシュボード > 会員 > リスト画面でユーザー IDを照会し、ユーザー IDをクリックして詳細画面に移動します。.

    3. 下部にある [アカウント連携] タブをクリックし、移行するソーシャル IDの横にある設定アイコンをクリックします。

    4. 連携情報変更のポップアップに移行を受けるユーザー IDを入力し、 [変更] ボタンをクリックします。

      • 変更すると、そのユーザー IDからソーシャルアカウント情報が消えます。
        FAQ_gamepot_member_ja.png
    5. 移行を受けたユーザー IDは、GAMEPOTダッシュボード > 会員 > リスト画面でユーザー IDを照会し、ユーザー IDをクリックして詳細画面に移動します。

    6. 下部にある [アカウント連携] タブをクリック > 移行したソーシャル IDが存在するか確認します。

      • FAQ_gamepot_member2_ja.png
    7. 移行するユーザー IDでログインしたクライアントからログアウトし、再度ログインします。

    ユーザー IDの復旧

    1. GAMEPOTダッシュボード > 会員 > リスト画面でユーザー IDを照会し、ユーザー IDをクリックして詳細画面に移動します。
    2. 会員復旧ボタンをクリックし、 [確認] ボタンをクリックします。

    ただし、 ユーザーが退会した後、同じソーシャルアカウントでログインして新規ユーザー IDが発行された場合、1番と2番の手順を行った後、ユーザー IDを移行する方法を利用してユーザー ID移行の手順を行う必要があります。
    FAQ_gamepot_member3_ja.png

    ダッシュボード事前予約ページと連携

    1. 発信番号の申し込み

    発信番号を申し込んでその番号が承認されたら、SMSを送信できます。
    SMS発信番号お申し込みガイドをご参照ください。

    2. 事前予約ページ連携 API

    APIは、SMS認証メールの送信 > SMS認証完了 > SMS事前予約申し込み完了の順に行う必要があります。
    ゲーム > 事前予約 > 追加 > 名称を入力して保存します。
    GAMEPOT事前予約ページの Category Idで保存した名称を選択し、横のコピーアイコンをクリックします。
    FAQ_gamepot-reservation_ja.png

    3. SMS認証

    3-1. SMS認証の送信

    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の projectId
    categoryIdString-GAMEPOT事前予約ページの categoryId
    fromString-承認を受けた発信番号
    toString-SMS認証番号を受信する連絡先
    storeString-ストア(Google、ONE、Apple)

    Response

    {
        "code": 200,
        "message" : ""
    }
    
    AttributeTypeDescription
    codeInt結果値(200: 成功、404: 失敗)
    errorString状況別エラー内容を渡す

    3-2 SMS認証完了

    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の projectId
    categoryIdString-GAMEPOT事前予約ページの categoryId
    codeString-受信した認証番号
    toString-SMS認証番号を受信する連絡先
    storeString-ストア(Google、ONE、Apple)

    Response

    {
        "code": 200,
        "message" : ""
    }
    
    AttributeTypeDescription
    codeInt結果値(200: 成功、404: 失敗)
    errorString状況別エラー内容を渡す

    3-3 SMS事前予約申し込み完了

    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の projectId
    categoryIdString-GAMEPOT事前予約ページの categoryId
    codeString-受信した認証番号
    fromString-承認を受けた発信番号
    toString-SMS認証番号を受信する連絡先
    storeString-ストア(Google、ONE、Apple)
    tagString-その他の情報(流入経路などの情報)

    Response

    {
        "code": 200,
        "message" : ""
    }
    
    AttributeTypeDescription
    codeInt結果値(200: 成功、404: 失敗)
    errorString状況別エラー内容を渡す

    事前予約サイト関連の PHPソースベースのソースは、以下のリンクをご参照ください。

    GooglePlayGames API

    Googleログインとは異なり、Google Playゲームサービスログインは異種間ログインをサポートしていません。そのため、GAMEPOTでは Google Playゲームサービスログインをメインログイン方法として使用しないことをお勧めします。GAMEPOTでは、基本的に Google Playゲームサービスライブラリ(gamepot-channel-google-playgame.aar)がある場合、Google実績とリーダーボード連携のための動作と判断し、基本のログイン後に Google Playログインするようになっています。

    Q. ログイン時に他のプラットフォームを使用しようとしても、Google Playログインが試行されてしまいます。関連ポップアップが表示されないようにするには、どうすればいいですか?
    A. GAMEPOTでは、Google実績とリーダーボード連携のための動作と判断し、基本のログイン後に Google Playログインするようになっています。

    Google Playゲームサービスログインは使用しても、Google実績、リーダーボードは使用しない場合は、ログイン APIの前に以下のように設定します。

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

    Google Play Game API - Google実績、Googleリーダーボード

    Q. GAMEPOT SDKを介して GooglePlayGames APIを使用できますか?
    A. GAMEPOT SDKで独自にサポートする GooglePlayGames APIが存在します。(実績、リーダーボード)(Android、Unity、Unreal)プラットフォーム別、GooglePlayGames APIの使用方法は以下のとおりです。

    Android

    ビルド時に gamepot-channel-google-playgame.aarを含めます。

    • ../app/build.gradleに gamepot_gpg_idの値を入れます。
    ...
    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

    ビルド時に gamepot-channel-google-playgame.aarを含めます。

    • ../Assets/Plugin/Android/mainTemplate.gradleに gamepot_gpg_idの値を入れます。
    ...
    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

    Unrealエンジンの場合、エンジンソース内のビルドスクリプトにおいて、gpg App IDの値をデフォルトで Manifest Mergeしています。(UnrealEngine 4.26基準)
    GAMEPOT GooglePlayGamesモジュールと duplicateしないように、エンジンソース内の Engine/Source/Programs/UnrealBuilTool/Platform/Android/UEDeployAndroid.csの次の2-lineをコメントアウトします。
    image.png

    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

    GAMEPOT APIの遅延速度の確認

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

    Dashboard

    1. Pushメッセージが受信されない場合

    1. ダッシュボード > プロジェクトの設定 > ncloud API認証キーの AccessKey、Secret Key、SENS-PUSH、SENS-SMSの値を確認します。
    2. その認証キーに対して、SENSプロジェクトの Certificate設定が済んでいるか確認します。
      FAQ_FCM_ja.png

    2. ユーザー指標の Retentionの計算方法
    広告などの経路で流入した対象外数値を除外するため、アカウントを作成した後、翌日アクセスしたユーザーを新規ユーザーとしてカウントします。

    <例>
    下の画像で2020-01-07を基準にした場合、2020-01-07の新規ユーザーのうち2020-01-08にアクセスした人数が5人で、その日(2020-01-07)の New Userを5人と判断します。(Day1の値と同じです) その人数を基準にして、Day 2(翌日の2020-01-09)に1人アクセス / Day 3に0人アクセス / Day 4に1人アクセスした状態を示しています。5人のユーザーのうち、n Dayにカウントされる方式なので、途中で0%になる区間が発生します。
    image.png

    3. 会員の利用停止を無効にした場合

    利用停止リストにユーザー IDが追加されていて無効化状態の場合、Googleの払い戻しを行っても、自動的にそのリストが有効化するわけではありません。さらに、無効化されたユーザー IDについては、アカウントへのアクセスをブロックしていません。

    その他

    Q. Firebase Consoleで google-service.json抽出時
    A. Firebase Console上で、SHAフィンガープリントが登録された状態で google-service.jsonを抽出します。そうしないと、jsonファイルの一部の値が欠落して抽出される可能性があり、正常にログインできない場合があります。
    FAQ_firebase-sha_ja.png

    Q. GAMEPOTログイン検証時、Token authentication failedエラーが発生
    A. ベータゾーンを使用している企業で発生する可能性のある問題です。ログイン検証 Request URLが「https://gamepot.apigw.ntruss.com/gpapps/v1/loginauth」に設定されている場合、https://cloud-api.gamepot.io/loginauthに変更して確認します。

    • 本番ゾーン: https://gamepot.apigw.ntruss.com/gpapps/v1/loginauth
    • ベータゾーン: https://cloud-api.gamepot.io/loginauth(サービス終了)

    Q. ビルド実行時、「アプリが異常実行されました。ストアからダウンロードしてください」というメッセージのポップアップが発生
    A. ダッシュボード > プロジェクトの設定 > 一般タブのハッシュキーの設定に誤りがあって発生する可能性があります。そのハッシュキーを削除するか正確なハッシュキーを入力した後、ご確認ください。
    FAQ_gamepot-setting_ja.png

    GAMEPOT SDKで決済をしようとすると、GAMEPOT SDKでは成功の応答を受けたのに、ダッシュボードの決済 > 決済リストに決済した履歴が表示されず、ゲームサーバに requestが伝達されない場合
    ダッシュボード > プロジェクトの設定 > 一般タブで、Google API Keyの Json値が登録されているか確認します。
    Google API Keyの設定が version 2になっていたときは、その keyがなくても決済は可能でしたが、version 3からは keyの入力が必要です。
    入力されている状態なら、ヘルプをクリックして JSON値を再度作成して登録してください。
    ref.) 新しくアカウントを発行して keyを抽出して入れた場合、新しいキーへの更新が適用されるまで約一日ほど時間がかかります。
    FAQ_gamepot-aplkey_ja.png

    5. 決済が完了すると、Google Play Developer API not linkedエラーが発生します。
    Google API Keyの設定が正しくない場合に発生する可能性がある問題です。ヘルプをクリックして、JSON値を再度作成して登録する必要があります。
    ref.) 新しくアカウントを発行して keyを抽出して入れた場合、新しいキーへの更新が適用されるまで約一日ほど時間がかかります。
    image.png

    6. 新規サービスアカウントを発行し、Keyを適用しても決済 APIが失敗します。
    (Googleサービスアカウントの移行時)新規 Keyを発行して適用したにもかかわらず、決済 APIが失敗するという Googleコンソール側のバグレポートがありました(2020.02.13)。
    決済を行うと、以下のようなエラーが発生します。

    • エラーメッセージ: 「The current user has insufficient permissions to perform the requested operation.」

    Googleコンソールでサービスアカウントの権限が正常に設定されているか確認した後、Googleコンソールで任意の In-App商品を一つ作成し、問題が解決するか確認します。

    7. IOS Pushメッセージ受信の問題

    IOS APNS証明書登録ガイド

    1. SENS設定の Certificationに、認証キーと証明書が登録されているか確認します。
    2. IOSは、ビルド時に使用されたプロビジョニングプロファイルタイプに応じて登録する証明書が異なります。
      [Development]: Provisioning > Push Developmentを順に選択して証明書をアップロードし、Typeは Sandboxに設定します。
      [Adhoc/Distribution]: Provisioning > Push Distributionを順に選択して証明書をアップロードし、Typeは Productionに設定します。
    3. GAMEPOTは、Push Tokenをログイン完了時にサーバに渡します。したがって、証明書を登録した後、クライアントでログインまで行われるか確認します。
    4. IOSの場合、アプリが Forground状態ではプッシュが届きません。homeボタンをクリックして、メイン画面でプッシュが届くか確認します。
    5. IOSの場合、Xcodeで build時に、Capabilityに Push Notificationが含まれている必要があります。受信ができない場合、ビルド時にその部分が追加されているか確認します。

    8. IOS決済テスト方法

    1. テストする機器の設定 > iTunesと Store > Apple ID: XXXXをタップ > ログアウト
    2. アプリを実行
    3. アプリの有料決済項目を選択
    4. ポップアップ発生時、既存の appleID使用を選択。
    5. テストアカウントの IDとパスワードを入力してログイン
      • 状態に応じてポップアップが複数回表示されることがあります。
    6. 有料決済項目の価格と名前がポップアップで表示され、[Environment: Sandbox]という文言が表示
    7. 購入を選択
    • 決済ポップアップに[Environment: Sandbox]という文言が表示されたら、実際には課金されません。

    9. Pushメッセージのアプリ名はクライアントビルド時に決定

    image.png

    言語に合わせてアプリ名を変更する場合、以下の手順に従います。

    • Android

      app/src/main/res/values-国コード/strings.xml
      

      <例> デバイス言語が英語で、アプリ名を変更する場合

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

      Assets/Plugins/Android/GamePotResources/res/values-国コード/strings.xml
      

      <例> デバイス言語が韓国語で、アプリ名を変更する場合

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

      strings.xml

      <?xml version="1.0" encoding="utf-8"?>
          <resources>
              <string name="app_name">言語に合わせてアプリ名を設定</string>
          </resources>
      
    • iOS

      1. XCode > Targets > Info > Localization 目的の言語を追加
        image.png
      2. Xcode > File > file で Strings Fileアイコンをクリック -> [next]をクリック -> ファイル名を InfoPlistに定義してファイルを作成
      3. 作成されたファイルを選択し、Localization設定を付与
        image.png
      4. 言語を選択すると関連ファイルが作成され、そのファイルにそれぞれ言語に合ったアプリ名を付与します。
        [InfoPlist.string] CFBundleDisplayName="言語に合わせてアプリ名を設定";
        image.png

    10. In-Appリスト情報を取得する際、ストアごとに GamePot.getPurchaseItems() APIの Price値が異なります。
    In-Appリスト情報を取得する際、各ストアの In-App SDKから渡される値は以下のとおりです。

    • Google Play Store: priceの値は通貨単位 + In-App価格
      <例> ₩1,000
    • App Store: priceの値は In-App価格
      <例> 1000

    IOSで通貨単位を表記するには、price_currency_codeの値をご参照ください。
    <例> price_currency_code: KRW

    11. ダッシュボード管理者アカウントが、パスワード5回失敗でログインできません。(V2ダッシュボードユーザー対象)

    1. https://console.ncloud.com/gamepotサイトに adminアカウントでアクセスします。

    2. パスワードを初期化するダッシュボードを選択してプロジェクト管理項目をクリックすると、パスワード初期化メニューが表示されます。

    3. パスワード初期化メニューを選択すると、管理者アカウントを入力するポップアップが発生し、内容を入力すると関連メールで初期化できるメールが送信されます。
      iFAQ_console1_ja.png

      FAQ_console2_ja.png

      FAQ_console3_ja.png

    12. ダッシュボードデータ初期化のサポート範囲
    ストア配信前に必要なリストを整理して依頼することをお勧めします。アプリ配信後にデータを初期化する場合、実際のユーザーのデータとダミーデータの区別が明確でなく、サービスに混乱を招くため、お勧めしません。CBTを先行して行ってローンチを行うと、会員情報を保持していない場合、ゲーム DBの初期化時に GAMEPOTアカウント連携履歴も削除されている必要があるため、ローンチ前に必ず削除依頼を行います。削除されたデータは復旧されませんので、慎重に判断してください。
    韓国リージョンのダッシュボードの場合にのみ削除できます。

    ダッシュボードメニュー別のデータ削除可能範囲は、以下のとおりです。

    リストストア配信前ストア配信後
    ユーザー指標XX
    売上指標XX
    会員(ソーシャルアカウント連携を含む)O条件付きで可能
    決済リストOO
    お知らせ事項XX
    メンテナンスXX
    アップデートXX
    トークXX
    クーポンXX
    カスタマーサポートXX
    ゲーム > プレイヤーXX
    ゲーム > プレゼントするXX

    13. Apple iOS 14の個人情報取扱方針の強化に伴って収集する個人情報リスト
    Appleコンソール > 「一般情報」 > 「アプリが収集する個人情報タブ」 を基準に(顧客の身元情報とは連携されず、関連情報として追跡する目的ではない事項)、GAMEPOT SDKで収集する項目は以下のとおりです。

    • 識別子
      • ユーザー ID(アカウント情報)
      • 機器 ID(IDFA、auto generated)
      • 購入項目
    • ユーザーコンテンツ
      • 写真またはビデオ
      • カスタマーサポート

    ユーザーコンテンツは、GAMEPOT PRO以上の商品を利用する顧客のうち、GAMEPOTのお問い合わせ UIを使用する場合に該当します。オブジェクトストレージ機能を使用すると、お問い合わせに画像ファイルをアップロードできます。

    14. 決済/ログイン時によくあるエラーコード

    • 決済失敗時のエラーコード - 405: 同じ決済情報が GAMEPOTサーバに受信されて発生する場合です。

      • 決済 APIの呼び出し後、決済ロジックが完了していない状態で、連続した呼び出しにより発生した場合、決済完了処理後に呼び出す部分があるかどうかご確認ください。
      • ネットワークの問題で、同じ決済情報が重複してリクエストされて発生した場合、GAMEPOTサーバに決済情報を渡したが(GAMEPOTサーバでは、関連情報を受け取って関連処理が行われた状態- Purchase Webhook APIを送信)、関連応答を受け取れなかった状態で、クライアントで再度決済情報を GAMEPOTサーバに渡したら、GAMEPOTサーバがその件を重複処理として認識し、失敗ケースとして処理した場合です。クライアントの構造上、一つの応答しか受け取れないため発生するケースであり、実質的にはユーザーが決済アイテムを受け取ったものと判断されているので、このケースでは運用上の問題はないと思われます。
    • 決済失敗時のエラーコード - 5000: ガイドの内容のように、決済で不明なエラーが発生し、ストア In-App SDKでエラーが発生した場合です。

      • 機器内の決済環境が整っていないか、決済関連のセッティングが行われていない場合に発生します。ビルド時に決済モジュールライブラリが未搭載、各ストアコンソール内の決済関連設定が不十分、GAMEPOTダッシュボード内の決済関連設定情報の欠落、機器内の決済アカウントがアプリ配信国に合わない場合など。決済エラーを参照
      • 「決済エラーが発生しました。code(数字)... です」というメッセージが表示される場合、In-App SDKのエラーにより発生する問題で、code ()の中の数字が In-App SDKのエラーコードです。Google決済の場合、決済時に時折、特定のユーザーから codeエラー(5)に関する問い合わせがあります。
        • APK改ざんの可能性 - 問題が発生するアプリを削除した後、ストアからバージョンを再度ダウンロードするように誘導します。
        • アプリの再インストール後も発生する場合は、Google Play Storeアプリに保存された情報と決済情報の問題である可能性があります。 機器内の Googleアカウントと Google Play Storeアプリのデータを削除した後、Googleアカウントを再登録してください。
        • Google In-Appエラーコードを参考: https://developer.android.com/reference/com/android/billingclient/api/BillingClient.BillingResponseCode?authuser=1#DEVELOPER_ERROR
    • ログイン時のエラーコード - 407: ユーザー IDが利用停止されたケースです。error messageでダッシュボードに設定した利用停止の理由を伝えます。

    1. 決済 In-Appリスト上の通貨単位を変更するには、どうすればいいですか?
      決済 In-Appリスト上の通貨単位は、当該ストアの In-App SDKが提供する値を共有しています。通常、決済を行う決済アカウントの国や決済手段によって関連情報が決定されます。他の国の通貨単位で表示したい場合は、その国に合った決済アカウントを作成し、関連設定を行います。(Googleの場合、機器内のアカウント設定で決済アカウントを除く他のアカウントを削除してから行う)

    16. GAMEPOT Proから Essentialへのダウングレードを行う際に考慮すべき点は何ですか?
    統計(ユーザー指標/売上指標)、メンテナンスとアップデート、カスタマーサポート(お問い合わせ/規約/ページ機能など)、クーポンなどは別途実装する必要があります。

    • GAMEPOT Essential商品でサポートするメニューは以下のとおりです。
      運用 > 会員(リスト/日別アクセス者/新規ユーザー/同時アクセス者/利用停止)
      運用 > 決済(リスト/IAP/統計)
      運用 > メッセージ(プッシュメッセージ/SMSメッセージ)

    17. GAMEPOTでは、Google > プロジェクトの選択 > アプリコンテンツ > データセキュリティのセクションに該当する部分はどんな機能を使用していて、使用目的は何ですか?
    アプリの通信は HTTPS通信方式で暗号化されています。会員退会機能がある場合、会員退会が完了すると会員情報は削除します。
    アプリの機能目的にのみ使用します。

    • 個人情報
      • メールアドレス
      • ユーザー ID
    • 機器またはその他の ID
      • 機器またはその他の ID
    • 写真および動画
      • 写真
      • 動画

    写真や動画の場合、GAMEPOT PRO以上の商品を利用する顧客のうち、GAMEPOTのお問い合わせ UIを使用する場合に該当します。オブジェクトストレージ機能を使用すると、お問い合わせに画像ファイルをアップロードできます。

    Ver 3.5.1の変更事項 - セキュリティ上の問題で該当バージョンは使用禁止

    ゲストログイン処理方式の変更(Ver 3.5.1)

    GAMEPOT SDK 3.5.1バージョンから、ゲストログインの処理方式が変更されました。

    • 既存の方式
      既存の GAMEPOT SDK 3.5.0以前のバージョンでは、ゲストログイン後にアプリを削除したり、アプリのデータを削除した後にゲストログインをしようとすると、新規に GAMEPOTユーザー IDを提供していました。

    • 新しい方式
      GAMEPOT SDK 3.5.1バージョンから、ゲストログインしてアプリを削除するか、アプリのデータを削除した後にゲストログインすると、以前に使用した GAMEPOTユーザー ID情報を提供します。ANDROID_IDと UDID情報に基づいて、GAMEPOTユーザー IDを作成します。関連情報が変更された場合、ユーザー ID情報は保持されません。
      ゲストログインの成功後、会員退会または他のソーシャルログイン方式でアカウント連携が成功した後、ゲストログインする場合、従来と同じように新規に使用した GAMEPOTユーザー ID情報を提供します。
      従来の GAMEPOT SDK 3.5.0以前のバージョンでゲストログインに成功して利用しているユーザーが、GAMEPOT SDK 3.5.1搭載バージョンにアップデートされた状態の場合、既存のユーザー ID情報を提供しますが、アプリを削除するか、アプリのデータを削除した後にゲストログインする場合は、新規で GAMEPOTユーザー ID(新規ゲストログインユーザー ID)を提供します。旧バージョンのゲストユーザー IDは、アプリを削除するか、アプリのデータを削除すると保持されません。
      上記のケース以降、アプリを削除するか、アプリのデータを削除した後にゲストログインする場合、以前のユーザー ID(最後に受け取った新規ゲストログインユーザー ID)が提供されます。

    Migration

    Ver Unity 2.1.1 To Ver Unity 2.1.2 or New Version

    Unity 2019.02.XX以前のバージョン

    • 従来と同じ方法でアップデート

    Unity 2019.3.0~2019.3.6

    既存の settingsTemplate.gradle / mainTemplate.gradleファイルを維持します。
    このバージョンのエンジンの特性上、外部ライブラリを搭載する際に制約が発生するバージョンなので、他のバージョンの Unityプラグインバージョンを使用することをお勧めします。

    Unity 2019.3.7以降のバージョン(新規に作業する場合)

    GAMEPOT SDK ver 3.5.1バージョン基準
    mainTemplate.gradle / launcherTemplate.gradle / baseProjectTemplate.gradleファイル変更時の参考事項

    • [ファイル]GAMEPOT_UNITY[年度][中間][マイナーバージョンまたは以降のバージョン]
    • UNITY_2019_3_Over: UNITY 2019.3.XX以降のバージョンの場合に使用
    • UNITY_2020_XX_Over_2022_1_XX: UNITY_2020以降で UNITY_2022.1.XX以前のバージョンの場合に使用
    • UNITY_2022_2_XX_Over: 2022.2.XX以降のバージョンの場合に使用
    1. mainTemplate.gradleファイルを削除(既存ファイルは Unity 2018基準ファイルなので削除)
    2. 搭載する Unityバージョンに合った mainTemplate.gradleファイルを探して名前を変更。
      GAMEPOTの環境変数は launcherTemplateファイルに定義するので、mainTemplateファイルに定義する必要はありません。追加で入れるライブラリを定義する際に使用します。
      • case 1) Unityエディタのバージョンが2019.4.40の場合、mainTemplate_GAMEPOT_UNITY_2019_3_Overファイルの名前を mainTemplate.gradleに変更
      • case 2) Unityエディタのバージョンが2021.3.13バージョンの場合、mainTemplate_GAMEPOT_UNITY_2020_XX_Over_2022_1_XX.gradleファイルの名前を mainTemplate.gradleに変更
      • case 3) Unityエディタのバージョンが2022.3.00バージョンの場合、mainTemplate_GAMEPOT_UNITY_2022_2_XX_Overファイルの名前を mainTemplate.gradleに変更
    3. 搭載する Unityのバージョンに合った launcherTemplate.gradleファイルを探してファイル名を変更した後、オープンして GAMEPOTの環境変数を定義します。
      • case 1) Unityエディタのバージョンが2019.4.40バージョンの場合、launcherTemplate_GAMEPOT_UNITY_2019_3_Overファイルの名前を launcherTemplate.gradleに変更
      • case 2) Unityエディタのバージョンが2021.3.13バージョンの場合、launcherTemplate_GAMEPOT_UNITY_2020_XX_Over_2022_1_XX.gradleファイルの名前を launcherTemplate.gradleに変更
      • case 3) Unityエディタのバージョンが2022.3.00バージョンの場合、launcherTemplate_GAMEPOT_UNITY_2022_2_XX_Overファイルの名前を launcherTemplate.gradleに変更
    4. 搭載する Unityのバージョンに合った baseProjectTemplate.gradleファイルを探して名前を変更
      • case 1) Unityエディタのバージョンが2019.4.40バージョンの場合、baseProjectTemplate_GAMEPOT_UNITY_2019_X_XXファイルの名前を baseProjectTemplate.gradleに変更
      • case 2) Unityエディタのバージョンが2021.3.13バージョンの場合、baseProjectTemplate_GAMEPOT_UNITY_2020_X_Over_2022_1_XX.gradleファイルの名前を baseProjectTemplate.gradleに変更
      • case 3) Unityエディタのバージョンが2022.3.00バージョンの場合、baseProjectTemplate_GAMEPOT_UNITY_2022_2_XX_Overファイルの名前を baseProjectTemplate.gradleに変更

    GAMEPOT SDK ver 3.4.2バージョン基準

    • baseProjectTemplate.gradleを追加します。通常は下記のファイルを renameして使用します。baseProjectTemplate_GAMEPOT_UNITY_2019_3_Over.gradle => baseProjectTemplate.gradle
    • settingsTemplate.gradleを削除します。../Assets/Plugins/Android/settingsTemplate.gradle
    • mainTemplate.gradleファイルで定義した gamepot_project_idのような環境変数の定義を launcherTemplate.gradleに定義します。通常、下記のファイルを renameして GAMEPOT環境変数を定義します。launcherTemplate_GAMEPOT_UNITY_2019_3_Over.gradle => launcherTemplate.gradle
    • mainTemplate_GAMEPOT_UNITY_2019_3_Over.gradleファイルを参考にして mainTemplate.gradleを設定します。gamepot_project_idのような環境変数は launcherTemplate.gradleで定義されたので、削除します。

    Unity 2022.2.X以降

    Unity Editor Ver 2022.2.X以降のバージョンで、baseProjectTemplate.gradle / launcherTemplate.gradle / mainTemplate.gradleファイル内の形式が変更されたので、パッチファイル基準で適用し、ビルドを行います。
    2022.2.X用 gradle_files: ダウンロード

    Unity 2023.1.X以降

    Unity Editor Ver 2023.1.X baseProjectTemplate.gradle / launcherTemplate.gradle / mainTemplate.gradleファイル内の形式が変更されたので、パッチファイル基準で適用し、ビルドを行います。

    Unity 2022.3.Xバージョンで multidex関連のエラーが発生した場合は、以下の手順を行います。

    1. Unity Editer > Player Settings > Publishing Settings > Custom Gradle Propreties Template項目にチェックを入れます。
    2. ../Assets/Plugins/Android/gradleTemplate.propertiesファイル内に android.useAndroidX / android.enableJetifier設定を追加し、保存
      org.gradle.jvmargs=-Xmx**JVM_HEAP_SIZE**M
      org.gradle.parallel=true
      unityStreamingAssets=**STREAMING_ASSETS**
      **ADDITIONAL_PROPERTIES**
      
      android.useAndroidX= true      // 追加
      android.enableJetifier=true    // 追加
      

    Unity 2020.X、2021.X、2022.1.X バージョンを使用する場合の追加変更事項(GAMEPOT SDK 3.4.X以前のバージョン対象)

    • Unity 202X.Xバージョン用パッチ: ダウンロード
    • フォルダおよびファイルの置き換え
      ../Assets/ExternalDependencyManager
      ../Assets/Firebase
      
    • フォルダとファイルの追加
      ../Assets/Parse
      (任意) ../Assets/GooglePlayPlugins   //com.google.android.appbundle-1.7.0.unitypackage 
      
    • フォルダ名の変更
      従来: ../Assets/Plugins/Android/Firebase
              変更: ../Assets/Plugins/Android/FirebaseApp.androidlib
              従来: ../Assets/Plugins/Android/GamePotResources
              変更: ../Assets/Plugins/Android/GamePotResources.androidlib
      
    • mainTemplate.gradleの編集(フォルダ名の変更に伴う編集)
      従来: 
          dependencies {
              ...
              implementation project('GamePotResources')
              implementation project('Firebase')
          変更:
          dependencies {
              ...
              implementation project('GamePotResources.androidlib')
              implementation project('FirebaseApp.androidlib')
              ...
          aaptOptions {
              noCompress = ['.ress', '.resource', '.obb'] + unityStreamingAssets.tokenize(', ') // add
              ...
          - launcherTemplate.gradleの編集     
          aaptOptions {
              noCompress = ['.unity3d', '.ress', '.resource', '.obb'**STREAMING_ASSETS**]+ unityStreamingAssets.tokenize(', ') //add
              ...
      

    Unityエディタ上で、./Assets/Plugins/Android/nativeLibsフォルダ内のすべてのライブラリが、Androidビルド時に含まれないように設定します。
    image.png

    1. Please fix your Bundle IDのポップアップが表示されたら、パッケージ名を確認して [Apply] ボタンをクリックします。
      google android resolverライブラリで google-services.jsonまたは GoogleService-Info.plistを認識した後、パースするかどうかを確認するポップアップで、承諾すると Google関連の動作が正常に行われます。
      image.png
    • Unityエディタ 2021.X以降のバージョンでは、Android/IOS関連の Build Settings > Player Settings > Other Settingsメニューでパッケージ名を手動で入力し、ビルドしたい OSに Switch Platformしてからビルドします。
      上記の作業を先行していない場合、google resolverライブラリの内部バグによる Please fix your Bundle IDのポップアップ > Applyボタンをクリックすると Ambiguous match foundエラーが発生し、動作しません。

      • 関連内容: https://github.com/googlesamples/unity-jar-resolver/issues/523#issuecomment-1147499484
    • Unityエディタ 202X.Xバージョンではサンプルシーンファイルを置き換え: ダウンロード

    • Unityエディタ 2019.X以前のバージョンで、Androidバージョンのビルド環境で以下のようなエラーが発生する場合は、パッチのダウンロードをダウンロードし、以下のように変更します。

    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)
    
    - フォルダおよびファイルの置き換え
    ../Assets/ExternalDependencyManager
    ../Assets/Firebase
    
    
    - フォルダ名の変更 
    従来: ../Assets/Plugins/Android/Firebase
    変更: ../Assets/Plugins/Android/FirebaseApp.androidlib
    
    - mainTemplate.gradleの編集(フォルダ名の変更に伴う編集)
    従来: 
    dependencies {
        ...
    	implementation project('Firebase')
    変更:
    dependencies {
        ...
    	implementation project('FirebaseApp.androidlib')
        ...
    
    • macOS Monterey 12.3基準) Unityビルド時に以下のようなエラーが発生する場合は、./Assets/Firebase/Editor内のファイルを置き換えます。
      • https://github.com/techyworm10/firebase-unity-sdk-editor-python-fix

    パッチのダウンロードからパッチファイルをダウンロードして展開し、/Assets/Firebase/Editorフォルダに入れてファイルを入れてください(Firebase.Editor.dllファイルを置き換えます)。

    エラーメッセージ

    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',
    

    この記事は役に立ちましたか?

    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.