GS2-InGamePushNotification

ゲーム内プッシュ通知の管理を GS2 SDK for Unity から利用する手順を解説します。

ゲームを作成する

GS2マネージメントコンソールの GS2-InGamePushNotification から新しくゲームを作成します。

ゲームは通知先のユーザを管理する単位です。

../../../_images/スクリーンショット_2017-10-19_23.50.57.png

『ゲームの新規作成』をクリックします。

../../../_images/スクリーンショット_2017-10-19_23.51.41.png

ゲームの設定をします。

『通知対象がオフライン時の振る舞い』には 『HTTP/HTTPSによる転送』と『Firebaseを使用したモバイルプッシュ通知へ転送』が選択でき

『HTTP/HTTPSによる転送』を指定した場合には転送先のURLを、

『Firebaseを使用したモバイルプッシュ通知へ転送』を指定した場合にはサーバキーの入力が必要となります。

『Firebaseを使用したモバイルプッシュ通知へ転送』の詳細については モバイルプッシュ通知転送の設定 ページを確認してください。

プッシュ通知処理を実装

ここからは Unity を使用した実装になります。

まずはログイン処理を実装する必要があります。ログインして Gs2.GameSession を取得するまでの手順は GS2-Auth をご参照ください。

ここからはログインが完了している前提で説明を進めます。

クライアント証明書の取得

通知サーバに接続するためにはクライアント証明書を使用する必要があります。

クライアント証明書の発行には以下の関数を使用します。

yield return gs2.InGamePushNotification.CreateCertificate(
    r =>
    {
        if (r.Error != null)
        {
            // 例外が発生
        }
        else
        {
            Certificate certificate = r.Result;
        }
    },
    Session,  // GS2セッション
    GameName // GS2-InGamePushNotification ゲーム名
    );

取得できたクライアント証明書データは Certificate#ToJson() でテキストデータに変換できます。

今後通知サーバに接続するために使用しますので、ローカルストレージに保存してください。

Certificate#NewFromJson() でテキストデータから復元することができますので、次回以降はそちらを使用するようにしてください。

クライアント証明書の削除

クライアント証明書は1ユーザIDに対して1つしか発行できません。

クライアント証明を何らかの理由で失ってしまった場合は削除する必要があります。

クライアント証明書の削除は以下の関数を使用します。

yield return gs2.InGamePushNotification.DeleteCertificate(
    r =>
    {
        if (r.Error != null)
        {
            // 例外が発生
        }
    },
    Session,  // GS2セッション
    GameName // GS2-InGamePushNotification ゲーム名
    );

通知セッションの作成

通知セッションを作成し、通知サーバに接続します。

通知セッションを作成するには以下の関数を使用します。

InGamePushNotificationSession session = null;
yield return gs2.InGamePushNotification.CreateSession(
    r =>
    {
        if (r.Error != null)
        {
            // 例外が発生
        }
        session = r.Result;
    },
    Session,  // GS2セッション
    GameName, // GS2-InGamePushNotification ゲーム名
    certificate  // クライアント証明書
    );

session.OnConnect += () =>
{
    // 通知サーバに接続に成功した場合に呼び出されます。
};
session.OnReceive += (subject, body) =>
{
    // 通知を受信したときに呼び出されます。
};
session.OnClose += () =>
{
    // 何らかの理由により通知サーバから切断された場合に呼び出されます。
};

// 通知サーバに接続します。
// 第一引数には通知サーバとの接続を維持するためのコルーチンを作成するために使用するUnityオブジェクトを指定します。
yield return session.Connect(UnityObject);

これで notificationSession に通知セッションが用意されます。

notificationSession には以下のイベントハンドラが設定されています。

OnConnect()

通知サーバとのセッションが確立できたときに呼び出されます。

このコールバックが戻るまでは通知を受け取ることが出来ません。

OnReceive(string subject, string body)

通知を受け取ったときに呼び出されます。

OnClose()

何らかの理由でセッションが切断されたときに呼び出されます。

再接続するなど、必要な処理を実装してください。

通知の受信

セッションの作成まで実装が出来たら、マネージメントコンソールから通知を出します。(サーバサイドSDKから出すことも出来ます)

../../../_images/スクリーンショット_2017-10-20_0.06.25.png

『ユーザID』 に通知を出す対象のユーザIDを『サブジェクト』『通知本文』 には OnReceive() の subject, body に渡る値を設定します。

『通知を送信する』をクリックして、Unity 側のクライアントで OnReceive が呼び出されていれば成功です。