Skip to main content
In-App キャンペーンは、ユーザーのセグメントに送信して、カスタムメッセージの表示、新しいオファーの提供、特定のページへの誘導などを行うことができるカスタムビューです。In-App キャンペーンは MoEngage アカウントから作成できます。
SDK バージョンこのドキュメントは、MoEngage-iOS-SDK バージョン 8.2.0 以降を使用している場合にのみ従ってください。バージョン 5.2.7 以前を使用している場合は、こちらのリンクのドキュメントに従ってください。
Inapp Native1

SDK のインストール

Swift Package Manager を使用したインストール

MoEngageInApp は、SDK バージョン 3.2.0 から SPM でサポートされています。統合するには、SDK バージョン 9.23.0 以上の場合は GitHub の URL https://github.com/moengage/apple-sdk.git を、それ以外の SDK バージョンの場合は https://github.com/moengage/MoEngage-iOS-SDK.git を使用し、ブランチを master または必要なバージョンに設定します。

CocoaPods を使用したインストール

情報CocoaPods は非推奨になりつつあります。MoEngage では、すべての新規統合に Swift Package Manager を使用することを推奨しています。CocoaPods の詳細については、CocoaPods 統合ガイドを参照してください。
以下のように Podfile に依存関係を追加して、MoEngageInApp フレームワークを統合します。
次に、pod install を実行してフレームワークをインストールします。

手動統合

手動統合:MoEngageInApp SDK をプロジェクトに手動で統合するには、こちらのドキュメントに従ってください。

アプリ内メッセージを表示する方法

MoEngage は、メタ API 呼び出しを通じて対象となる In-App キャンペーンのリストを更新します。アクティブなセッション中は、アプリがバックグラウンドからフォアグラウンドに戻ったとき(最大で 15 分に 1 回)にリストが更新されます。また、新しいセッションが開始されたとき、またはアプリが強制終了されて再起動されたときには、即座に更新されます。
アプリ内メッセージを使用するには、MoEngageInApps をインポートし、In-App を表示したいビューコントローラーに以下のコードを追加します。
iOS SDK 11.0.0 以降、showInApp() は Void ではなく型付きのタスクオブジェクト(MoEngageShowInAppTask)を返します。上記のような直接の呼び出しは、変更なしでコンパイルできます。.onSuccess { ... } / .onFailure { ... } をチェーンするか、非同期の result() メソッドを呼び出すことで、呼び出しごとの成功または失敗を確認できます。

Non Intrusive Nudges

Inappnativ2 バージョン 5.0.0 以降、MoEngage InApp SDK は Non-Intrusive Nudges の表示をサポートしています。 SDK は、画面の上部、下部、左下、右下の 4 つの位置に Nudge を表示できます。SDK に Nudge を表示させたいビューコントローラーで showNudge(atPosition:) を呼び出します。
iOS SDK 11.0.0 以降、MoEngageNudgePosition は Swift の enum(.top、.bottom、.bottomLeft、.bottomRight、.any、.none)に移行されています。Objective-C の呼び出し元は、上記に示す名前が変更された MoEngageNudgePosition* 定数を使用します。

InApp コールバック

注意すべてのコールバックを受け取るには、クラスが MoEngageInAppNativeDelegate で構成されていることを確認してください。
InApp が表示、閉じられた、またはクリックされたときにコールバックを監視するには、MoEngageInAppNativeDelegate を実装します。以下のメソッドを使用してデリゲートを設定します。
デリゲートを設定すると、次のコールバックを受け取ります。

コンテキストベースの InApp

SDK バージョン 6.0.0 で、コンテキストベースの InApp が導入されました。InApp キャンペーンを作成する際に、キャンペーンにコンテキストまたはタグを設定できます。SDK はアプリに設定されている現在のコンテキストを確認し、現在設定されているコンテキストがキャンペーンのコンテキストと一致する場合にのみ InApp を表示します。

現在のコンテキストの設定:

InApp モジュールの現在のコンテキストを設定するには、以下のように setCurrentInAppContexts(_): を使用します。

コンテキストのリセット:

InApp モジュールの現在のコンテキストをリセットするには、invalidateInAppContexts() メソッドを呼び出します。

ViewController での In-App の無効化

特定の ViewController で InApp メッセージを表示したくない場合は、以下のように blockInApp(forViewController:) メソッドを使用します。

アプリでの In-App の無効化

InApp メッセージを使用しない場合は、disableInApps プロパティを設定します。このプロパティは、最初の呼び出しの前に設定する必要があります。

セルフハンドル型 In-App

セルフハンドル型 In-App は SDK によって表示されません。キャンペーンの作成時に、String のペイロードを指定する必要があります。キャンペーンの配信時に、同じペイロードがアプリケーションに提供されます。トリガー条件が画面の起動である InApp キャンペーンは、getSelfHandledInApp(completionBlock:) を使用して取得できます。
イベントトリガー型キャンペーンでセルフハンドル型 InApp のペイロードを取得するには、selfHandledInAppTriggered(withInfo:forAccountMeta:) デリゲートを設定します。ユーザーがキャンペーンの対象である場合、SDK は自動的にこのデリゲートでペイロードを配信します。
注意上記のメソッドは、テストキャンペーンを通じてセルフハンドル型キャンペーンをテストする場合にも呼び出されます。

