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

トップ >ドキュメント >プッシュ通知(Unity):基本的な使い方

プッシュ通知(Unity)

ドキュメント内検索

基本的な使い方

概要

このページでは、Unityを使って開発したアプリでプッシュ通知を受信するまでの設定方法と、
ダッシュボードからプッシュ通知を配信する方法について説明していきます。

プッシュ通知の設定

UnityアプリはiOS端末、Android端末向けにビルドされた場合のみ、
それぞれのOS向けのプッシュ通知機能を利用して、通知の配信が可能です。
プッシュ通知を受信する場合、APNsやFCMとの連携を行う必要があるので、
それぞれのドキュメントを参考に、ニフティクラウド mobile backendの
ダッシュボードからプッシュ通知の設定を行ってください。

※ FCMはGCM(Google Cloud Messaging)の新バージョンです。既にGCMにてプロジェクトの作成・GCMの有効化設定を終えている場合は、継続してご利用いただくことが可能です。新規でGCMをご利用いただくことはできませんので、あらかじめご了承ください。

Unityでの設定

Unity側では、以下のような設定を行います。

  • NCMBSettingsの設定
  • NCMBManagerの追加
  • Bundle IDの設定
  • iOS端末へのビルド
  • Android端末へのビルド

なお、ニフティクラウド mobile backendのUnity SDKは
インストールと初期化が済んでいるものとして説明しますので、
未実施の場合はクイックスタートをご覧ください。

NCMBSettingsの設定

NCMBSettingsのインスペクターにて、以下の設定を行ってください。

  • 「Use Push」にチェックを入れる
  • Android端末にビルドする場合、「Android Sender Id」に、FCMでプロジェクト作成時に発行されたSender ID(送信者ID)を設定する
NCMBManagerの追加

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

Bundle IDの設定

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

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

IdentificationのところにあるBundle Identifierを設定してください。

  • iOS端末向けにビルドする場合、Appleのデベロッパーサイトに登録したBundle IDを設定する
  • Android端末向けにビルドする場合、Android Manifestのパッケージ名と同じBundle IDを設定する

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

iOS端末へのビルド

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

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

Xcodeでビルドを実行することで、iOS端末でのデバッグが可能になります。

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.ncmbgcmplugin.アクティビティ名を設定する
    • Prime31プラグインを利用している場合はcom.nifty.cloud.mb.ncmbgcmpluginをcom.prime31に変更する
<activity android:name="com.nifty.cloud.mb.ncmbgcmplugin.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.nifty.cloud.mb.ncmbgcmplugin.NCMBGcmReceiver"
    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ファイルが作成されます。

イベントリスナーの登録

必要に応じて「配信端末登録」、「メッセージ受信」時のイベントリスナーを登録する事ができます。

イベントリスナーを登録するスクリプトを作成したら、以下を実装してください。

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

追加するスクリプトは以下のようになります。

using UnityEngine;
using System.Collections;

/////////////////////////ここから追加コード////////////////////////
//SDKの利用を宣言
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 (!_isInitialized) {
            _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でログ表示を行っている部分をカスタマイズすることで
プッシュ通知を受信した場合の処理などをカスタマイズすることが可能です。

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

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

ダッシュボードからプッシュ通知を配信する

ここからは、ダッシュボードからプッシュ通知を配信する方法を説明します。

プッシュ通知を送信する

ダッシュボード左側メニューのプッシュ通知をクリックし、プッシュ通知の画面を開きます。

新しいプッシュ通知ボタンをクリックすると、プッシュ通知作成画面が表示されます。
このページで新たなプッシュ通知を作成できます。タイトル、メッセージ、JSONデータを記入してくだい。
※iOS宛プッシュ通知の設定は、iOS8未満は合計256バイトまで、iOS8以降は合計2Kバイトまでがサポート対象となります。
新規プッシュ通知作成

配信日時の指定を行います。以下の例では、作成されたプッシュ通知が即時に配信される設定になっています。

プッシュ通知送信日時を指定する場合は、配信日時の欄で日時を選択し、希望する日時を指定してください。

配信期限の指定では電源が切れているなどの事情により通知を受け取れなかった端末への再送信期間を設定できます。デフォルトの設定では再送信できる期間が10日間となっていますが1~28日間、1~24時間の間で、期間を指定できます。

また、配信時間を日時で指定する場合は、日時の指定画面が表示されます。

次に、配信を行うプラットフォームを選択してください。AndroidとiOSの両方にプッシュ通知を送信することも可能です。
Androidを選択した場合は、以下のようにアクション設定と、ダイアログ表示の設定画面が表示されます。
Android独自設定

iOSを選択した場合は、以下のようなiOS端末へのプッシュ通知を行うための設定画面が開きます。
iOS独自設定

最後に「プッシュ通知を作成する」ボタンをクリックすると、プッシュ通知が作成されます。







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

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

ページの先頭へ