イベント駆動型プッシュ¶
利用者の操作などアプリ内で発生したイベントをきっかけとして利用者にプッシュ通知を配信することができます。
利用できるプラン
イベント駆動型プッシュは有料プランでご利用可能です。
イベント駆動型プッシュできること¶
- イベント発生から指定の時間経過後(30日以内)にプッシュ通知を配信
- 変数を使ってメッセージのパーソナライズ
変数の利用
管理サイトでメッセージを作成する際に変数を適用したい箇所に"${}"を使います。
例: 「${name}さまへお得な情報をお届け!!」
アプリから、変数名と値の組み合わせを指定すると変換されてメッセージが配信されます。
例:アプリから「変数名:name 値:鈴木一郎」を指定して配信をリクエスト
「配信されるメッセージ: 鈴木一郎さまへお得な情報をお届け!!」
配信までの流れ¶
(管理サイトで行うこと)
1. 任意のイベントを作成
2. 配信するメッセージを作成して、作成したイベントを紐づける
3. 作成したメッセージを承認する
(アプリ側で行うこと)
1. SDKを使用して配信をリクエスト(後述)
メッセージ配信のリクエスト¶
// RichflyerSdkFlutterクラス
Future<void> postMessage(
List<String> events,
Map<String,String>? variables,
int? standbyTime,
Function(RFResult result, List<String> evnetPostIds) callback)
パラメータ | 内容 |
---|---|
events | 管理サイトで作成したメッセージに紐づいたイベントの配列。 |
variables | 変数。変数名とその値のkey/valueオブジェクト。 |
standbyTime | イベント発生からプッシュ通知配信までの待機時間(分)。最大43200分(30日間)まで指定可能。※未指定の場合は管理サイトで設定した値が適用されます。 |
callback | 処理完了時に呼び出されるコールバック。 |
イベント投稿ID
メッセージ配信リクエストが成功すると処理完了ハンドラでイベント投稿ID(eventPostIds)を取得できます。
この値を利用して、メッセージ配信リクエストをキャンセルすることができます。
イベントに紐づいたメッセージが複数ある場合は、その数の分だけ応答されます。
待機時間を0にした場合は、同IDは応答されません。
実装例¶
Dart
final _richflyerSdkFlutterPlugin = RichflyerSdkFlutter();
List<String> events = ["reserved"];
var variables = { "name": "鈴木一郎", "shop": "◯△商店" };
// メッセージ配信をリクエスト
_richflyerSdkFlutterPlugin.postMessage(events, variables, 10, (result, evnetPostIds) {
String message = "";
if (result.result) {
message += 'メッセージ配信リクストが完了しました。 code:${result.errorCode} eventPostId:${evnetPostIds}';
} else {
message += 'メッセージ配信リクエストに失敗しました。 code:${result.errorCode} message:${result.message}';
}
debugPrint(message);
});
配信のキャンセル¶
配信リクエストを行ったメッセージが待機時間内であればキャンセルを行うことができます。
※待機時間なし、待機時間経過後のメッセージはキャンセルできません。
// RichflyerSdkFlutterクラス
Future<void> cancelPosting(String eventPostId, Function(RFResult result) callback)
パラメータ | 内容 |
---|---|
eventPostId | イベント投稿ID。メッセージ配信リクエストの応答で取得できる。 |
callback | 処理完了時に呼び出されるハンドラ。 |
実装例¶
Dart
final _richflyerSdkFlutterPlugin = RichflyerSdkFlutter();
_richflyerSdkFlutterPlugin.cancelPosting(eventPostId, (result) {
String message = "";
if (result.result) {
message = "メッセージの配信をキャンセルしました。";
} else {
message = "メッセージの配信キャンセルに失敗しました。 code:${result.errorCode} message:${result.message}";
}
debugPrint(message);
});