複数のセルフハンドル型 In-App

MoEngage-iOS-SDK 9.19.0 バージョン以降、MoEngage InApp SDK は複数のセルフハンドル型 InApp の表示をサポートしています。ユーザーが設定した複数のコンテキストに対して複数のセルフハンドル型 InApp を取得するには、SDK の getSelfHandledInApps(completionBlock:) を使用します。

キャンペーンの選択ロジック

  • デフォルトの上限:デフォルトでは、取得されるキャンペーンは 5 件のみです。
  • 優先度に基づく選択:キャンペーンは、優先度と最終更新時刻に基づいて配信されます。まず優先度を確認し、優先度が競合する場合は最終更新時刻を確認します。
  • 除外基準:キャンペーンは、フリークエンシーキャップ、対象条件、キャンペーンのステータス、優先度の上限などの特定のルールに基づいてのみ除外されます。
シナリオの例: 優先度、公開時刻、コンテキストが異なる 6 つのキャンペーンがある場合:
  • コンテキスト 1:キャンペーン 1(P0、T2)、キャンペーン 2(P1、T3)、キャンペーン 3(P2、T6)
  • コンテキスト 2:キャンペーン 4(P0、T1)、キャンペーン 5(P1、T5)
  • コンテキスト 3:キャンペーン 6(P0、T4)
次のキャンペーンがこの順序で配信されます:[キャンペーン 4、キャンペーン 1、キャンペーン 6、キャンペーン 2、キャンペーン 5] 選択アルゴリズム:
  1. ユーザーの対象条件とターゲティング条件でキャンペーンをフィルタリングする
  2. キャンペーンの優先度(P0、P1、P2 など)で並べ替える
  3. 優先度が同じキャンペーンについては、最新の更新タイムスタンプ順に並べ替える
  4. 上位 5 件のキャンペーンを返す

複数のセルフハンドル型キャンペーンを整理するためのベストプラクティス

1 つのページで複数のコンテキストにわたって最適なパフォーマンスを得るには、次のようにキャンペーンを整理します。
  • コンテキスト 1(ホームページ):キャンペーン A(P0)、キャンペーン B(P1)
  • コンテキスト 2(商品):キャンペーン C(P0)、キャンペーン D(P1)
  • コンテキスト 3(チェックアウト):キャンペーン E(P0)
これにより、5 件のキャンペーン上限に達することなく、各コンテキストに関連するキャンペーンが確保されます。 また、このメソッドはコンテキストベースかどうかに関係なくすべてのセルフハンドル型キャンペーンを取得するため、取得したいキャンペーンの優先度を適切に設定してください。

複数のセルフハンドル型 InApp のトラッキング

getSelfHandledInApps(completionBlock:) メソッドは MoEngageInAppSelfHandledData を返します。これには MoEngageInAppSelfHandledCampaign オブジェクトのリストが含まれています。各 MoEngageInAppSelfHandledCampaign オブジェクトの統計情報は、以下の API を使用して個別にトラッキングする必要があります。

コンテキストに応じた複数のセルフハンドル型 InApp の取得

コンテキストに応じた複数のセルフハンドル型 InApp を取得するには、getSelfHandledInApps(completionBlock:) を呼び出す前に、setCurrentInAppContexts() を使用して InApp のコンテキストを設定します。これにより、コンテキストに応じた InApp とコンテキストに依存しない InApp のリストが(キャンペーン作成時に設定されたキャンペーンの優先度の順で)返されます。

InApp の表示とクリックのトラッキング:

セルフハンドル型 In-App の表示をトラッキングするには、selfHandledShown(campaignInfo:) を使用し、パラメーターとしてキャンペーンのインスタンスを渡します。
統計用に InApp のクリック情報をトラッキングするには、次のメソッドを呼び出します。

アプリ内メッセージのルール

In-App を表示する際には、次のルールを使用します。 InApp が機能するための前提条件:
  • 現在のセッションで InApp のバックエンド同期が成功したかどうか。
  • 現在の画面で InApp が無効になっているかどうかを確認します。
アクティブなキャンペーンのリスト(優先度と最終更新時刻に従って並べ替え済み)の各キャンペーンについて、以下が確認されます。
  • グローバル遅延が経過したかどうかを確認します。キャンペーンに「グローバル遅延を無視」が設定されている場合はスキップします。
  • キャンペーンの有効期限が切れていないかを確認します
  • 表示ルール
  • 「特定の画面でのみ表示」を確認します
  • 現在のコンテキストと照合します
  • 配信コントロール
  • 永続性チェック(InApp のプライマリアクションが完了していても、InApp を引き続き表示したい場合)
  • キャンペーンが最大表示回数に達していないかを確認します。
  • キャンペーンレベルの遅延が経過したかどうかを確認します。
  • ネイティブ InApp の場合はデバイスの向きが縦向きであること、HTML InApp の場合は(キャンペーン作成時に選択した)必要な向きであることを確認します。
すべてのルールを満たす最初のキャンペーンがユーザーに表示されます。