サーバー構築不要!スマートフォンアプリ向けの新クラウド

トップ >ドキュメント >SDKガイド(Unity):プッシュ通知

SDKガイド(Unity)

ドキュメント内検索

プッシュ通知

このドキュメントは更新されていません。
こちらから最新版をご覧ください。

プロパティ

NCMBPushクラスの主要な規定プロパティは以下の通りです。

Message: プッシュ通知メッセージ
Title: プッシュ通知タイトル(Androidのみ)
DeliveryTime: 配信日時の設定
PushToIOS: iOS端末へのプッシュ通知設定
PushToAndroid: Android端末へのプッシュ通知設定
※DeliveryDateとDelayByMillisecondsはREST APIに存在しないため廃止されました

プッシュ通知を受信するためのプラグイン設定

プッシュ通知の受信を実装するにあたり、ダッシュボードでGCM/APNsと連携するための設定が必要です。

ダッシュボードの設定については、ダッシュボードの使い方:プッシュ通知をご覧ください。
APNsと連携するための証明書の取得方法については、APNsとの連携に必要な準備をご覧ください。
GCMと連携するためのAPIキーの取得方法については、GCMとの連携に必要な準備をご覧ください。

プロジェクト設定
  • Unity SDK(v2.0.0以上)のダウンロードが完了していること
  • クイックスタートを実施してNCMBSettingsを設定する
    • アプリケーションキー、クライアントキーの設定を行う
    • NCMBSettingsのインスペクターにて、Use Pushにチェックを入れる
    • Android 向けにプッシュ通知を行う場合は、Android Sender Idを入力する
NCMBManagerを追加

シーンに空のGame Objectを作成し、「NCMBManager」という名前に変更します。
Assets/NCMBフォルダにあるNCMBManager.csをNCMBManagerにアタッチします。

Bundle Identifierを設定する

メニューバーのFileからBuild Settingsを開き、下側にあるPlayer Settingsをクリックすると
Unityのインスペクターに、各プラットフォームに対するアプリの設定画面が表示されます。

インスペクターでプラットフォームを切り替えられるので、
iOSまたはAndroidのタブを開き、Other Settingsの項目を選択してください。

IdentificationのところにあるBundle Identifierを必ず確認してください。

  • iOS向けにビルドする場合、このBundle IdentifierをAppleのデベロッパーサイトに登録しないとプッシュ通知の設定で必要な正しいAPNs証明書が作成できません。
  • Android向けにビルドする場合、このBundle IdentifierとAndroid Manifestのパッケージ名が一致していないと、プッシュ通知の受信が行われません。

Build SettingsとBundle Identifierを設定するインスペクターは以下の画像のようになります。
bundleIdentifier設定

Android端末のビルドについて

Android端末でビルドを行うには、Unityで以下のビルド設定を行います。
その後、Android端末向けにビルドを実行する事でapkファイルが生成されます。

- ビルド設定

Android端末にプッシュ通知を行う場合は、Android Manifestの設定が必要になります。
Android Manifestでは、以下の点に注意して設定する必要があります。

  • パッケージ名が正しく設定されているか(Bundle Identifierと一致しているか)
<!-- Manifest.xmlの冒頭部分のpackage=を確認 -->
<?xml version="1.0" encoding="utf-8"?>
<manifest
    xmlns:android="http://schemas.android.com/apk/res/android"
    package="パッケージ名
(略)

  • SDKが用意しているアクティビティの名前に含まれるパッケージ名について
    • 通常はcom.nifty.cloud.mb.アクティビティ名を設定する
    • Prime31プラグインを利用している場合はcom.nifty.cloud.mbをcom.prime31に変更する
<activity android:name="com.nifty.cloud.mb.UnityPlayerProxyActivity"
        android:label="@string/app_name"
        android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

  • レシーバーのカテゴリ名がアプリケーションのパッケージ名と同じか
    • レシーバータグの中にあるcategoryタグの名前を確認する
<receiver
    android:name="com.google.android.gms.gcm.GcmReceiver"
    android:exported="true"
    android:permission="com.google.android.c2dm.permission.SEND" >
    <intent-filter>
        <action android:name="com.google.android.c2dm.intent.RECEIVE" />
        <!-- Put your package name here. -->
        <category android:name="パッケージ名" />
        <action android:name="com.google.android.c2dm.intent.REGISTRATION" />
    </intent-filter>
</receiver>

  • パーミッションの設定部分でほかのアプリケーションによるC2Dの登録を防ぐ
    • パッケージ名.permission.C2D_MESSAGEという書き方になっているか確認する
<permission android:name="パッケージ名.permission.C2D_MESSAGE" android:protectionLevel="signature" />
<uses-permission android:name="パッケージ名.permission.C2D_MESSAGE" />

