Game > Gamebase > Unity SDK ご利用ガイド > Push

ここではプラットフォームごとにPush通知を使用するために必要な設定方法についてご案内いたします。

[注意]

外部パッケージでプッシュ関連処理がある場合、Gamebaseプッシュ機能が正常に動作しない可能性があります。

Settings

AndroidやiOSでPushを設定する方法は、次のドキュメントを参照してください。

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

GamebaseRequest.Push.PushConfiguration

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

Setting for APNS Sandbox

  • SandboxModeを有効にすると、APNS SandboxへPushを送信するように登録できます。
  • コンソールから送信する方法
    • Pushメニューの対象からiOS Sandboxを選択した後、送信します。

Notification Options

  • 端末に表示する通知をどのような形式で表示するかをNotification Optionsで変更できます。
  • 実行時にregisterPush APIを呼び出して変更できます。

Set Notification Options with RegisterPush in Runtime

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

Get NotificationOptions

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)=> { });
}

Request Push Settings

ユーザーの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.
        }
    });
}

GamebaseResponse.Push.TokenInfo

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)

GamebaseResponse.Push.Agreement

Parameter Values Description
pushEnabled bool 通知表示同意有無
adAgreement bool 広告性通知表示同意有無
adAgreementNight bool 夜間広告性通知表示同意有無

Event Handling

Setting for APNS Sandbox

  • SandboxModeをオンにすると、APNS SandboxでPushを送信するように登録できます。
  • コンソール送信方法
    • Pushメニューの対象からiOS Sandboxを選択した後に送信します。

API

Supported Platforms

UNITY_IOS

public static void SetSandboxMode(bool isSandbox)

Example

public void SetSandboxModeSample()
{
    Gamebase.Push.SetSandboxMode(true);
}

Error Handling

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

  • このエラーはNHN Cloud Pushライブラリでエラーが発生した時に返されます。
  • NHN Cloud Pushライブラリで発生したエラー情報は詳細エラーに含まれており、詳細なエラーコードおよびメッセージは次のように確認できます。
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));
    }
}
  • NHN Cloud Pushのエラーコードを確認してください。
TOP