ここではプラットフォームごとにPush通知を使用するために必要な設定方法についてご案内いたします。
[注意]
外部パッケージでプッシュ関連処理がある場合、Gamebaseプッシュ機能が正常に動作しない可能性があります。
AndroidやiOSでPushを設定する方法は、次のドキュメントを参照してください。
次のAPIを呼び出してNHN Cloud Pushに該当するユーザーを登録します。 Pushの同意状態(enablePush)、Push型広告の同意状態(enableAdPush)、夜間のPush型広告の同意状態(enableAdNightPush)の値をユーザーから取得し、次のAPIを呼び出して登録を完了させます。
[注意]
UserIDごとにプッシュ設定が異なる場合があり、プッシュトークンの有効期限切れも発生することがあるため、ログイン後は毎回registerPush APIを呼び出すことを推奨します。
API
Supported Platforms
■ UNITY_IOS ■ UNITY_ANDROID
public static void RegisterPush(GamebaseRequest.Push.PushConfiguration pushConfiguration, GamebaseCallback.ErrorDelegate callback);
public static void RegisterPush(GamebaseRequest.Push.PushConfiguration pushConfiguration, GamebaseRequest.Push.NotificationOptions options, GamebaseCallback.ErrorDelegate callback);
Parameter | Mandatory(M) / Optional(O) |
Values | Description |
---|---|---|---|
pushEnabled | M | bool | プッシュ同意有無 |
adAgreement | M | bool | 広告性プッシュ同意有無 |
ADAgreemadAgreementNightentNight | M | bool | 夜間広告性プッシュ同意有無 |
requestNotificationPermission | O | bool | Android 13以上のOSでRegisterPush APIを呼び出した時にPush権限リクエストポップアップを自動出力するかどうか default: true Androidのみ |
alwaysAllowTokenRegistration | O | bool | ユーザーがプッシュ権限を拒否してもトークンを登録するかどうか trueに設定した場合、プッシュ権限を取得できなくてもトークンを登録します。 default: false iOSのみ |
Example
public void RegisterPush(bool pushEnabled, bool adAgreement, bool adAgreementNight, bool requestNotificationPermission, bool alwaysAllowTokenRegistration)
{
GamebaseRequest.Push.PushConfiguration pushConfiguration = new GamebaseRequest.Push.PushConfiguration
{
pushEnabled = pushEnabled,
adAgreement = adAgreement,
adAgreementNight = adAgreementNight,
displayLanguageCode = displayLanguage,
requestNotificationPermission = requestNotificationPermission,
alwaysAllowTokenRegistration = alwaysAllowTokenRegistration
};
// You should receive the above values to the logged-in user.
Gamebase.Push.RegisterPush(pushConfiguration, (error) =>
{
if (Gamebase.IsSuccess(error))
{
Debug.Log("RegisterPush succeeded.");
}
else
{
Debug.Log(string.Format("RegisterPush failed. error is {0}", error));
}
});
}
RegisterPush APIを呼び出す時、GamebaseRequest.Push.NotificationOptions引数を追加して通知オプションを設定できます。
GamebaseRequest.Push.NotificationOptionsの作成者にGamebase.Push.GetNotificationOptions()呼び出し結果を伝達すると、現在の通知オプションで初期化されたオブジェクトが作成されるため、必要な値のみ変更できます。
設定可能な値は次の通りです。
API | Parameter | Description |
---|---|---|
foregroundEnabled | bool | アプリがフォアグラウンド状態の時の通知表示有無 default: false |
badgeEnabled | bool | バッジアイコン使用有無 default: true |
soundEnabled | bool | 通知音使用有無 default: true iOS Only |
priority | int | 通知の優先順位。以下の5つの値を設定できます。 GamebaseNotificationPriority.MIN : -2 GamebaseNotificationPriority.LOW : -1 GamebaseNotificationPriority.DEFAULT : 0 GamebaseNotificationPriority.HIGH : 1 GamebaseNotificationPriority.MAX : 2 default: GamebaseNotificationPriority.HIGH Android Only |
smallIconName | string | 通知用の小さいアイコンのファイル名。 設定していない場合、アプリアイコンが使用されます。 default: null Android Only |
soundFileName | string | 通知音ファイル名。 Android 8.0未満のOSでのみ動作します。 'res/raw'フォルダのmp3、wavファイル名を指定すると、通知音が変更されます。 default: null Android Only |
Example
public void RegisterPush(bool pushEnabled, bool adAgreement, bool adAgreementNight, bool requestNotificationPermission, bool alwaysAllowTokenRegistration)
{
GamebaseRequest.Push.PushConfiguration pushConfiguration = new GamebaseRequest.Push.PushConfiguration
{
pushEnabled = pushEnabled,
adAgreement = adAgreement,
adAgreementNight = adAgreementNight,
requestNotificationPermission = requestNotificationPermission,
alwaysAllowTokenRegistration = alwaysAllowTokenRegistration
};
var notificationOptions = new GamebaseRequest.Push.NotificationOptions
{
foregroundEnabled = true,
priority = GamebaseNotificationPriority.HIGH
};
Gamebase.Push.RegisterPush(configuration, notificationOptions, (error) =>
{
if (Gamebase.IsSuccess(error) == true)
{
Debug.Log("RegisterPush succeeded.");
}
else
{
// Check the error code and handle the error appropriately.
Debug.Log(string.Format("RegisterPush failed. error is {0}", error));
}
});
}
API
Supported Platforms
■ UNITY_IOS ■ UNITY_ANDROID
public static GamebaseResponse.Push.NotificationOptions GetNotificationOptions();
Example
public void GetNotificationOptionsSample()
{
GamebaseResponse.Push.NotificationOptions notificationOptions = Gamebase.Push.GetNotificationOptions();
GamebaseRequest.Push.NotificationOptions options = new GamebaseRequest.Push.NotificationOptions(notificationOptions);
options.foregroundEnabled = true;
options.smallIconName = "notification_icon_name";
GamebaseRequest.Push.PushConfiguration configuration = new GamebaseRequest.Push.PushConfiguration();
Gamebase.Push.RegisterPush(configuration, options, (error)=> { });
}
ユーザーのPush設定を照会するために、次のAPIを利用します。
コールバックによるGamebaseResponse.Push.TokenInfoの値からユーザー設定値を取得することができます。
API
Supported Platforms
■ UNITY_IOS ■ UNITY_ANDROID
public static void QueryTokenInfo(GamebaseCallback.GamebaseDelegate<GamebaseResponse.Push.TokenInfo> callback);
// Legacy API
public static void QueryPush(GamebaseCallback.GamebaseDelegate<GamebaseResponse.Push.PushConfiguration> callback);
Example
public void QueryTokenInfoSample(bool isSandbox)
{
Gamebase.Push.QueryTokenInfo((data, error)=>
{
if (Gamebase.IsSuccess(error))
{
// Succeeded.
bool enablePush = data.agreement.pushEnabled;
bool enableAdPush = data.agreement.adAgreement;
bool enableAdNightPush = data.agreement.adAgreementNight;
string token = data.token;
}
else
{
// Failed.
}
});
}
Parameter | Values | Description |
---|---|---|
pushType | string | Pushトークンタイプ |
token | string | トークン |
userId | string | ユーザーID |
deviceCountryCode | string | 国コード |
timezone | string | 標準時間帯 |
registeredDateTime | string | トークンアップデート時間 |
languageCode | string | 言語設定 |
agreement | GamebaseResponse.Push.Agreement | 受信同意有無 |
sandbox | bool | sandboxかどうか(iOS Only) |
Parameter | Values | Description |
---|---|---|
pushEnabled | bool | 通知表示同意有無 |
adAgreement | bool | 広告性通知表示同意有無 |
adAgreementNight | bool | 夜間広告性通知表示同意有無 |
API
Supported Platforms
■ UNITY_IOS
public static void SetSandboxMode(bool isSandbox)
Example
public void SetSandboxModeSample()
{
Gamebase.Push.SetSandboxMode(true);
}
Error | Error Code | Description |
---|---|---|
PUSH_EXTERNAL_LIBRARY_ERROR | 5101 | NHN Cloud Pushライブラリエラーです。 詳細エラーを確認してください。 |
PUSH_ALREADY_IN_PROGRESS_ERROR | 5102 | 前回のPush APIの呼び出しが完了していません。 前回のPush APIのコールバックが実行された後、もう一度呼び出してください。 |
PUSH_UNKNOWN_ERROR | 5999 | 定義されていないPushエラーです。 ログ全体をカスタマーセンターにアップロードしてください。なるべく早くお答えいたします。 |
PUSH_EXTERNAL_LIBRARY_ERROR
GamebaseError gamebaseError = error; // GamebaseError object via callback
if (Gamebase.IsSuccess(gamebaseError))
{
// succeeded
}
else
{
Debug.Log(string.Format("code:{0}, message:{1}", gamebaseError.code, gamebaseError.message));
GamebaseError moduleError = gamebaseError.error; // GamebaseError.error object from external module
if (null != moduleError)
{
int moduleErrorCode = moduleError.code;
string moduleErrorMessage = moduleError.message;
Debug.Log(string.Format("moduleErrorCode:{0}, moduleErrorMessage:{1}", moduleErrorCode, moduleErrorMessage));
}
}