- 印刷する
- PDF
Unity SDK
- 印刷する
- PDF
Unityでゲームを開発するための GAMEPOT Unity SDKの使用方法について説明します。SDKをインストールして環境を構成することで、ゲームとダッシュボードを連携できます。
システム要件
Unity用 GAMEPOT SDKを使用するためのシステム要件は、次の通りです。
- 最小スペック: 2018.4.0以降
(下位バージョンの Unityへの対応が必要な場合は、お問い合わせチャネルにてご確認ください。) - v.3.1.0以下のバージョンから最新バージョンにアップデートする場合
Migrationガイドを参考にして Migrationを行ってください。 - 2019.3.X以降のバージョンを使用する場合
GAMEPOT FAQで説明する追加設定事項を必ずご参照ください。 - 2019.4.X / 2020.3.X / 2021.1.Xバージョンの Unityエディタのユーザーは、2019.4.29f1以降、2020.3.36f1以降、2021.1.16f1以降のバージョンを使用することをお勧めします。(AABバージョンをビルドする際に Unityエディタのバグを修正したバージョン、2020.3.35以下バージョンの場合、Android 31をビルドする際に Bluetoothイヤホンを接続するとアプリのクラッシュが発生するのを修正したバージョン)
SDKのインストールと環境の構成
GAMEPOT Unity SDKをインストールしてから環境を構成し、GAMEPOTのダッシュボードとゲームを連携してゲーム開発に必要な機能を使用できます。
GAMEPOT SDKでサポートしている言語は次の通りです。
- 韓国語、英語、イタリア語、タイ語、ベトナム語、日本語、中国語(簡体字/繁体字)、インドネシア語、ドイツ語、スペイン語、フランス語
アプリ実行時にデバイスの言語によって SDK内サポート言語で表記され、サポートされていない言語は英語で表記されます。
IOSの場合)
- XCode > localizationに適用したい言語を追加します。
- ビルド時のバージョンコードは整数形式でユニークに増加する方式にします。
SDKのインストール
GAMEPOT Unity SDKをインストールし、Unityでプロジェクトを構成する方法は、次の通りです。
- GAMEPOT SDKのダウンロード > Unityからダウンロードリンクをクリックします。
- Unityの **Assets > Import Package > Custom Package...**メニューを順にクリックし、GamePotUnityPlugin-xxxx.unitypackageファイルを読み込みます。
Android環境の設定
GAMEPOT Unity SDKを使用して Androidベースのゲームを開発するには、必要な環境を設定する必要があります。
最小スペックの設定
アプリをインストールおよび実行できる最小スペックを設定するには、以下のコードを使用します。
minSdkVersion: API 19以降(Kitkat)
Gradleの編集
Gradleファイルを編集するには、表を参照して以下のコードに値を入力し、コードを使用して設定を変更します。
- ../Assets/Plugin/Android/mainTemplate.gradleファイルをエディタで開きます。(Unity 2019.3.X以降のバージョンからは launcherTemplate.gradleファイルを編集)
- Facebookログインを使用しないお客様は、facebook_app_id/fb_login_protocol_scheme値を以下のように任意設定するか、ビルド時に../Assets/Plugins/Android/libs/gamepot-channel-facebook.aarファイルが含まれないように設定します。
gamepot_payment値は空欄を基本とします。
値 | 説明 |
---|---|
gamepot_project_id | GAMEPOTで発行されたプロジェクト ID (ダッシュボードプロジェクトの設定 > 一般メニューで確認) |
gamepot_store | ストア値、google 、one またはgalaxy と入力 |
gamepot_app_title | アプリのタイトル(FCM) |
gamepot_push_default_channel | 変更禁止(登録されている基本チャンネル名) |
facebook_app_id | Facebookで発行されたアプリ ID |
fb_login_protocol_scheme | Facebookで発行されたアプリ ID |
facebook_client_token | Facebookコンソール > アプリ > 設定 > 高度な設定 > クライアントトークン |
gamepot_elsa_projectid | NAVERクラウド ELSAサービスを使用する場合、ELSAプロジェクト IDを入力 (Effective Log Search & Analyticsを参照) |
gamepot_region | GAMEPOTダッシュボード作成リージョンがシンガポールの場合のみ sgと入力 |
gamepot_license_url | GAMEPOTダッシュボード作成リージョンが日本の場合のみ https://gamepot.apigw.ntruss.com/fw/jp-v1を入力 |
...
android {
...
defaultConfig {
...
resValue "string", "gamepot_project_id", "" // required
resValue "string", "gamepot_store", "google" // required
resValue "string", "gamepot_app_title","@string/app_name" // required (fcm)
resValue "string", "gamepot_push_default_channel","Default" // required (fcm)
resValue "string", "facebook_app_id", "0" // optional (facebook)
resValue "string", "fb_login_protocol_scheme", "fb0" // optional (facebook)
resValue "string", "facebook_client_token", "" // Facebookコンソール > アプリ > 設定 > 高度な設定 > クライアントトークン optional (facebook)
// resValue "string", "gamepot_elsa_projectid", "" // optional (ncp elsa)
resValue "string", "gamepot_region", "" // Caution! Only if the gamepot region is Singapore , value as sg
resValue "string", "gamepot_license_url", "" // Caution! Only if the gamepot region is Japan , value as https://gamepot.apigw.ntruss.com/fw/jp-v1
}
...
}
gradleTemplateの編集(Unity 2022.2以降のバージョン)
Edit > Project Settings > Player > Publishing Settings > Custom Gradle properties Templateをクリックします。
- このオプションを有効化すると、Assets/Plugins/Android/gradleTemplate.propertiesファイルが作成されます。
gradleTemplate.propertiesファイルに以下の内容を追加してください。
android.useAndroidX=true
android.enableJetifier=true
プッシュ通知アイコンの設定
プッシュメッセージの受信時に、通知バーに表示するアイコンを設定できます。別途設定しない場合は、SDKに含まれている基本画像を使用するとともに、ゲームに合ったアイコンを直接設定できます。
Android Asset Studioを利用して制作すると、自動的にフォルダ別に画像が制作され便利です。
プッシュ通知アイコンを設定する方法は、次の通りです。
以下のようにプロジェクトパスに res/drawableフォルダをそれぞれ作成し、各サイズの画像ファイルを追加します。
フォルダ名 サイズ /Assets/Plugins/Android/GamePotResources/res/drawable-mdpi/ 24x24 /Assets/Plugins/Android/GamePotResources/res/drawable-hdpi/ 36x36 /Assets/Plugins/Android/GamePotResources/res/drawable-xhdpi/ 48x48 /Assets/Plugins/Android/GamePotResources/res/drawable-xxhdpi/ 72x72 /Assets/Plugins/Android/GamePotResources/res/drawable-xxxhdpi/ 96x96 Unityエンジン202x以後からは、GamePotResources.androidlibフォルダに入れ、mainTemplate.gradleにそのリソースフォルダを追加します。
... implementation project('GamePotResources.androidlib') ...
画像ファイル名を ic_stat_gamepot_smallに変更します。
Screen Orientationの設定
ゲームに合わせて Screen Orientationを設定する方法は、次の通りです。
- /Assets/Plugin/Android/AndroidManifest.xmlファイルを Unityで開きます。
- Main Activityに以下のコードを追加し、ゲームに合わせて
sensorLandscape
またはsensorPortrait
を値として入力します。... <activity android:screenOrientation="sensorLandscape"> <intent-filter> <action android:name="android.intent.action.MAIN" /> ... </intent-filter> </activity> ...
Android Resolver、Unity Buildの設定
SDKを使用するには、以下のように Android Resolverおよび Unity Buildを設定します。
Android Resolver
Unityの Assets > Play Services Resolver > Android Resolver > Settingsメニューのうち Use Jetifierを選択します。
Enable Resolution On Build / Enable Auto-Resolution / Patch gradle Template.properties項目は選択を解除します。Unity Build
Unityで File > Build Settings > Build Systemメニューを順にクリックし、Gradleを選択します。
iOS環境の設定
GAMEPOT Unity SDKを使用して iOSベースのゲームを開発するには、必要な環境を設定する必要があります。
プロジェクトの構成
iOS環境を設定するためにプロジェクトを構成する方法は、次の通りです。
Google Firebaseコンソールで取得した GoogleService-Info.plistファイルを Unityプロジェクトに追加します。
表を参照してプロジェクトの GamePotConfig-Info.plistファイルで以下の設定を変更します。
(Facebookログインを使用しない場合、ビルド時に GamePotFacebook.frameworkが含まれないようにします)環境変数 説明 gamepot_project_id GAMEPOTで発行されたプロジェクト ID gamepot_facebook_app_id Facebookコンソールで取得したアプリ ID gamepot_facebook_display_name Facebookに表示される名前 gamepot_facebook_client_token // Facebookコンソール > アプリ > 設定 > 高度な設定 > クライアントトークン gamepot_google_app_id GoogleService-Infoファイルの CLIENT_ID
値gamepot_google_url_schemes GoogleService-Infoファイルの REVERSED_CLIENT_ID
値gamepot_elsa_projectid NAVERクラウド ELSA使用時のプロジェクト ID gamepot_region GAMEPOTダッシュボード作成リージョンがシンガポールの場合のみ sgと入力 gamepot_license_url GAMEPOTダッシュボード作成リージョンが日本の場合のみ https://gamepot.apigw.ntruss.com/fw/jp-v1を入力 Targetを選択し、Info > Custom iOS Target Propertiesメニューで以下のユーザー権限取得オプションを追加します。(Xcode基準)
- このユーザー権限は GAMEPOTサポート内のファイルアップロード機能で使用されます。
NSCameraUsageDescription
,NSPhotoLibraryUsageDescription
,NSMicrophoneUsageDescription
- iOS 14バージョンから IDFA値を取得する際に、ユーザーから権限を取得しないと IDFA値を取得できないようになりました。従って、IDFA値を取得する際にユーザーから権限を取得するポップアップを使用する場合は、Targets >> Info >> Custom iOS Target Propertiesに以下のユーザー権限取得オプションを追加してください。(収集する目的と使用先についての説明が必要です)
NSUserTrackingUsageDescription
- このユーザー権限は GAMEPOTサポート内のファイルアップロード機能で使用されます。
<例> GAMEPOTのサンプル画面
File > Build Settings メニューで GamePotSample>Scene>Login、Mainを追加して > Buildしたら、サンプル画面を確認できます。
初期化
初期化を実行するには、ゲームを始める際にロードされる最初の画面に使用されるインスタンスに、以下のコードを追加します。
using GamePotUnity;
public class GamePotLoginSampleScene : MonoBehaviour {
void Awake() {
GamePot.initPlugin();
}
void Start () {
GamePot.setListener(GamePotInterface.csを継承された class);
}
}
ex)
public class GamePotSampleListener : MonoBehaviour , IGamePot {
....
}
エラーコードの設定
エラーコードを設定するには以下のコードを使用します。
public class NError
{
// 不明なエラー
public static readonly int CODE_UNKNOWN_ERROR = 0;
// 初期化に失敗
public static readonly int CODE_NOT_INITALIZE = 1;
// パラメータが正しくない場合
public static readonly int CODE_INVAILD_PARAM = 2;
// メンバー IDデータがない場合
public static readonly int CODE_MEMBERID_IS_EMPTY = 3;
// ログインされていない状態
public static readonly int CODE_NOT_SIGNIN = 4;
// ネットワークモジュールが初期化されなかった場合
public static readonly int CODE_NETWORK_MODULE_NOT_INIT = 3000;
// ネットワークコネクションエラーおよびタイムアウトが発生した場合
public static readonly int CODE_NETWORK_ERROR = 3001;
// server-sideで発生するエラー
public static readonly int CODE_SERVER_ERROR = 4000;
// http response codeが成功していない場合
public static readonly int CODE_SERVER_HTTP_ERROR = 4001;
// ネットワークコネクションエラーおよびタイムアウトが発生した場合
public static readonly int CODE_SERVER_NETWORK_ERROR = 4002;
// サーバから取得したデータをパースする際のエラー
public static readonly int CODE_SERVER_PARSING_ERROR = 4003;
// 決済で不明なエラー発生およびストア側からエラーを伝達する場合
public static readonly int CODE_CHARGE_UNKNOWN_ERROR = 5000;
// product idを入力しなかった場合
public static readonly int CODE_CHARGE_PRODUCTID_EMPTY = 5001;
// product idを正しく入力しなかった場合
public static readonly int CODE_CHARGE_PRODUCTID_WRONG = 5002;
// consume時のエラー
public static readonly int CODE_CHARGE_CONSUME_ERROR = 5003;
// error Code
public int code { get; set; }
// error Message
public string message { get; set; }
}
ログインに関連する機能
Google、Facebook、NAVERなど様々なログイン SDK機能を統合して GAMEPOT Unity SDKで使用できます。
使用前の設定
ログインに関連する SDK機能を使用するには、必要なコンソールの設定を完了し、ログインに関連するコードを宣言する必要があります。
Googleログイン環境の設定
ログイン機能を使用するために Google Firebaseコンソールを設定する方法は、次の通りです。
- Google Firebaseコンソールで取得した Android用 google-service.jsonファイルを/Assets/Plugins/Android/パスにコピーします。
- APKを構成する際に使用した Keystoreファイルの SHA-1値を Firebaseコンソールに追加します。
- Googleログインを行う際に、onCancelレスポンスと一緒にログインされない場合は、以下のように解決してください。
- google-service.jsonファイルを正常に適用したか確認します
- APKを構成する際に使用した Keystoreと、Firebaseコンソールを登録するために SHA-1値を抽出した Keystoreが同じインスタンスであるかどうかを確認
- Firebaseコンソールに登録したパッケージ名でビルドしたかどうかを確認
Facebookログイン環境の設定
ログイン機能を使用するために Facebookコンソールを設定する方法は、次の通りです。
- Facebook for Developersコンソールでアプリタイプを None、Consumer、Instant Gamesのいずれかにしてアプリを作成します。
- APKを構成する際に使用した Keystoreのキーハッシュ値を Facebook for Developersコンソールに追加します。
- Facebook for Developersコンソールで取得したアプリ IDと関連情報を追加します。
- Android
- mainTemplate.gradleを編集(Unity 2019以降のバージョンからは launcherTemplate.gradleで編集)
... defaultConfig { resValue "string", "facebook_app_id", "{アプリ ID}" resValue "string", "fb_login_protocol_scheme", "fb{アプリ ID}" resValue "string", "facebook_client_token", "" // Facebookコンソール > アプリ > 設定 > 高度な設定 > クライアントトークン optional (facebook) } ...
- iOS
- GamepotConfig-info.plistファイルの変更
SourceCodeで確認する場合は以下のように追加gamepot_facebook_app_id // Facebookアプリ ID gamepot_facebook_display_name // Facebookに表示される名前 gamepot_facebook_client_token // // Facebookコンソール > アプリ > 設定 > 高度な設定 > クライアントトークン
... <key>gamepot_facebook_app_id</key> <string>xxxxxx</string> <key>gamepot_facebook_display_name</key> <string>xxxxxx</string> <key>gamepot_facebook_client_token</key> <string>xxxxxx</string> ...
- プロジェクト/Assets/Plugins/IOS/Frameworksパスに以下のフレームワークを追加します。
- FBSDKLoginKit.xcframework, FBSDKCoreKit_Basics.xcframework, FBSDKCoreKit.xcframework, FBAEMKit.xcframework, FBSDKCoreKit.framework, GamePotFacebook.framework
Appleログイン環境の設定
iOS専用 Appleログイン環境を設定するには、プロジェクトで Targetを選択し、Signing & Capabilitiesメニューで Sign In with Apple Capabilityを追加します。
ゲームセンターログイン環境の設定
iOS専用ゲームセンターログイン環境を設定する方法は、次の通りです。
- プロジェクト Assets/Plugins/IOS/etcFrameworks/パスで GamePotGameCenter.frameworkを選択し、Select platforms for pluginリストの iOS設定を選択します。
- Xcodeで Targetを選択し、Build Phases > Linked Binary With Librariesメニューに Gamekit.frameworkを追加します。
- Signing & Capabilitiesメニューで GameCenter Capabilityを追加します。
ログイン機能
開発会社で実装したログイン UIにより、ログインボタンをクリックしたときに動作する SDKログイン機能を使用するには、以下のコードを使用します。
方式1
GamePot.login(NCommon.LoginType); // ログインに成功 public void onLoginSuccess(NUserInfo userInfo) { } // ログインに失敗 public void onLoginFailure(NError error) { // error.messageを利用してメッセージを表示します。 } // ログインをキャンセル public void onLoginCancel() { // ユーザーがログインをキャンセル } // 強制アップデート(ストアバージョンとゲームクライアントバージョンが異なる場合に呼び出す) public void onNeedUpdate(NAppStatus status) { // パラメータで渡された status情報に基づいてポップアップを作って表示します。以下の二つの方式のうち一つを選択してポップアップを構成します。 //ケース1: 開発会社で直接 UIを実装したゲーム内ポップアップを使用 // ケース2: 以下のコードを呼び出して SDK独自のポップアップを使用 // GamePot.showAppStatusPopup(status.ToJson()); } // メンテナンス(ダッシュボードでメンテナンスが有効化している場合に呼び出す) public void onMainternance(NAppStatus status) { // パラメータで渡された status情報に基づいてポップアップを作って表示します。以下の二つの方式のうち一つを選択してポップアップを構成します。 //ケース1: 開発会社で直接 UIを実装したゲーム内ポップアップを使用 // ケース2: 以下のコードを呼び出して SDK独自のポップアップを使用 // GamePot.showAppStatusPopup(status.ToJson()); } // アプリを終了 public void onAppClose() { //強制アップデートやメンテナンス機能をケース2方式で実装する場合は、アプリを強制終了できるため、ここでアプリを終了できるように実装します。 }
方式2
GamePot.login(NCommon.LoginType.GOOGLE, GamePotCallbackDelegate.CB_Login); GamePot.login(NCommon.LoginType.GOOGLE, (resultState, userInfo, appStatus, error) => { switch (resultState) { case NCommon.ResultLogin.SUCCESS: // login success break; case NCommon.ResultLogin.CANCELLED: // login cancel break; case NCommon.ResultLogin.FAILED: // login fail break; case NCommon.ResultLogin.NEED_UPDATE: // パラメータで渡された appStatus情報に基づいてポップアップを作って表示します。以下の二つの方式のうち一つを選択してポップアップを構成します。 //ケース1: 開発会社で直接 UIを実装したゲーム内ポップアップを使用 // ケース2: 以下のコードを呼び出して SDK独自のポップアップを使用 // GamePot.showAppStatusPopup(status.ToJson()); break; case NCommon.ResultLogin.MAINTENANCE: // パラメータで渡された appStatus情報に基づいてポップアップを作って表示します。以下の二つの方式のうち一つを選択してポップアップを構成します。 //ケース1: 開発会社で直接 UIを実装したゲーム内ポップアップを使用 // ケース2: 以下のコードを呼び出して SDK独自のポップアップを使用 // GamePot.showAppStatusPopup(status.ToJson()); break; case NCommon.ResultLogin.APP_CLOSE: //強制アップデートやメンテナンス機能をケース2方式で実装する場合は、アプリを強制終了できるため、ここでアプリを終了できるように実装します。 break; default: break; } });
LoginType、NUserInfo、NAppStatusの定義
ログイン機能の各種パラメータを設定するには、以下のコードを使用します。
LoginType
public enum LoginType { NONE, GOOGLE, GOOGLEPLAY, FACEBOOK, NAVER, GAMECENTER, TWITTER, LINE, APPLE, GUEST, THIRDPARTYSDK }
NUserInfo
public class NUserInfo { public string memberid { get; set; } // ユーザーの固有 ID public string name { get; set; } // 名前 public string profileUrl { get; set; } // プロフィール URL(ある場合) public string email { get; set; } // メールアドレス(ある場合) public string token { get; set; } // ユーザーの有効性検証用 Token(Token Authentication APIで使用) public string userid { get; set; } // ソーシャルメディア ID }
NAppStatus
public class NAppStatus { public string type { get; set; } // AppStatusタイプで、「maintenance」: メンテナンス、「needupdate」: アップデート public string message { get; set; } // メンテナンス設定: Dashboardで入力したメッセージ public string url { get; set; } // メンテナンス設定: Dashboardで入力した URL public string currentAppVersion { get; set; } // アップデート: 現在の App Version public string updateAppVersion { get; set; } // アップデート: Dashboardで入力した App Version public int currentAppVersionCode { get; set; } // アップデート: 現在の App Code public int updateAppVersionCode { get; set; } // アップデート: Dashboardで入力した App Version code public bool isForce { get; set; } // アップデート: Dashboardで強制アップデート設定時、true public string resultPayload { get; set; } // クライアント SDKから伝達された JSON値で、無視します。 public double startedAt { get; set; } // メンテナンス: 開始時間 public double endedAt { get; set; } // メンテナンス: 終了時間 }
IDFA値取得のための権限リクエストポップアップの設定
iOSプラットフォームでユーザーの IDFA値取得のための権限をリクエストするポップアップを使用するには、以下のコードを使用します。
//IDFA値取得権限リクエストポップアップを任意で表示できます。
// 権限を取得した後は、メソッドを呼び出してもポップアップは表示されません。
GamePot.requestTrackingAuthorization((NResultTrackingAuthorizationresultState) =>
{
// 取得した NResultTrackingAuthorizationresultStateハンドリング..
});
NResultTrackingAuthorizationresultState
定義public class NResultTrackingAuthorization { public NCommon.ResultTrackingAuthorization authorization { get; set; } } public enum ResultTrackingAuthorization { ATTrackingManagerAuthorizationStatusNotDetermined, ATTrackingManagerAuthorizationStatusRestricted, ATTrackingManagerAuthorizationStatusDenied, ATTrackingManagerAuthorizationStatusAuthorized, ATTrackingManagerAuthorizationStatusUnknown }
会員の固有 IDの取得
ゲーム会員の固有 ID値を取得するには、以下のコードを使用します。
GamePot.getMemberId();
アカウント別ログイン機能の使用
アカウント別のログイン機能を使用するには、以下のコードを使用して設定を適用します。
NAVERログイン
NAVERログイン機能を使用するには、NAVER Developersコンソールの APIで NAVER IDでログイン
を選択してアプリを登録し、以下のコードを使用します。
- Android
- mainTemplate.gradleの編集
... defaultConfig { resValue "string", "gamepot_naver_clientid", "abcdefg1234567890" resValue "string", "gamepot_naver_secretid", "hijklmn" } ... // NAVER Developersコンソールで取得した Client IDを gamepot_naver_clientid値に入力し、Client Secretを gamepot_naver_secretid値に入力します。 ```
- iOS
- GamepotConfig-info.plistファイルの変更
SourceCodeで確認する場合は以下のように追加gamepot_naver_clientid // NAVERで使用する client ID gamepot_naver_secretid // NAVERで使用する secret ID gamepot_naver_urlscheme // NAVERで使用する URL Scheme
... <key>gamepot_naver_clientid</key> <string>xxxxxx</string> <key>gamepot_naver_secretid</key> <string>xxxxxx</string> <key>gamepot_naver_urlscheme</key> <string>xxxxxx</string> ...
- プロジェクト Info > URL Typesメニューに NAVER IDでログイン設定に登録した URL Schemeを追加
LINEログイン
LINEログイン機能を使用するには、APKを構成する際に使用したパッケージ名、Keystoreの SHA-1値、URL Scheme値を LINE Developersコンソールに追加し、以下のコードを使用します。
- Android
- mainTemplate.gradleの編集
... defaultConfig { resValue "string", "gamepot_line_channelid","xxxxxxx" } ... // LINE Developersコンソールで取得した Client IDを gamepot_line_channelid値に入力します。
- iOS
- GamepotConfig-info.plistファイルの変更
SourceCodeで確認する場合は以下のように追加gamepot_line_channelid // NAVERで使用する client ID gamepot_line_url_schemes // Line URL Scheme (line3rdp.{プロジェクトバンドル identifier})
... <key>gamepot_line_channelid</key> <string>xxxxxx</string> <key>gamepot_line_url_schemes</key> <string>xxxxxx</string> ...
Appleウェブログイン
Appleウェブログイン機能を使用するには、ダッシュボードのプロジェクトの設定 > 一般メニューで Apple ID Loginを設定し、プロジェクト/Assets/Plugins/Android/libsパスで gamepot-channel-apple-signin.aarファイルを追加します。
自動ログイン機能
会員の最後のログイン情報を伝達する APIで自動ログイン機能を使用するには、以下のコードを使用します。
NCommon.LoginType type = GamePot.getLastLoginType();
if(type != NCommon.LoginType.NONE) {
{
// 最後にログインしたログインタイプでログインする方式です。
GamePot.login(type);
}
else
{
// 初めてゲームを実行したか、ログアウトした状態。ログインできるログイン画面に移動します。
}
ログアウト機能
ログアウト機能を使用するには、以下のコードを使用します。
- 方式1
GamePot.logout();
// ログアウト成功
public void onLogoutSuccess()
{
}
// ログアウト失敗
public void onLogoutFailure(NError error)
{
// error.messageを利用してメッセージを表示します。
}
- 方式2
GamePot.logout(GamePotCallbackDelegate.CB_Common);
GamePot.logout((success, error) => {
if(success)
{
// ログアウト成功
}
else
{
// ログアウト失敗
// error.messageを利用してメッセージを表示します。
}
});
会員退会機能
会員退会機能を使用するには、以下のコードを使用します。
- 方式1
GamePot.deleteMember();
// 会員退会に成功
public void onDeleteMemberSuccess() {
}
// 会員退会に失敗
public void onDeleteMemberFailure(NError error) {
// error.messageを利用してメッセージを表示します。
}
- 方式2
GamePot.deleteMember(GamePotCallbackDelegate.CB_Common);
GamePot.deleteMember((success, error) => {
if(success)
{
// 会員退会に成功
}
else
{
// 会員退会に失敗
// error.messageを利用してメッセージを表示します。
}
});
ログイン検証機能
ログイン完了後、ログイン情報を開発会社のサーバから GAMEPOTサーバに伝達してログイン検証を行えます。
詳細は、ログイン検証リクエストをご参照ください。
外部アカウントとの連携
一つのゲームアカウントに複数の外部アカウントを連携したり、解除できます。
アカウント連携機能
Google、Facebook、NAVERなど様々な外部アカウントとの連携機能を使用するには、以下のコードを使用します。
- 方式1
public enum LinkingType
{
GOOGLEPLAY,
GAMECENTER,
GOOGLE,
FACEBOOK,
NAVER,
TWITTER,
LINE,
APPLE
}
void GamePot.createLinking(NCommon.LinkingType.XXXXX);
// アカウント連携をキャンセル
public void onCreateLinkingCancel() {
// ユーザーがアカウント連携をキャンセル
}
// アカウント連携に成功
public void onCreateLinkingSuccess(NUserInfo userInfo) {
}
// アカウント連携に失敗
public void onCreateLinkingFailure(NError error) {
// error.messageを利用してメッセージを表示します。
}
- 方式2
public enum LinkingType
{
GOOGLEPLAY,
GAMECENTER,
GOOGLE,
FACEBOOK,
NAVER,
TWITTER,
LINE,
APPLE
}
void GamePot.createLinking(NCommon.LinkingType.XXXXX, GamePotCallbackDelegate.CB_CreateLinking);
GamePot.createLinking(NCommon.LinkingType.XXXXX, (resultState, userInfo, error) => {
switch (resultState)
{
case NCommon.ResultLinking.SUCCESS:
// アカウント連携に成功
break;
case NCommon.ResultLinking.CANCELLED:
// アカウント連携をキャンセル
break;
case NCommon.ResultLinking.FAILED:
// アカウント連携に失敗
break;
default:
break;
}
});
連携リスト確認機能
アカウントに連携された外部アカウントリストを確認するには、以下のコードを使用します。
List<NLinkingInfo> linkedList = GamePot.getLinkedList();
//リンク情報の定義
public class NLinkingInfo
{
public LinkingType provider { get; set; } // google, facebook, naver, apple..
}
連携解除機能
外部アカウントとの連携解除機能を使用するには、以下のコードを使用します。
- 方式1
void GamePot.deleteLinking(NCommon.LinkingType.XXXXX);
// アカウント連携の解除成功
public void onDeleteLinkingSuccess() {
}
// アカウント連携の解除失敗
public void onDeleteLinkingFailure(NError error) {
// 連携解除に失敗した場合
// error.messageを利用してメッセージを表示します。
}
- 方式2
void GamePot.deleteLinking(NCommon.LinkingType.XXXXX, GamePotCallbackDelegate.CB_Common);
GamePot.deleteLinking(NCommon.LinkingType.XXXXX, (success, error) => {
if(success)
{
// アカウント連携の解除に成功
}
else
{
// 連携解除に失敗した場合
// error.messageを利用してメッセージを表示します。
}
});
決済機能
GAMEPOT決済は消耗品の In-App商品タイプのみサポートしています。また、ONE Store In-App SDKは V21バージョンのみサポートしています。
- ONE Store In-App SDK付き:gamepot-billing-onestore.aar、sdk-auth-1.1.2.aar、sdk-base-1.1.2.aar、sdk-iap-21.01.00.aar
- GALAXY Store In-App SDK付き: gamepot-billing-galaxystore.aar
- MyCard In-App SDK付き: gamepot-billing-mycard.aar(Google Storeビルドには含まれないようにします)
In-App購入のための決済機能を使用できます。
ONE Storeの場合、AndroidManifest.xmlファイル内に下記のコードを追加する必要があります。
<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>
In-App商品の照会機能
ストアに登録されている商品情報の照会機能を使用するには、以下のコードを使用します。
ログイン成功後、呼び出しが必要な APIで getPurchaseItems APIの場合、非同期的にストア In-App SDKから受け取った内容を伝える APIのため、呼び出すタイミングによっては空の値で伝達されることがあります。(決済可能な環境基準)
[Case1]:
NPurchaseItem[] items = GamePot.getPurchaseItems();
foreach(NPurchaseItem item in items) {
Debug.Log(item.productId); // 商品 ID
Debug.Log(item.price); // 価格
Debug.Log(item.title); // タイトル
Debug.Log(item.description); // 説明
}
[Case2]:
GamePot.getPurchaseDetailListAsync((bool success, NPurchaseItem[] purchaseInfoList, NError error) =>
{
// string result = "data is empty!";
if (success)
{
//PurchaseDetailList API Success
// if (purchaseInfoList != null)
// result = purchaseInfoList[0].productId;
//if (purchaseInfoList.Length > 1)
//{
// for (int i = 1; i < purchaseInfoList.Length; i++)
// result += "\n" + purchaseInfoList[i].productId;
//}
}
else
{
// APIエラー
// result = error.ToJson();
}
});
public class NPurchaseItem
{
public string productId { get; set; } // 商品 ID
public string type { get; set; } // 商品タイプ。「inapp」に固定
public string price { get; set; } // 価格 googleストア: $0.99、その他のストア: 0.99
public string price_amount { get; set; }
public string price_amount_micros { get; set; }
public string price_currency_code { get; set; } // 通貨コード 例) KRW、USD
public string price_with_currency { get; set; } // (UIに表示する場合に推奨)通貨と価格を合わせた値。ONE Storeの場合、通貨単位は伝達されません。例) $0.99
public string title { get; set; } // 商品名
public string description { get; set; } // 商品説明
}
[Case3]:
GamePot.getPurchaseDetailListAsync();
public void onPurchaseDetailListSuccess(NPurchaseItem[] purchaseInfoList)
{
//PurchaseDetailList API Success
}
public void onPurchaseDetailListFailure(NError error)
{
// APIエラー
}
決済試行機能
一つの決済 APIで Google Play Storeと APPSTOREの両方で決済試行機能を使用できます。
(ONE Storeバージョンは、uniqueId+serverId+playerId+etc 1つの長さが85byte未満の場合に決済できます)
決済試行機能を使用するには、以下のコードを使用します。
- 方式1
// productId: ストアに登録されている商品 ID
// uniqueId: 別途管理する領収証番号
// serverId: 決済を行ったキャラクターのサーバ ID
// playerId: 決済を行ったキャラクターのキャラクター ID
// etc : 決済を行ったキャラクターのその他の情報
GamePot.purchase(string productId);
GamePot.purchase(string productId, string uniqueId);
GamePot.purchase(string productId, string uniqueId, string serverId, string playerId, string etc);
// In-App決済に成功
public void onPurchaseSuccess(NPurchaseInfo purchase) {
}
// In-App決済に失敗
public void onPurchaseFailure(NError error) {
// In-App決済に失敗
// error.messageを利用してメッセージを表示します。
}
// In-App決済に失敗
public void onPurchaseCancel() {
}
- 方式2
// productId: ストアに登録されている商品 ID
GamePot.purchase(string productId, GamePotCallbackDelegate.CB_Purchase);
GamePot.purchase(string productId, string uniqueId, GamePotCallbackDelegate.CB_Purchase);
GamePot.purchase(string productId, string uniqueId, string serverId, string playerId, string etc, GamePotCallbackDelegate.CB_Purchase);
GamePot.purchase(productId, (resultState, purchaseInfo, error) => {
switch (resultState)
{
case NCommon.ResultPurchase.SUCCESS:
// purchase success
break;
case NCommon.ResultPurchase.CANCELLED:
// purchase cancel
break;
case NCommon.ResultPurchase.FAILED:
// purchase fail
break;
default:
break;
}
});
決済アイテム情報の取得機能
ストアに伝達する In-App決済アイテム情報の取得機能を使用するには、以下のコードを使用します。
public class NPurchaseInfo
{
public string price { get; set; } // 決済アイテムの価格
public string productId { get; set; } // 決済アイテム ID
public string currency { get; set; } // 決済価格通貨(KRW/USD)
public string orderId { get; set; } // ストア Order ID
public string productName { get; set; } // 決済アイテム名
public string gamepotOrderId { get; set; } // GAMEPOTで作成した Order ID(当該値を提供しない)
public string uniqueId { get; set; } // 開発会社で別途管理する領収証 ID
public string serverId { get; set; } // 決済を行ったキャラクターのサーバ ID
public string playerId { get; set; } // 決済を行ったキャラクターのキャラクター ID
public string etc { get; set; } // 決済を行ったキャラクターのその他の情報
public string signature { get; set; } // 決済 Signature
public string originalJSONData { get; set; } // 領収証データ
}
決済アイテムの支給機能
決済ストアの領収書の内訳と対照して検証をすべて完了した場合のみ、開発会社のサーバに支給リクエストを転送するように設定できます。
詳細は、アイテム支給のリクエストをご参照ください。
MyCard決済
MyCardライブラリ: gamepot-billing-mycard.aar
MyCardと連携させるためのFacServiceID / KEYの値は、MyCard側にお問い合わせください。
ダッシュボード >> 決済 >> IAPストアタイプ: Google項目 > 価格の追加 > 通貨(例: TWD)/価格情報を入力し、保存します。
ダッシュボード >> プロジェクトの設定 >> 外部決済項目に MyCardを追加し、その FacService ID / Sign Keyが正常に入力されたのか確認します。
決済は SDKの以下のコードを呼び出します。
GamePot.getInstance().purchase("product id");- MyCard使用中の決済アイテムの呼び出し形態は、既存の GamePot.getInstance().getPurchaseDetailList();を呼び出すとエラーが発生します。
それに代わる GamePot.getInstance().getPurchaseThirdPaymentsDetailList();を呼び出すようにします。
- MyCard使用中の決済アイテムの呼び出し形態は、既存の GamePot.getInstance().getPurchaseDetailList();を呼び出すとエラーが発生します。
../Assets/Plugins/Android/AndroidManifest.xmlファイルで
レベルの名前を削除します。
<supports-screens android:smallScreens="true" android:normalScreens="true" android:largeScreens="true" android:xlargeScreens="true" android:anyDensity="true" />
<application android:icon="@drawable/app_icon"
android:label="@string/app_name"
android:allowBackup="false"
tools:replace="android:allowBackup"
>
- ../Assets/Plugins/Android/mainTemplate.gradleファイルに以下のように設定します。
(Unity 2019.3.X以降のバージョンからは launcherTemplate.gradleファイルを編集)
resValue "string", "gamepot_store", "google"
resValue "string", "gamepot_payment", "mycard" // ストアが googleの場合にのみ動作します。
- ../Assets/Plugins/Android/libsフォルダ内に gamepot-billing-mycard.aarが含まれているか確認します。
外部決済
外部決済モジュールと連携するには、まず外部決済とのサービス連携を参照して設定を完了し、以下のコードを使用します。
- 方式1
GamePot.purchaseThirdPayments(string productId);
// 返されるデータ形式は getPurchaseItems()と同じです。
GamePot.getPurchaseThirdPaymentsItems();
- 方式2
GamePot.purchaseThirdPayments(string productId, GamePotCallbackDelegate.CB_Purchase);
// 返されるデータ形式は getPurchaseItems()と同じです。
GamePot.purchase(productId, (resultState, purchaseInfo, error) => {
switch (resultState)
{
case NCommon.ResultPurchase.SUCCESS:
// purchase success
break;
case NCommon.ResultPurchase.CANCELLED:
// purchase cancel
break;
case NCommon.ResultPurchase.FAILED:
// purchase fail
break;
default:
break;
}
});
SDK独自提供のログイン UI
GAMEPOT Unity SDKが提供する完成された形のログイン UIを使用できます。
SDK独自提供のログイン UIの呼び出し
GAMEPOT Unity SDKが提供するログイン UIを呼び出すには、以下のコードを使用します。
- 方式1
public class NLoginUIInfo
{
public NCommon.LoginType[] loginTypes { get; set; } // 表示する Login UIタイプ(配列)
public bool showLogo { get; set; } // 画像ロゴを表示するかどうか
}
NLoginUIInfo info = new NLoginUIInfo();
//呼び出すログイン UIタイプ
info.loginTypes = new NCommon.LoginType[]
{
NCommon.LoginType.GOOGLE,
NCommon.LoginType.FACEBOOK,
NCommon.LoginType.GUEST
...
};
info.showLogo = true;
GamePot.showLoginWithUI(info);
//一般ログイン APIレスポンスロジックと同じです。ただし、onLoginCancel / onLoginFailureの場合、Nativeレベルでトーストメッセージで処理されます。
// ログインに成功
public void onLoginSuccess(NUserInfo userInfo)
{
}
// 強制アップデート(ストアバージョンとゲームクライアントバージョンが異なる場合に呼び出す)
public void onNeedUpdate(NAppStatus status)
{
// パラメータで渡された status情報に基づいてポップアップを作って表示します。以下の二つの方式のうち一つを選択してポップアップを構成します。
//ケース1: 開発会社で直接 UIを実装したゲーム内ポップアップを使用
// ケース2: 以下のコードを呼び出して SDK独自のポップアップを使用
// GamePot.showAppStatusPopup(status.ToJson());
}
// メンテナンス(ダッシュボードでメンテナンスが有効化している場合に呼び出す)
public void onMainternance(NAppStatus status)
{
// パラメータで渡された status情報に基づいてポップアップを作って表示します。以下の二つの方式のうち一つを選択してポップアップを構成します。
//ケース1: 開発会社で直接 UIを実装したゲーム内ポップアップを使用
// ケース2: 以下のコードを呼び出して SDK独自のポップアップを使用
// GamePot.showAppStatusPopup(status.ToJson());
}
// アプリを終了
public void onAppClose()
{
//強制アップデートやメンテナンス機能をケース2方式で実装する場合は、アプリを強制終了できるため、ここでアプリを終了できるように実装します。
}
public void onLoginExit()
{
// 独自提供ログイン UIを閉じたとき
}
- 方式2
GamePot.showLoginWithUI(NLoginUIInfo, GamePotCallbackDelegate.CB_Login);
GamePot.showLoginWithUI(NLoginUIInfo, (resultState, userInfo, appStatus, error) => {
switch (resultState)
{
case NCommon.ResultLogin.SUCCESS:
// login success
break;
case NCommon.ResultLogin.EXIT:
// 独自提供ログイン UIを閉じたとき
break;
case NCommon.ResultLogin.NEED_UPDATE:
// パラメータで渡された status情報に基づいてポップアップを作って表示します。以下の二つの方式のうち一つを選択してポップアップを構成します。
//ケース1: 開発会社で直接 UIを実装したゲーム内ポップアップを使用
// ケース2: 以下のコードを呼び出して SDK独自のポップアップを使用
// GamePot.showAppStatusPopup(appStatus.ToJson());
break;
case NCommon.ResultLogin.MAINTENANCE:
// パラメータで渡された status情報に基づいてポップアップを作って表示します。以下の二つの方式のうち一つを選択してポップアップを構成します。
//ケース1: 開発会社で直接 UIを実装したゲーム内ポップアップを使用
// ケース2: 以下のコードを呼び出して SDK独自のポップアップを使用
// GamePot.showAppStatusPopup(appStatus.ToJson());
break;
case NCommon.ResultLogin.APP_CLOSE:
//強制アップデートやメンテナンス機能をケース2方式で実装する場合は、アプリを強制終了できるため、ここでアプリを終了できるように実装します。
break;
default:
break;
}
});
独自提供のログイン UI画像ロゴの設定
独自提供のログイン UI上部に表示される画像を設定できます。別途設定しない場合は、SDKに含まれている基本画像を使用し、ゲームに合った画像を直接設定できます。
Android用画像ロゴの設定
Android用の独自提供のログイン UI画像を設定する方法は、次の通りです。
- 以下のように res/drawableフォルダをそれぞれ作成し、各サイズ別の画像ファイルを追加します。
フォルダ名 サイズ /Assets/Plugins/Android/GamePotResources/res/drawable-mdpi/ 78x55 /Assets/Plugins/Android/GamePotResources/res/drawable-hdpi/ 116x82 /Assets/Plugins/Android/GamePotResources/res/drawable-xhdpi/ 155x110 /Assets/Plugins/Android/GamePotResources/res/drawable-xxhdpi/ 232x165 /Assets/Plugins/Android/GamePotResources/res/drawable-xxxhdpi/ 310x220 - 画像ファイル名を ic_stat_gamepot_login_logo.pngに変更します。
iOS用画像ロゴの設定
iOS用独自提供のログイン UI画像を設定するには、設定する画像(推奨サイズ310x220)のファイル名を ic_stat_gamepot_login_logo.pngに変更し、GamePot.bundle内に存在する同じ名前の従来のファイルと取り替えます。
クーポン機能
ユーザーがクーポンを入力すると使用処理する機能を使うには、以下のコードを使用します。
- 方式1
GamePot.coupon(string couponNumber); // クーポン番号
GamePot.coupon(string couponNumber, string userData); // クーポン番号、ユーザー情報
// クーポン使用に成功
public void onCouponSuccess() {
}
// クーポン使用に失敗
public void onCouponFailure(NError error) {
// error.messageを利用してメッセージを表示します。
}
- 方式2
GamePot.coupon(string couponNumber, GamePotCallbackDelegate.CB_Common); // クーポン番号
GamePot.coupon(string couponNumber, string userData, GamePotCallbackDelegate.CB_Common); // クーポン番号、ユーザー情報
GamePot.coupon(couponNumber, (success, error) => {
if(success)
{
// クーポン使用に成功
}
else
{
// クーポン使用に失敗
// error.messageを利用してメッセージを表示します。
}
});
アイテムの支給
クーポン使用に成功すると、開発会社のサーバにアイテム支給をリクエストします。
詳細は、アイテム支給のリクエストをご参照ください。
プッシュ通知機能
一般プッシュ通知、夜間プッシュ通知、プッシュ型広告の通知機能を有効化または無効化することができます。
プッシュ型広告設定は、プッシュ通知機能を使用する場合に trueにします(プッシュ型広告の値が falseの場合、一般/夜間プッシュの設定に関係なくプッシュは受信できません)。
一般プッシュ通知の設定
一般プッシュ通知を設定するには、以下のコードを使用します。
- 方式1
GamePot.setPushStatus(bool pushEnable);
// プッシュ通知の状態変更に関するサーバ通信に成功
public void onPushSuccess() {
}
// プッシュ通知の状態変更に関するサーバ通信に失敗
public void onPushFailure(NError error) {
// プッシュ通知の状態変更に失敗した場合は、error.messageを利用してメッセージを表示します。
}
- 方式2
void GamePot.setPushStatus(bool pushEnable, GamePotCallbackDelegate.CB_Common);
GamePot.setPushStatus(pushEnable, (success, error) => {
if(success)
{
// プッシュ通知の状態変更に関するサーバ通信に成功
}
else
{
// プッシュ通知の状態変更に失敗。error.messageを利用してメッセージを表示します。
}
});
夜間プッシュ通知の設定
夜間プッシュ通知を設定するには、以下のコードを使用します。
- 方式1
GamePot.setPushNightStatus(bool nightPushEnable);
// 夜間プッシュ通知の状態変更に関するサーバ通信成功
public void onPushNightSuccess() {
}
// 夜間プッシュ通知の状態変更に関するサーバ通信失敗
public void onPushNightFailure(NError error) {
// 夜間プッシュ通知の状態変更に失敗した場合は、error.messageを利用してメッセージを表示します。
}
- 方式2
void GamePot.setPushNightStatus(bool nightPushEnable, GamePotCallbackDelegate.CB_Common);
GamePot.setPushNightStatus(nightPushEnable, (success, error) => {
if(success)
{
// 夜間プッシュ通知の状態変更に関するサーバ通信に成功
}
else
{
// 夜間プッシュ通知の状態変更に失敗。error.messageを利用してメッセージを表示します。
}
});
一般/夜間/プッシュ型広告を一度に設定
ログイン前にプッシュ通知を許可するかどうかを確認するゲームの場合は、ログインの後に以下のコードを呼び出します。
- 方式1
GamePot.setPushStatus(bool pushEnable, bool nightPushEnable, bool adPushEnable);
// プッシュ通知の状態変更に関するサーバ通信に成功
public void onPushStatusSuccess() {
}
// プッシュ通知の状態変更に関するサーバ通信に失敗
public void onPushStatusFailure(NError error) {
// プッシュ通知の状態変更に失敗した場合は、error.messageをポップアップなどを利用してユーザーに知らせます。
}
- 方式2
void GamePot.setPushStatus(bool pushEnable, bool nightPushEnable, bool adPushEnable, GamePotCallbackDelegate.CB_Common);
GamePot.setPushStatus(pushEnable, nightPushEnable, adPushEnable, (success, error) => {
if(success)
{
// プッシュ通知の状態変更に関するサーバ通信に成功
}
else
{
// プッシュ通知の状態変更に失敗。error.messageをポップアップなどを利用してユーザーに知らせます。
}
});
プッシュ通知の状態確認
現在のプッシュ通知の状態を確認するには、以下のコードを使用します。
NPushInfo pushInfo = GamePot.getPushStatus();
// pushInfo.enableプッシュ通知の On/Off
// pushInfo.night夜間のプッシュ通知の On/Off
画像プッシュ通知機能
iOSアプリで通知画像を受信して処理できるように通知サービス拡張プログラムを追加する方法は、次の通りです。
- プロジェクトで Targetメニューをクリックして Notification Service Extensionを選択し、Nextをクリックします。
- Project Nameを入力し、Finishをクリックします。
- 作成された Notification Service Extensionモジュールの NotificationService.hファイルを以下のように編集します。
// GamePot/GamePotNotificationServiceExtension.hを Import // #import <UserNotifications/UserNotifications.h> #import <GamePot/GamePotNotificationServiceExtension.h // UNNotificationServiceExtensionの代わりに GamePotNotificationServiceExtensionを継承 // @interface NotificationService : UNNotificationServiceExtension @interface NotificationService : GamePotNotificationServiceExtension @end
- 作成された Notification Service Extensionモジュールの NotificationService.mファイルを以下のように編集します。
5. 作成された Notification Service Extensionモジュールで Targets > Build Phases > Link Binary With Librariesメニューを順にクリックし、GamePot.frameworkを追加します。... - (void)didReceiveNotificationRequest:(UNNotificationRequest *)request withContentHandler:(void (^)(UNNotificationContent * _Nonnull))contentHandler { // self.contentHandler = contentHandler; // self.bestAttemptContent = [request.content mutableCopy]; // Modify the notification content here... // self.bestAttemptContent.title = [NSString stringWithFormat:@"%@ [modified]", self.bestAttemptContent.title]; // self.contentHandler(self.bestAttemptContent); [super didReceiveNotificationRequest:request withContentHandler:contentHandler]; } ...
お知らせの画像表示機能
ダッシュボードのお知らせメニューにアップロードした画像が表示されるように設定できます。推奨画像サイズは、次の通りです。
- サイズ: 720x1200(Portrait)、1280x640(Landscape)
- 容量: 250KB以下
ダッシュボードのお知らせメニューにアップロードした画像が表示されるようにするには、以下のコードを使用します。
GamePot.showNotice(bool Flag = true);
// true: 「今日は表示しない」を適用
// false: 「今日は表示しない」とは関係なしに強制表示
GamePot.showEvent(string Type)
// Type: ダッシュボードのお知らせ > 分類メニューで設定した分類名に該当する画像のみ表示
public void onReceiveScheme(string scheme)
{
// GAMEPOTダッシュボードで設定した scheme値を伝達
}
カスタマーサポート機能
ダッシュボードと連携し、問い合わせ、ポリシーおよび規約 UIの呼び出し、同意の収集などの機能を使用できます。
問い合わせ機能
会員が問い合わせを送信すると、担当者が返答できる問い合わせ機能を使用できます。ダッシュボードのサポート > お問い合わせメニューと連携されます。
問い合わせ UIは、デバイスの言語に応じて韓国語、英語、日本語、中国語体字および繁体字のうち一つの言語に変更されます。その他のデバイスの言語の場合は、英語に変更されます。
ダッシュボードと連携して問い合わせ機能を使用するには、以下のコードを使用します。
GamePot.showCSWebView();
外部リンクの問い合わせ
外部リンクでログインしていない顧客も問い合わせを登録できるようにするには、以下のコードを使用します。
//URL: GAMEPOTから発行された外部カスタマーサポート URL
GamePot.showWebView(string url);
規約およびポリシー UIの呼び出し機能
ダッシュボードのサポートメニューで作成した各種規約やポリシーを UIで呼び出しできます。
規約およびポリシー UIを呼び出すには、以下のコードを使用します。
利用規約
GamePot.showTerms();
個人情報の取扱方針
GamePot.showPrivacy();
払い戻しポリシー
GamePot.showRefund();
規約同意機能(GDPRを含む)
提供されるポップアップ UI機能を使用し、ダッシュボードで作成した各種ポリシーや規約への同意を収集できます。GDPRポリシーへの同意も収集できます。
規約同意の自動呼び出し
GAMEPOT Unity SDKバージョン v3.3.0以降を使用する場合は、会員がログインする際に自動的に規約同意のポップアップが表示されます。
ログインの際に規約同意を自動的に呼び出すかどうかを変更するには、以下のコードを使用します。
// デフォルト値は true
//自動ポップアップ時、MATERIAL_BLUEテーマを適用
// falseに設定すると、ログイン時に規約同意のポップアップが表示されません。
GamePot.setAutoAgree(true);
// MATERIAL_ORANGEテーマをカスタム適用時
NAgreeInfo bulider = new NAgreeInfo();
bulider.theme = "MATERIAL_ORANGE";
GamePot.setAutoAgreeBuilder(bulider);
...
GamePot.login(NCommon.LoginType);
...
規約同意の手動呼び出し
規約同意の呼び出しを手動で行うには、以下のコードを使用します。
テーマの選択
// 基本テーマ BLUE GREEN // 改善テーマ MATERIAL_RED, MATERIAL_BLUE, MATERIAL_CYAN, MATERIAL_ORANGE, MATERIAL_PURPLE, MATERIAL_DARKBLUE, MATERIAL_YELLOW, MATERIAL_GRAPE, MATERIAL_GRAY, MATERIAL_GREEN, MATERIAL_PEACH,
呼び出し - 方法1
//基本呼び出し(MATERIAL_BLUEテーマを適用) GamePot.showAgreeDialog(); // その他のテーマを適用する場合 NAgreeInfo info = new NAgreeInfo(); info.theme = "MATERIAL_RED"; GamePot.showAgreeDialog(info); // 規約に同意した場合 public void onAgreeDialogSuccess(NAgreeResultInfo info) { // info.agree: 規約の必須事項にすべて同意した場合、true // info.agreePush: 一般プッシュ型広告の通知を許可した場合は true、そうでない場合は false // info.agreeNight: 夜間プッシュ型広告の通知を許可した場合は true、そうでない場合は false // agreePush / agreeNight値はログインを完了してから setPushStatus APIを通じて一度に設定してください。 } // エラー発生 public void onAgreeDialogFailure(NError error) { // error.messageを利用してメッセージを表示します。 }
呼び出し - 方法2
//基本呼び出し(BLUEテーマを適用)
showAgreeDialog(GamePotCallbackDelegate.CB_ShowAgree);
// その他のテーマを適用する場合
NAgreeInfo info = new NAgreeInfo();
info.theme = "MATERIAL_RED";
GamePot.showAgreeDialog(info,GamePotCallbackDelegate.CB_ShowAgree);
GamePot.showAgreeDialog( info, (success, NAgreeResultInfo agreeInfo, NError error) => {
if(success)
{
// 規約に同意した場合
// info.agree: 規約の必須事項にすべて同意した場合、true
// info.agreePush: 一般プッシュ型広告の通知を許可した場合は true、そうでない場合は false
// info.agreeNight: 夜間プッシュ型広告の通知を許可した場合は true、そうでない場合は false
// agreePush / agreeNight値はログインを完了してから setPushStatus APIを通じて一度に設定してください。
}
else
{
// エラー発生
// error.messageを利用してメッセージを表示します。
}
});
規約同意 UIテーマの直接構成
SDKで提供するテーマを使う代わりに、直接構成した規約同意 UIのテーマを使用できます。
規約同意 UIのテーマを直接構成して使用するには、規約同意を呼び出す前に、以下のコードを使ってテーマを構成します。
NAgreeInfo info = new NAgreeInfo();
info.theme = "MATERIAL_RED";
info.headerBackGradient = new string[] { "0xFF00050B", "0xFF0F1B21" };
info.headerTitleColor = "0xFFFF0000";
info.headerBottomColor = "0xFF00FF00";
// 未使用時は""に設定
info.headerTitle = "規約同意";
// Android: res/drawableオブジェクト ID(ファイル名)
// iOS: assetオブジェクト ID(ファイル名)
info.headerIconDrawable = "ic_stat_gamepot_agree";
info.contentBackGradient = new string[] { "0xFFFF2432", "0xFF11FF32" };
info.contentIconColor = "0xFF0429FF";
info.contentCheckColor = "0xFFFFADB5";
info.contentTitleColor = "0xFF98FFC6";
info.contentShowColor = "0xFF98B3FF";
// Android: res/drawableオブジェクト ID(ファイル名)
// iOS: assetオブジェクト ID(ファイル名)
info.contentIconDrawable = "ic_stat_gamepot_small";
info.footerBackGradient = new string[] { "0xFFFFFFFF", "0xFF112432" };
info.footerButtonGradient = new string[] { "0xFF1E3A57", "0xFFFFFFFF" };
info.footerButtonOutlineColor = "0xFFFF171A";
info.footerTitleColor = "0xFFFF00D5";
info.footerTitle = "ゲームを始める";
// 一般プッシュ型広告通知許可ボタンを表示するかどうか
info.showPush = true;
// 夜間プッシュ型広告通知許可ボタンを表示するかどうか
info.showNightPush = true;
// 一般プッシュ型広告通知許可リンクボタンの設定(使用しない場合、入力しない)
info.pushDetailURL = "https://...";
// 夜間プッシュ型広告通知許可リンクボタンの設定(使用しない場合、入力しない)
info.nightPushDetailURL = "https://...";
// 文言を変更
info.allMessage = "すべて同意";
info.termMessage = "必須) 利用規約";
info.privacyMessage = "必須) 個人情報の取扱方針";
info.pushMessage = "任意) 一般プッシュ通知を許可";
info.nightPushMessage = "任意) 夜間プッシュ通知を許可";
//プッシュ型広告通知許可(一般/夜間)にチェックを入れた場合、ゲームを始める際の Toastメッセージ(同意時間)表示の有無
GamePot.setShowToastPushStatus(true);
GamePot.showAgreeDialog(info);
//規約ポップアップ内の年齢制限関連のオプション有効化の有無(基本無効化/有効化する場合、GAMEPOTダッシュボード > サポートセンター > 設定> GDPR > メール認証項目記入は必須)
info.ageCertificationShow = false; // true: 年齢制限を有効化 false: 無効化
- それぞれの変数は、以下の画像に表示された領域に適用されます。
- AgeView
- EmailView
- AgreeView
- AgeView
GDPR規約のチェックリスト機能
ダッシュボードで有効化した GDPRの規約項目をリストの形で取得するには、以下のコードを使用します。
//返されるデータ形式はstring[]です。
GamePot.getGDPRCheckedList();
//返されるパラメータは、ダッシュボードの次の設定に該当します。
gdpr_privacy: 個人情報の取扱方針
gdpr_term: 利用規約
gdpr_gdpr: GDPRの利用規約
gdpr_push_normal: イベントプッシュ受信に同意
gdpr_push_night: 夜間イベントプッシュ受信に同意(韓国のみ対象)
gdpr_adapp_custom: パーソナライズド広告を見るに同意 (GDPR適用国)
gdpr_adapp_nocustom: 非パーソナライズド広告を見るに同意 (GDPR適用国)
決済キャンセルを悪用するユーザーに対する再決済ポップアップ機能
ダッシュボードの決済キャンセルメニューで、Google決済キャンセルを悪用するユーザーを自動的に利用停止するように設定した場合は、その悪用するユーザーに対して SDKで提供する再決済ポップアップ UIが表示されます。その UIを通じて決済をキャンセルしたアイテムを再決済すると、利用停止が自動的に解除されます。
基本的に提供される決済キャンセルを悪用するユーザーに対する再決済ポップアップのメッセージを変更して使用するには、以下のコードを使用します。
NVoidInfo info = new NVoidInfo();
//テーマの種類
MATERIAL_RED,
MATERIAL_BLUE,
MATERIAL_CYAN,
MATERIAL_ORANGE,
MATERIAL_PURPLE,
MATERIAL_DARKBLUE,
MATERIAL_YELLOW,
MATERIAL_GRAPE,
MATERIAL_GRAY,
MATERIAL_GREEN,
MATERIAL_PEACH
//テーマの変更
info.theme = "MATERIAL_ORANGE";
// 文言を変更
info.headerTitle = "Header Title Section!";
info.descHTML = "descHTML Section!";
info.listHeaderTitle = "listHeaderTitle Section!";
info.footerTitle = "footerTitle Section!";
GamePot.setVoidBuilder(info);
Remote Config機能
ダッシュボードのゲーム > Remote Configメニューに登録したサーバのパラメータ値を取得できます。パラメータ値を取得して SDKで使用すると、ゲームをアップデートせずに各要素を変更または制御できます。
取得したパラメータはログイン時にロードされ、その後から呼び出すことができます。
Remote Config機能を使用するには、以下のコードを使用します。
//「Test_01」: パラメータ string
var str_value = GamePot.getConfig("test_01");
//ダッシュボードに追加したすべてのパラメータを JSON string形式で取得します。
var json_value = GamePot.getConfigs();
ゲームログの転送機能
ゲームログを呼び出してダッシュボードのゲーム > プレイヤーメニューで確認できます。
ゲームログの転送機能を使用するには、表を参照して以下のコードに予約語を入力し、コードを呼び出します。
- 予約語およびコード
予約語 必須の有無 タイプ 説明 最大長さ GamePotSendLogCharacter.NAME
必須 String
キャラクター名 128 GamePotSendLogCharacter.LEVEL
任意 String
レベル 128 GamePotSendLogCharacter.SERVER_ID
任意 String
サーバ ID 128 GamePotSendLogCharacter.PLAYER_ID
任意 String
キャラクター ID 128 GamePotSendLogCharacter.USERDATA
任意 String
ETC 128 String name = "キャラクター名"; String level = "10"; String serverid = "svn_001"; String playerid = "283282191001"; String userdata = ""; GamePotSendLogCharacter characterLog = new GamePotSendLogCharacter(); characterLog.put(GamePotSendLogCharacter.NAME, name); characterLog.put(GamePotSendLogCharacter.PLAYER_ID, playerid); characterLog.put(GamePotSendLogCharacter.LEVEL, level); characterLog.put(GamePotSendLogCharacter.SERVER_ID, serverid); characterLog.put(GamePotSendLogCharacter.USERDATA, userdata); Boolean result = GamePot.characterInfo(characterLog); // 結果値 true: 検証に成功。ログが GAMEPOTサーバに転送されます。 // 結果値 false: 検証に失敗。logcatを確認します。
AppStatusの確認
現在クライアントの AppStatusを確認するには、以下のコードを使用します。(ログイン前のメンテナンス / アップデートの状態確認)
public enum ResultCheckAppStatus
{
SUCCESS,
FAILED,
NEED_UPDATE,
MAINTENANCE
}
GamePot.checkAppStatus((NCommon.ResultCheckAppStatus resultState , NAppStatus appStatus, NError error) =>
{
switch(resultState)
{
case NCommon.ResultCheckAppStatus.SUCCESS:
// メンテナンス / アップデート関連の設定がされていない状態
break;
case NCommon.ResultCheckAppStatus.FAILED:
// Handling error
break;
case NCommon.ResultCheckAppStatus.NEED_UPDATE:
// アップデート
// Handling appStatus
// パラメータで渡された status情報に基づいてポップアップを作って表示します。以下の二つの方式のうち一つを選択してポップアップを構成します。
//ケース1: 開発会社で直接 UIを実装したゲーム内ポップアップを使用
// ケース2: 以下のコードを呼び出して SDK独自のポップアップを使用
// GamePot.showAppStatusPopup(appStatus.ToJson());
break;
case NCommon.ResultCheckAppStatus.MAINTENANCE:
// によるチェック
// Handling appStatus
// パラメータで渡された status情報に基づいてポップアップを作って表示します。以下の二つの方式のうち一つを選択してポップアップを構成します。
//ケース1: 開発会社で直接 UIを実装したゲーム内ポップアップを使用
// ケース2: 以下のコードを呼び出して SDK独自のポップアップを使用
// GamePot.showAppStatusPopup(appStatus.ToJson());
break;
default:
break;
}
});
setUserDataの設定
ログイン後、当該会員に追加情報を入れる場合に使用します。
キーの最大数は50個に制限
値の最大長さは1024バイトに制限
これらの情報は会員の詳細項目でのみ確認できます。
- 方式1
JSONNode _json = new JSONObject();
_json.Add("appversion", "1.0.23");
_json.Add("server", "s1");
string json = _json.ToString();
GamePot.setUserData(_json);
// setUserDataに成功
public void onSetUserDataSuccess() {
}
// setUserDataに失敗
public void onSetUserDataFailure(NError error) {
}
- 方式2
void setUserData(JSONNode userData, GamePotCallbackDelegate.CB_SetUserData cbSetUserData);
JSONNode _json = new JSONObject();
_json.Add("appversion", "1.0.23");
_json.Add("server", "s1");
string json = _json.ToString();
GamePot.setUserData(_json, (success, error) => {
if(success)
{
// setUserDataに成功
}
else
{
// setUserDataに失敗
}
});
3rd Party SDK連携
GAMEPOT Unity SDKは3rd Party SDKとの連携に対応しています。
3rd Party SDKログイン連携
3rd Party SDKと連携してログイン機能を使用するには、表を参照して以下のコードにパラメータ値を入力し、コードを使用します。
パラメータおよびコード
- 自動ログインに対応しないため、毎回呼び出す必要があります。
パラメータ名 必須の有無 タイプ 説明 userid
必須 String
ユーザーの固有 ID
値に「:」(コロン)は使用不可String userid = "memberid of 3rd party sdk"; GamePot.loginByThirdPartySDK("userid");
3rd Party SDKとの決済連携
3rd Party SDKと連携して決済機能を使用するには、表を参照して以下のコードにパラメータ値を入力し、コードを使用します。
- パラメータおよびコード
パラメータ名 必須の有無 タイプ 説明 productid
必須 String
ダッシュボードに登録されているアイテム ID transactionid
必須 String
決済領収証番号(GPA-xxx-xxxx-xxxx) store
必須 決済ストア( google
,apple
,one
,galaxy
)currency
任意 String
通貨(KRW、USD) price
任意 double
決済アイテム金額 paymentid
任意 String
決済 ID
一般的には store_idと同じuniqueid
任意 String
開発会社で使用する固有 ID String productId = "purchase_001"; String transactionId = "GPA-xxx-xxxx-xxxx"; String currency = "KRW"; double price = 1200; String paymentId = "google"; String uniqueId = "developer unique id"; sendPurchaseByThirdPartySDK(string productId, string transactionId, string currency, double price, string store, string paymentId, string uniqueId);
Firebase SDK連携時の注意事項
Firebase SDKと正常に連携させるには、初回の連携を含めてパッケージ名が変更されるたびに Assets > External Dependency Manager > Android Resolver > Settingsメニューで Patch mainTemplate.gradleオプションを選択解除し、Resolveを行う必要があります。
Firebaseのライブラリが Unityエディタに入力されたパッケージ名でリパッケージングされる際に、パッケージ名が正しくないとアプリはインストールされません。この場合、パッケージ名を正しく変更する必要があります。
パッケージ名を確認・変更するには、以下のコードを使用します。
// Resolve作業後、com.google.firebase.firebase-common-[Firebaseライブラリバージョン].aar内
AndroidManifest.xmlで android:authorities値がバージョンに合ったパッケージ名形式([パッケージ名].firebaseinitprovider)になっているか確認します。
<provider>
android:name="com.google.firebase.provider.FirebaseInitProvider"
android:exported="false"
android:authorities=“[アプリのパッケージ名].firebaseinitprovider"
Native環境でプロジェクトを編集
GAMEPOT Unity SDKの使用中に Native環境でプロジェクトを編集する場合は、MainActivityである io.gamepot.unity.plugin.GamePotSDKActivityの Classを継承して別途処理する MainActivityを作成する必要があります。
GAMEPOT Unity SDKを使用して Native環境でプロジェクトを編集する方法は、次の通りです。サンプルファイルに基づいて説明します。
- ダウンロードした例題プロジェクトの/app/libsパスにある例題ブリッジファイルをプロジェクトの gamepot-bridge.aarファイル削除します。
- 現在プロジェクトの gamepot-bridge.aarファイルをダウンロードした例題プロジェクトの/app/libsパスに追加します。
- ビルドの実行後に作成された.aarファイルをプロジェクトパスの/Android/libsパスに追加します。
- 以下のコードを使用し、MainActivityが取り替えられるように AndroidManifest.xmlを編集します。
従来: <activity android:theme="@style/UnityThemeSelector" android:name="io.gamepot.unity.plugin.GamePotSDKActivity" 変更: android:name="io.gamepot.unity.plugin.Game.GameActivity" //サンプル基準: ビルド時に継承したアクティビティに変更