プッシュ通知を受信する

事前準備

KARTE のプッシュ通知では、バックエンドとして Firebase Cloud Messaging (以下 FCM)を利用しています。
そのため、事前に FCM SDK を導入する必要があります。

FCM SDK を導入することで、FCM の登録トークンの取得が可能となり、KARTE から FCM を経由してプッシュ通知を送ることが可能になります。
なお KARTE から FCM を経由してプッシュ通知を送信するために、KARTE の管理画面側でもいくつかの設定が必要になります。

設定方法については、以下のドキュメントをご覧ください。

🚧

通知の表示と通知イベントの呼び出しについて

Firebase Unity SDKの仕様上、Android,iOSのネイティブ実装と挙動が違う部分があります。ご注意ください。

Android

アプリがバックグラウンド時に通知を受信した場合、通知は表示されず、通知イベント( Firebase.Messaging.FirebaseMessaging.MessageReceived )も呼ばれません。
その後、アプリがフォアグラウンドになった時に通知が表示され、通知イベントが呼ばれます。

iOS

アプリがフォアグラウンド時に通知を受信した場合、通知イベントは呼ばれますが、通知は表示されません。

通知の表示有無、通知イベントが呼ばれるタイミングについては以下の表をご参照ください。

Android

アプリの状態

通知表示

通知イベント

フォアグラウンド

即時

バックグラウンド

×

アプリがフォアグラウンドになった時

iOS

アプリの状態

通知表示

通知イベント

フォアグラウンド

×

即時

バックグラウンド

アプリがフォアグラウンドになった時

FCM SDK の導入を行う

FCM SDK の導入に関しては、下記ドキュメントをご覧ください。

Karte SDKをUnity Package Managerからインストールした場合

  1. https://developers.google.com/unity/archive からFirebase App(Core)Firebase Cloud Messagingの.tgzファイルをダウンロード
  2. ダウンロードしたファイルをプロジェクト内の適当なパスに配置
  3. Window > Package Managerから左上の+ボタンをクリックし、Add package from git tarball...を選択
  4. Firebase Appの.tgzを選択
  5. 同様の手順でFirebase Cloud Messagingも追加

Karte SDKをKarteSDK.unitypackageからインストールした場合

上記Firebaseのドキュメントの通りFirebase SDKを導入してください。

プッシュ通知の利用に必要な実装を行う

FCM トークンの送信

KARTE からプッシュ通知を送信するためには、アプリケーションから端末の登録トークンを送信する必要があります。

using UnityEngine;
using Io.Karte;
  
public class Sample : MonoBehaviour {
    private Firebase.FirebaseApp firebaseApp;
    
    void Start () {
        Firebase.FirebaseApp.CheckAndFixDependenciesAsync ().ContinueWith (task => {
                var dependencyStatus = task.Result;
                if (dependencyStatus == Firebase.DependencyStatus.Available) {
                    firebaseApp = Firebase.FirebaseApp.DefaultInstance;

                    Firebase.Messaging.FirebaseMessaging.TokenReceived += OnTokenReceived;
                    Firebase.Messaging.FirebaseMessaging.MessageReceived += OnMessageReceived;
                } else {
                    UnityEngine.Debug.LogError (System.String.Format ("Could not resolve all Firebase dependencies: {0}", dependencyStatus));
                }
            });
    }

    public void OnTokenReceived (object sender, Firebase.Messaging.TokenReceivedEventArgs token) {
        App.RegisterFCMToken (token.Token);
    }
}

受信した通知メッセージのハンドリング

開封イベントを送信する

通知メッセージを開いた際の開封イベントの送信は、KARTE SDK が自動で行います。
そのため、アプリケーション側で開封イベントの送信処理を実装する必要はありません。

通知メッセージに含まれるディープリンクを開く

通知メッセージに含まれるディープリンクを開くには、RemoteNotificationHandlerクラスの HandleRemoteNotificationメソッドを呼び出します。

using UnityEngine;
using Io.Karte;
  
public class Sample : MonoBehaviour {

    public void OnMessageReceived (object sender, Firebase.Messaging.MessageReceivedEventArgs e) {
            if (e.Message.NotificationOpened) {
                    //通知がタップされてアプリに遷移した
                    bool handled = RemoteNotificationHandler.HandleRemoteNotification (e.Message.Data);
            } else {
                    //アプリがフォアグラウンド時に通知を受信した
            }
    }
}

📘

ディープリンク処理について

HandleRemoteNotificationで受け取ったディープリンクに対応する処理はアプリケーション側で実装が必要です。
詳細はUnityマニュアルのディープリンクを有効にするをご参照ください。

なお通知メッセージに含まれるディープリンクを独自に処理したい場合は、KarteRemoteNotificationHandlerクラスのRetrieveURLFromUserInfoメソッドを呼び出すことで、ディープリンクのみを取得し利用することが可能です。

string url = RemoteNotificationHandler.RetrieveURLFromUserInfo (e.Message.Data);

テストメッセージを送信する

テストメッセージの送信方法については、以下のドキュメントをご覧ください。