- ビルド方法

Android端末向けのビルドは、まずメニューバーのFileからBuild Settingsを開きます。
PlatformにAndroidを選択した状態でビルドを実行することで、apkファイルが作成されます。

iOS端末のビルドについて

iOS端末でビルドを行うには、Unityで.xcodeprojファイルを作成します。

- ビルド方法

1.Unityでビルド
iOS端末向けのビルドは、まずメニューバーのFileからBuild Settingsを開きます。
PlatformにiOSを選択した状態でビルドを実行することで、「.xcodeproj」ファイルが生成されXcodeが起動します。

2.Xcodeでビルド
Xcodeでビルドを実行します。

注意事項
  • 配信端末登録APIはUnity SDK内で実装されています。「Use Push」にチェック入っているかつバックグランドでアプリが起動していない状態で、アプリを起動した場合に実行されます。
  • WindowsでMonoDevelopを使用しビルドする際、「.NET 4.0」以上を選択する必要があります。設定方法はMonoDevelopの[Project] -> [Assembly-CSharp options] -> [Build/General] -> Target Framework で Mono/.NET 4.0を選択します。
  • ダッシュボードからプッシュ通知を登録する場合はダッシュボードの使い方:プッシュ通知をご覧ください。

イベントリスナーの登録

必要に応じて「配信端末登録」、「メッセージ受信」時の後処理を登録する事ができます。

まず、デリゲートを設定するために「PushObject」という名前でC#スクリプトを作成します。
デフォルトで作成されたスクリプトに以下を追加してください。

  • SDKの利用を宣言する
  • イベントリスナーを登録する
  • シーンを跨いでGameObjectを利用する

追加するスクリプトは以下の通りです。

using UnityEngine;
using System.Collections;

/////////////////////////ここから追加コード////////////////////////
using NCMB;
/////////////////////////ここまで追加コード////////////////////////

using System.Collections.Generic;

public class PushObject : MonoBehaviour {

/////////////////////////ここから追加コード////////////////////////
    private static bool _isInitialized = false;

    /// <summary>
    ///イベントリスナーの登録
    /// </summary>
    void OnEnable()
    {
        NCMBManager.onRegistration += OnRegistration;
        NCMBManager.onNotificationReceived += OnNotificationReceived;
    }

    /// <summary>
    ///イベントリスナーの削除
    /// </summary>
    void OnDisable ()
    {
        NCMBManager.onRegistration -= OnRegistration;
        NCMBManager.onNotificationReceived -= OnNotificationReceived;
    }

    /// <summary>
    ///端末登録後のイベント
    /// </summary>
    void OnRegistration (string errorMessage)
    {
        if (errorMessage == null) {
            Debug.Log ("OnRegistrationSucceeded");
        } else {
            Debug.Log ("OnRegistrationFailed:" + errorMessage);
        }
    }

    /// <summary>
    ///メッセージ受信後のイベント
    /// </summary>
    void OnNotificationReceived(NCMBPushPayload payload)
    {
        Debug.Log("OnNotificationReceived");
    }

    /// <summary>
    ///シーンを跨いでGameObjectを利用する
    /// </summary>
    public virtual void Awake ()
    {
        if (!PushObject._isInitialized) {
            PushObject._isInitialized = true;
            DontDestroyOnLoad (this.gameObject);
        } else {
            Destroy (this.gameObject);
        }
    }


/////////////////////////ここまで追加コード////////////////////////

    // Use this for initialization
    void Start () {

    }

    // Update is called once per frame
    void Update () {

    }

}

各メソッド内のDebug.Logでログ表示を行っている部分をカスタマイズすることで
プッシュ通知を受信した場合の処理などをカスタマイズすることが可能です。

作成したPushObjectスクリプトは、空のGameObjectか、ゲームで使用しているいずれかのGameObjectにアタッチして実行されるようにしてください。
メッセージ受信などした時のシーンに、上記アタッチされたGameObjectとNCMBManagerがない場合はリスナーが実行されません。
(PushSampleプロジェクトでは、NCMBPushSampleオブジェクトに上記の処理が書かれたスクリプトをアタッチしています。)

PushObjectスクリプトをアタッチしたGameObjectはシーン遷移先にも生成されますので、既存のGameObjectにアタッチする場合はご注意ください。

ペイロードからデータを取得する

プッシュ通知を受信した時に、ペイロードからデータを取得する事ができます。

/// <summary>
///メッセージ受信後のイベント
/// </summary>
void OnNotificationReceived (NCMBPushPayload payload)
{
    Debug.Log("OnNotificationReceived");

    Debug.Log("PushId : " + payload.PushId);
    Debug.Log("Massage : " + payload.Message);
    #if UNITY_ANDROID
        Debug.Log("Title : " + payload.Title);
    #endif
}

