Skip to content


アプリ内メッセージ配信

トリガーの種類

アプリ内メッセージ製品では、Any PurchaseSpecific PurchaseSession StartCustom EventPush Click など、いくつかの異なるイベントタイプの結果としてアプリ内メッセージの表示をトリガーできます。さらに、Specific PurchaseCustom Event のトリガーには、堅牢なプロパティフィルターが含まれています。

配信セマンティクス

ユーザーが受信対象となるすべてのアプリ内メッセージは、セッション開始時にユーザーのデバイスに配信されます。1つのイベントによって2つのアプリ内メッセージがトリガーされた場合、優先度の高いアプリ内メッセージが表示されます。SDKのセッション開始セマンティクスの詳細については、セッションライフサイクルをお読みください。配信時に、SDKはアセットをプリフェッチして、トリガー時にすぐに利用できるようにし、表示の遅延を最小限に抑えます。

トリガーイベントに複数の対象となるアプリ内メッセージが関連付けられている場合、最も優先度の高いアプリ内メッセージのみが配信されます。

配信時にすぐ表示されるアプリ内メッセージ(セッション開始、プッシュクリック)では、アセットがプリフェッチされていないため、多少の遅延が発生する場合があります。

トリガー間の最小時間間隔

デフォルトでは、質の高いユーザーエクスペリエンスを促進するために、アプリ内メッセージのレート制限は30秒に1回に設定されています。

この値は、startWithApiKey:inApplication:withLaunchOptions:withAppboyOptions: に渡される appboyOptions パラメーター内の ABKMinimumTriggerTimeIntervalKey を使用してオーバーライドできます。ABKMinimumTriggerTimeIntervalKey を、アプリ内メッセージ間の最小時間(秒単位)として設定したい整数値に設定してください。

1
2
3
4
5
// Sets the minimum trigger time interval to 5 seconds
[Appboy startWithApiKey:@"YOUR-API-KEY"
          inApplication:application
      withLaunchOptions:options
      withAppboyOptions:@{ ABKMinimumTriggerTimeIntervalKey : @(5) }];
1
Appboy.start(withApiKey: "YOUR-API-KEY", in:application, withLaunchOptions:launchOptions, withAppboyOptions:[ABKMinimumTriggerTimeIntervalKey : 5])

一致するトリガーが見つからない場合

Brazeが特定のイベントに対して一致するトリガーを見つけられなかった場合、ABKInAppMessageControllerDelegatenoMatchingTriggerForEvent:name:メソッドが呼び出されます。このシナリオを処理するには、デリゲートプロトコルを採用しているクラスにこのメソッドを実装してください。

ローカルのアプリ内メッセージ配信

アプリ内メッセージスタック

アプリ内メッセージの表示

ユーザーがアプリ内メッセージを受信する資格がある場合、ABKInAppMessageControllerはアプリ内メッセージスタックから最新のアプリ内メッセージを取得します。スタックはメモリ内に保存されたアプリ内メッセージのみを保持し、アプリが中断モードから起動されるたびにクリアされます。

アプリ内メッセージをスタックに追加する

ユーザーは以下の状況でアプリ内メッセージを受信する資格があります。

  • アプリ内メッセージのトリガーイベントが発火した場合
  • セッション開始イベント
  • プッシュ通知からアプリが開かれた場合

トリガーされたアプリ内メッセージは、トリガーイベントが発火したときにスタックに配置されます。複数のアプリ内メッセージがスタックにあり表示待ちの場合、Brazeは最も最近受信したアプリ内メッセージを最初に表示します(後入れ先出し)。

アプリ内メッセージをスタックに戻す

トリガーされたアプリ内メッセージは、以下の状況でスタックに戻すことができます。

  • アプリがバックグラウンドにあるときにアプリ内メッセージがトリガーされた場合。
  • 別のアプリ内メッセージが現在表示されている場合。
  • 非推奨のbeforeInAppMessageDisplayed:withKeyboardIsUp:UIデリゲートメソッドが実装されておらず、キーボードが現在表示されている場合。
  • beforeInAppMessageDisplayed:デリゲートメソッドまたは非推奨のbeforeInAppMessageDisplayed:withKeyboardIsUp:UIデリゲートメソッドABKDisplayInAppMessageLaterを返した場合。

アプリ内メッセージの破棄

トリガーされたアプリ内メッセージは、以下の状況で破棄されます。

  • beforeInAppMessageDisplayed:デリゲートメソッドまたは非推奨のbeforeInAppMessageDisplayed:withKeyboardIsUp:UIデリゲートメソッドABKDiscardInAppMessageを返した場合。
  • アプリ内メッセージのアセット(画像またはZIPファイル)のダウンロードに失敗した場合。
  • アプリ内メッセージが表示準備完了であるが、タイムアウト時間を超過した場合。
  • デバイスの向きがトリガーされたアプリ内メッセージの向きと一致しない場合。
  • アプリ内メッセージがフルアプリ内メッセージであるが、画像がない場合。
  • アプリ内メッセージが画像のみのモーダルアプリ内メッセージであるが、画像がない場合。

アプリ内メッセージ表示を手動でキューに入れる

アプリ内の他のタイミングでアプリ内メッセージを表示したい場合は、以下のメソッドを呼び出してスタックの最上位のアプリ内メッセージを手動で表示できます。

1
[[Appboy sharedInstance].inAppMessageController displayNextInAppMessage];
1
Appboy.sharedInstance()!.inAppMessageController.displayNextInAppMessage()

リアルタイムのアプリ内メッセージ作成と表示

アプリ内メッセージはアプリ内でローカルに作成し、Brazeを通じて表示することもできます。これは、アプリ内でリアルタイムにトリガーしたいメッセージを表示する場合に特に便利です。Brazeはローカルで作成されたアプリ内メッセージの分析をサポートしていません。

1
2
3
4
5
  ABKInAppMessageSlideup *customInAppMessage = [[ABKInAppMessageSlideup alloc] init];
  customInAppMessage.message = @"YOUR_CUSTOM_SLIDEUP_MESSAGE";
  customInAppMessage.duration = 2.5;
  customInAppMessage.extras = @{@"key" : @"value"};
  [[Appboy sharedInstance].inAppMessageController addInAppMessage:customInAppMessage];
1
2
3
4
5
  let customInAppMessage = ABKInAppMessageSlideup.init()
  customInAppMessage.message = "YOUR_CUSTOM_SLIDEUP_MESSAGE"
  customInAppMessage.duration = 2.5
  customInAppMessage.extras = ["key": "value"]
  Appboy.sharedInstance()!.inAppMessageController.add(customInAppMessage)
New Stuff!