OneSignalを使用したプッシュ通知
OneSignalは、デバイスが実行されているプラットフォームなどの情報が要約されたプッシュ通知を可能にするサービスです。OneSignalプラグインを使用すると、OutSystemsアプリケーションはプッシュ通知を送受信できます。
以下の画像は、Androidスマートフォンのプッシュ通知を示しています。
OneSignalを構成する
OneSignalは、使用するモバイルプラットフォームごとに構成する必要があります。構成が完了すると、OneSignalのアプリケーションIDとREST APIキーを取得できます。
OneSignalは、iOS用とAndroid用に構成できます。
OneSignalプラグインをインストールする
最初に、OutSystems ForgeからOneSignalプラグインをインストールします。または、Service Studioの[OutSystems]タブに移動してインストールします。
通知を受信する
アプリで通知を受信するには、OneSignalにデバイスを登録するクライアント側ロジックを実装する必要があります。
最初に、[Manage Dependencies]メニューオプションでモバイルアプリにOneSignalプラグインを追加します。このプラグインには、デバイスを登録するためのクライアント側のアクションが含まれています。
通知に対してイベントを実行するロジックを追加する場合は、以下の手順を実行します。
-
アプリケーションのLayoutブロックにOneSignalブロックを追加します。
-
OneSignalブロックのイベントハンドラにロジックを追加します。
- OnNotificationReceived: アプリが通知を受信したときに実行するクライアントアクション。
- OnNotificationOpened: ユーザーが通知を開いたときに実行するクライアントアクション。
Android用のディープリンクを含む通知を受信する
アプリがAndroidデバイスにデプロイされ、通知内でディープリンクを使用する場合は、モジュールの[Extensibility Configurations
]フィールドに以下のスニペットを追加します。
{
"preferences": {
"android": [
{
"name": "AndroidLaunchMode",
"value": "singleTask"
}
]
}
}
この構成により、モバイルアプリの新しいアクティビティを起動する方法が変わります。アクティビティの起動モードの詳細については、こちらをご覧ください。
この追加手順により、AndroidエンドユーザーがOneSignal通知をクリックしたときに特定の画面にリダイレクトされるようになります。iOSデバイスでは追加の構成は不要です。
ユーザーとともにデバイスを登録する
ユーザーがアプリケーションを使用するときにログインする必要がある場合は、そのユーザーとともにデバイスを登録することができます。
これは、[Login]画面で行うことができます。
ユーザーをデバイスとともに登録するには、RegisterWithUserアクションを使用します。
このアクションは、「DoLogin」アクションの後に次のように配置します。
AppId値を設定するには、OneSignalコンソールのOneSignal App ID値を使用します。
デフォルトでは、登録アクションは非同期で実行されます。OneSignalサービスにデバイスを登録するためのアクションが送信され、登録アクションのレスポンスを待たずにロジックの実行が続行されます。この動作を変更するには、AsyncRegisterパラメータを「false
」に設定します。コード実行がブロックされ、OneSignalサービスにデバイスが登録されるまで処理を待機します。
OneSignal App ID値とREST API Key値は後で必要になるため、保存しておきます。
デフォルトでは、アプリケーションがすでにフォアグラウンドで実行されているときは通知は表示されません。通知を常に表示するには、InFocusDisplayOptionsプロパティを「Entities.InFocusDisplayOption.NOTIFICATION
」に設定します。
ユーザーなしでデバイスを登録する
アプリケーションにログインがない場合、ユーザーなしでデバイスを登録できます。
これは、「On Application Ready」アクションで行うことができます。
デバイスを登録するにはRegisterアクションを使用します。以下の画像のようになります。
デフォルトでは、登録アクションは非同期で実行されます。OneSignalサービスにデバイスを登録するためのアクションが送信され、登録アクションのレスポンスを待たずにロジックの実行が続行されます。この動作を変更するには、AsyncRegisterパラメータを「false
」に設定します。コード実行がブロックされ、OneSignalサービスにデバイスが登録されるまで処理を待機します。
またデフォルトでは、アプリケーションがすでにフォアグラウンドで実行されているときは通知は表示されません。通知を常に表示するには、InFocusDisplayOptionsプロパティを「Entities.InFocusDisplayOption.NOTIFICATION
」に設定します。
通知を送信する
通知を送信するには、サーバー側ロジックを実装する必要があります。[Manage Dependencies…]メニューオプションでOneSignalAPIを追加します。このAPIには、通知を送信するためのサーバー側のアクションが含まれています。
以下の画像のように、通知を送信するサーバー側ロジックを追加します。
OneSignalRestAPIKey値とOneSignalAppId値を設定するには、ここで先ほど保存した値を使用します。
デフォルトでは、Androidの通知はベルのアイコンで表示されます。このアイコンをアプリケーションアイコンに置き換えるには、SmallIconプロパティを「"icon"
」に設定します(MABS 4以下を使用してアプリを生成する場合)。それ以外の場合は、SmallIconプロパティを「"ic_launcher"
」に設定します。
通知メッセージを定義する
送信する通知のテキストを定義するには、Message入力パラメータをContentストラクチャのリストに設定します(ContentストラクチャはOneSignalAPIで定義されています)。このリストには、各通知メッセージとそれぞれの言語/ロケールが含まれます。
以下の例では、通知が送信されるSendReminderサーバーアクションに、Contentデータ型のローカル変数MessageとContent Listデータ型のローカル変数MessageListの2つのローカル変数が定義されています。
英語の簡単なメッセージを含む通知を送信するには、サーバーアクションフローで以下の手順を実行します。
-
****メッセージテキストと英語の言語コード
"en"
を、Contentデータ型のMessageローカル変数に割り当てます。 -
****このローカル変数を、Content Listデータ型のMessageListローカル変数内にある、送信する通知のリストに追加します。
-
MessageList変数をMessage入力パラメータとして指定して通知を送信します。
注意事項
この記事では、プッシュ通知の実装の簡単な例を示しています。OneSignalPluginおよびOneSignalAPIではこのほかにも、プッシュ通知を送信する別の方法を実装するためのクライアント側およびサーバー側の機能を提供しています。たとえば、クライアント側でユーザーが通知を開いたときにアクションを実行するロジックを追加したり、サーバー側で特定のユーザーにのみプッシュ通知を送信するロジックを追加したりすることができます。
OneSignalPluginおよびOneSignalAPIの詳細については、Service Studioで要素の上にマウスを重ねたときに表示されるツールチップをご覧ください。
OneSignalの詳細については、こちらのドキュメントをご覧ください。