プッシュ通知をアプリから送信する

Unity SDKからプッシュ通知を送信する場合は、
SendPushメソッドを使います。

以下のサンプルコードではインスタンスを作成したあとで、
メッセージや配信日時を指定しています。
ターゲットを指定していない場合はiOS / Androidの両方にプッシュ通知が送信されます。

NCMBPush push = new NCMBPush ();
push.Message = "test message";
push.SendPush ();

プッシュ通知の設定は、インスタンス作成時にもあらかじめ設定することが可能です。

NCMBPush push = new NCMBPush (){
  Message = "test message",
  PushToAndroid = true,
};
push.SendPush ();

プッシュ通知の設定

iOS端末へのプッシュ通知を行う場合は、バッジの増加フラグやカテゴリーなどが設定可能です。
content-availableとバッジ数増加フラグは、どちらかしか設定できません。
(参考)REST APIリファレンス:プッシュ通知登録

NCMBPush push = new NCMBPush (){
    PushToIOS = true,
    Message = "testSendPush",
    BadgeIncrementFlag = true,
    Category = "INVITE_CATEGORY",
};

push.SendPush ();

Android端末へのプッシュ通知を行う場合は、タイトルやダイアログプッシュ通知の有効フラグなどを設定できます。
UnitySDKのダイアログプッシュ通知は標準的なダイアログを表示するタイプの設定がされています。
背景画像やデザイン変更の設定をする事はできません。

NCMBPush push = new NCMBPush (){
    PushToAndroid = true,
    Message = "testSendPush",
    Title = "testPush",
    Dialog = true,
};

push.SendPush ();

ほかの設定項目はSDKリファレンスをご覧ください。

プッシュ通知のスケジューリング

- プッシュ配信時刻

プッシュ通知の配信時刻を指定することができます。
配信時刻の設定がない場合は即時配信となります。

//配信時刻を設定
DateTime date = DateTime.Parse ("2020/01/01 22:30:00");
NCMBPush push = new NCMBPush (){
    Message = "testSendPush",
    DeliveryTime = date,
};

push.SendPush ();

- プッシュ配信期限

プッシュ通知の配信期限を指定することができます。
配信期限日を指定するか、配信期限時間(日or時間 単位)の設定ができます。
配信期限日と配信期限時間は、どちらかしか設定できません。

//配信期限時間を時間単位で設定
NCMBPush push = new NCMBPush (){
    Message = "testSendPush",
    DeliveryExpirationTime = "3 hour",
};

push.SendPush ();

(参考)REST APIリファレンス:プッシュ通知登録

プッシュ通知の開封通知

プッシュ通知の開封通知を登録しておくことで、
ダッシュボードからプッシュ通知の開封率を閲覧することができます。
ステータスバーからの起動またはアプリケーションがフォアグランドでプッシュ通知を受信した時に開封登録APIを実行します。

この開封通知を有効にするにはNCMBSettingsのInspector内「Use Analytics」にチェックを入れます。
各種キーを入力する

リッチプッシュ通知

リッチプッシュ通知とは、プッシュ通知配信時に指定したWebページを受信後に開くものです。

プッシュ通知のペイロード内にURLが含まれているかを判断し、通常のプッシュ通知か、リッチプッシュ通知のどちらかを表示します。

//RichUrlにWebページを指定してください
NCMBPush push = new NCMBPush (){
    Message = "testSendPush",
    RichUrl = "http://xxxxx",
};

push.SendPush ();

プッシュ通知アイコンを指定する

Androidのみプッシュ通知受信時のアイコンの変更が可能です。
「Assets/Plugins/Android/res/drawable/」に任意の画像を保存します。
その後、AndroidManifestの<Application>タグの後に以下を記載してください。

<meta-data android:name="smallIcon" android:resource="@drawable/ファイル名">

プッシュ通知アイコンカラーを指定する

Androidのみプッシュ通知受信時のアイコンカラーの変更が可能です。
「Assets/Plugins/Android/res/value/colors.xml」に任意のカラー設定を保存します。

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="blue">#4cb6ff</color>
    <color name="orange">#ffa500</color>
</resources>

その後、AndroidManifestの<Application>タグの後に以下を記載してください。

<meta-data android:name="smallIconColor" android:value="@color/カラー名">







お探しの内容が見つからなかった場合はユーザーコミュニティ もご活用ください。(回答保証はいたしかねます)
なお、 Expertプラン以上のお客様はテクニカルサポートにてご質問を承らせて頂きます。

推奨画面サイズ1024×768px以上

ページの先頭へ