ローカル通知とは、Unreal Engine 4 (UE4) アプリケーションの外部で表示されるメッセージのことで、行われた変更または更新についてユーザーに警告を発します。この操作ガイドでは、Android と iOS の両方のデバイスで機能するローカル通知を設定する方法について説明します。
現在の実装では、Android と iOS の両方に対するローカル通知の設定と実行は非常に単純化されています。このシステムは、ローカル通知でのみ機能し、リモート サーバー経由で送信される通知については機能しません。
手順
-
まず、[Games] > [Blank] テンプレートを以下の設定にして新規プロジェクトを作成します。
- Blueprint を有効にする
- Mobile / Tablet を有効にする
- Scalable 3D or 2D を有効にする
- No Starter Content を有効にする
- プロジェクトが開いたら、 メイン ツールバー の [Blueprint (ブループリント)] ボタンをクリックして [Level Blueprint (レベル ブループリント)] を開き、表示されたリストから [Open Level Blueprint (レベル ブループリントを開く)] オプションを選択します。
クリックしてフルサイズで表示。
この操作ガイドでは、わかりやすくするために レベル ブループリントを使用して必要なローカル通知ブループリント ノードを設定して呼び出しています。レベル ブループリントで ローカル通知を設定しても問題ありませんが、自分のプロジェクトに最も適した場所にこのロジックを追加するようにしてください。
- ローカル通知が表示された際にユーザーに次のようなメッセージを出せるように、[Variables (変数)] セクションで次の 3 つの text variables (テキスト変数) を作成します。
クリックしてフルサイズで表示。
変数名 値 Title (タイトル) タイトル:これがタイトルです! Body (ボディ) ボディ:これがボディです! Action (アクション) アクション:アクションをとっています! - ローカル通知を呼び出してユーザーにその通知を表示するには、[Event Graph (イベント グラフ)] に Event Begin Play (プレイ開始イベント) および Register for Remote Notifications (リモート通知の登録) ノードを追加します。
クリックしてフルサイズで表示。
UE4 プロジェクトにこれを追加する際は、プロジェクトが最初にロードされたときに Register for Remote Notifications ノードが正しく呼び出されていることを確認してください。こうすることで、通知を表示しようとするときに Register for Remote Notifications ノードの呼び出しをもう一度行わなくて済みます。
- 通知が発行されたときに、それをユーザーに対して確実に表示できるようにするには、Event Begin Play の 出力 を Register for Remote Notifications の入力に接続する必要があります。これにより、ユーザーが通知を表示する権限をオペレーティング システム (OS) に対して確実に与えることができます。
クリックしてフルサイズで表示。
- OS に通知を表示する権限を与えたので、次はユーザーが通知をクリックしたときにどうするかを設定する必要があります。この種のやり取りを処理するには、Get Launch Notification、Print String、Branch ノードを イベント グラフ に追加します。
クリックしてフルサイズで表示。
- Get Launch Notification ノードの出力を Branch ノードの入力に接続した後、Branch ノードの True の出力を Print String ノードの入力に接続します。
クリックしてフルサイズで表示。
- Notification Launched App を Branch ノードの Condition 入力に接続し、Activation Event を Print String ノードの In String に接続します。
クリックしてフルサイズで表示。
これをプロジェクトに追加する場合は、Print String ノードを省略できます。このノードは、正しい Activation イベントが使用されているかどうかの確認を行うために追加されます。
-
通知が何を表示するのか、および通知が表示されるまでの待機時間を設定します。これを設定するには、最初に以下のブループリント ノードをイベント グラフに追加する必要があります。
- Schedule Local Notifications from Now
- Delay
- Title, Body, and Action Text Variables
クリックしてフルサイズで表示。
- 必要なノードをイベント グラフに追加し、Delay ノードの Completed 出力を Schedule Local Notifications from Now の入力に接続した後、各 Text (テキスト) 変数を Schedule Local Notifications from Now ノードのそれぞれの入力に接続します。完成すると、イベント グラフは下の画像と一致するはずです。
クリックしてフルサイズで表示。
- Delay ノードの [Duration (期間)] を 5 秒に設定します。これは、ローカル通知が呼び出されて表示される前に、アプリを閉じるまでの時間や、バックグラウンドでアプリを配置するための時間が十分にあるかどうかを確認するのに便利です。
クリックしてフルサイズで表示。
Delay ノードは、通知が消える前に、アプリを閉じるまでの時間や、アプリをバックグラウンドに送るまでの時間が十分にあるかどうかを確認する場合のみ追加されます。これをプロジェクトに追加する際は、Delay ノードを使用する必要はありません。
- Schedule Local Notifications from Now ノードの Seconds from Now 入力を 30 秒に設定します。このコードが実行されてから 30 秒後に通知が表示されるようになります。
クリックしてフルサイズで表示。
- Schedule Local Notifications from Now の Activation Event を 42 に設定します。
クリックしてフルサイズで表示。
Activation Event 入力を使用すると、特定の通知を呼び出すために使用できる文字列の値を関連付けることができます。これにより、特定の条件が満たされたときに表示可能な様々な通知を設定して使用できます。
- ローカル通知が機能するために必要なすべてのノードがイベント グラフに追加されました。最後に、Branch ノードの False 出力を Delay ノードの入力へ接続する必要があります。完成すると、イベント グラフは次の図のようになります。
クリックしてフルサイズで表示。
- [Compile (コンパイル)] ボタンを押してレベル ブループリントをコンパイルし、[Save (保存)] ボタンを押してレベルに保存します。
- 最後に、メイン ツールバー の [Launch (起動)] アイコンの横にある [Advanced Options (詳細オプション)] ドロップダウンをクリックして、これをテストしたいデバイスを選択します。
iOS プロジェクトのローカル通知は、現在ソースビルドを使用した場合のみ利用できます。
-
まず Unreal Engine のソースコード ビルドをダウンロードおよびコンパイルします。GitHub Source からソースコードをダウンロードする方法については、UE4 On GitHub および Downloading Unreal Engine Source Code 操作ガイドを参照してください。
クリックしてフルサイズで表示。
-
エディタをコンパイルしたら、エディタを開いて、 [Games] > [Blank] テンプレートを以下の設定にして新規プロジェクトを作成します。
- C++ を有効にする
- Mobile / Tablet を有効にする
- Scalable 3D or 2D を有効にする
- No Starter Content を有効にする
- プロジェクトが開いたら、[Edit (編集)] から [Project Settings (プロジェクト設定)] を選択します。
- [Project Settings (プロジェクト設定)] メニューの [All Settings (すべての設定)] をクリックし、検索ボックスに「Enable Remote Notifications Support (リモート通知のサポートを有効にする)」と入力します。
クリックしてフルサイズで表示。
[Enable Remote Notifications Support] は、C++ ベースのプロジェクトを使用している場合にのみ使用できます。ブループリント ベースのプロジェクトを使用している場合、このオプションはグレー表示されます。
- プロジェクトが開いたら、 メイン ツールバー の [Blueprint (ブループリント)] ボタンをクリックして [Level Blueprint (レベル ブループリント)] を開き、表示されたリストから [Open Level Blueprint (レベル ブループリントを開く)] オプションを選択します。
クリックしてフルサイズで表示。
この操作ガイドでは、わかりやすくするために レベル ブループリントを使用して必要なローカル通知ブループリント ノードを設定して呼び出しています。レベル ブループリントで ローカル通知を設定しても問題ありませんが、自分のプロジェクトに最も適した場所にこのロジックを追加するようにしてください。
- ローカル通知が表示された際にユーザーに次のようなメッセージを出せるように、[Variables (変数)] セクションで次の 3 つの text variables (テキスト変数) を作成します。
クリックしてフルサイズで表示。
変数名 値 Title (タイトル) タイトル:これがタイトルです! Body (ボディ) ボディ:これがボディです! Action (アクション) アクション:アクションをとっています! - ローカル通知を呼び出してユーザーにその通知を表示するには、[Event Graph (イベント グラフ)] に Event Begin Play (プレイ開始イベント) および Register for Remote Notifications (リモート通知の登録) ノードを追加します。
クリックしてフルサイズで表示。
UE4 プロジェクトにこれを追加する際は、プロジェクトが最初にロードされたときに Register for Remote Notifications ノードが正しく呼び出されていることを確認してください。こうすることで、通知を表示しようとするときに Register for Remote Notifications ノードの呼び出しをもう一度行わなくて済みます。
- 通知が発行されたときに、それをユーザーに対して確実に表示できるようにするには、Event Begin Play の 出力 を Register for Remote Notifications の入力に接続する必要があります。これにより、ユーザーが通知を表示する権限をオペレーティング システム (OS) に対して確実に与えることができます。
クリックしてフルサイズで表示。
- OS に通知を表示する権限を与えたので、次はユーザーが通知をクリックしたときにどうするかを設定する必要があります。この種のやり取りを処理するには、 Get Launch Notification (起動通知の取得) 、 Print String (文字列の出力) 、 Branch (分岐) ノードを [Event Graph (イベント グラフ)] に追加します。
クリックしてフルサイズで表示。
- Get Launch Notification ノードの出力を Branch ノードの入力に接続した後、Branch ノードの [True] の出力を Print String ノードの入力に接続します。
クリックしてフルサイズで表示。
- Notification Launched App (アプリ起動通知) を Branch ノードの [Condition (条件)] 入力に接続し、Activation Event を Print String ノードの [In String] に接続します。
クリックしてフルサイズで表示。
これをプロジェクトに追加する場合は、Print String ノードを省略できます。このノードは、正しい Activation イベントが使用されているかどうかの確認を行うために追加されます。
-
通知が何を表示するのか、および通知が表示されるまでの待機時間を設定します。これを設定するには、最初に以下のブループリント ノードをイベント グラフに追加する必要があります。
- Schedule Local Notifications from Now
- Delay
- Title, Body, and Action Text Variables
クリックしてフルサイズで表示。
- 必要なノードをイベント グラフに追加し、Delay ノードの Completed 出力を Schedule Local Notifications from Now の入力に接続した後、各 Text (テキスト) 変数を Schedule Local Notifications from Now ノードのそれぞれの入力に接続します。完成すると、イベント グラフは下の画像と一致するはずです。
クリックしてフルサイズで表示。
- Delay ノードの [Duration (期間)] を 5 秒に設定します。これは、ローカル通知が呼び出されて表示される前に、アプリを閉じるまでの時間や、バックグラウンドでアプリを配置するための時間が十分にあるかどうかを確認するのに便利です。
クリックしてフルサイズで表示。
Delay ノードは、通知が消える前に、アプリを閉じるまでの時間や、アプリをバックグラウンドに送るまでの時間が十分にあるかどうかを確認する場合のみ追加されます。これをプロジェクトに追加する際は、Delay ノードを使用する必要はありません。
- Schedule Local Notifications from Now ノードの Seconds from Now 入力を 30 秒に設定します。このコードが実行されてから 30 秒後に通知が表示されるようになります。
クリックしてフルサイズで表示。
- Schedule Local Notifications from Now の Activation Event を 42 に設定します。
クリックしてフルサイズで表示。
Activation Event 入力を使用すると、特定の通知を呼び出すために使用できる文字列の値を関連付けることができます。これにより、特定の条件が満たされたときに表示可能な様々な通知を設定して使用できます。
- ローカル通知が機能するために必要なすべてのノードがイベント グラフに追加されました。最後に、Branch ノードの False 出力を Delay ノードの入力へ接続する必要があります。完成すると、イベント グラフは次の図のようになります。
クリックしてフルサイズで表示。
- [Compile (コンパイル)] ボタンを押してレベル ブループリントをコンパイルし、[Save (保存)] ボタンを押してレベルに保存します。
- 最後に、メイン ツールバー の [Launch (起動)] アイコンの横にある [Advanced Options (詳細オプション)] ドロップダウンをクリックして、これをテストしたいデバイスを選択します。
結果
プロジェクトがモバイル デバイスにデプロイされると、以下のビデオのようにアプリが開かれてから 5 秒後に通知がポップアップ表示されます。