イベントタイプ

イベントタイプライブラリモジュールの機能は、アクティビティが発生したタイミングを検出し、発生した場合は関数を呼び出して、関連付けられたルールを実行することです。何を検出するかは、自由に設定できます。ユーザーが特定のジェスチャーをおこなったとき、ユーザーが高速スクロールしたとき、ユーザーが何かを操作したときなどを検出できます。

メモ

このドキュメントは、ライブラリモジュールと、それらが Platform Launch の拡張機能に統合される仕組みに精通していることを前提としています。このガイドに戻る前に、ライブラリモジュールの形式の概要を参照して、実装に関する基礎知識を確認してください。

他のモジュールタイプと共通の settings パラメーターに加えて、イベントタイプの module.exports は、2 番目のパラメーター trigger を受け取ります。

module.exports = function(settings, trigger) { … };
パラメーター 説明
settings イベントタイプの表示でユーザーが設定した設定を含むオブジェクト。このオブジェクトに何を取り込むかは、完全に制御できます。
trigger ルールを起動するたびにモジュールが呼び出す必要がある関数。settings オブジェクト、trigger 関数、ルールの間には 1 対 1 の関係があります。 つまり、あるルールに対して受け取ったトリガー関数を使用して別のルールを起動することはできません。
メモ

エクスポートされた関数は、イベントタイプを使用するように設定された各ルールのために 1 回呼び出されます。

5 秒経過したときのアクティビティを検出するとします。5 秒経過した後、アクティビティが発生し、ルールが起動します。モジュールは次のようになります。

module.exports = function(settings, trigger) {
  setTimeout(trigger, 5000);
};

Adobe Experience Platform Launch のユーザーがデュレーションを設定できるようにする場合はどうでしょうか?アドビの表示では、ユーザーがデュレーションを入力し、そのデュレーションを settings オブジェクトに保存できます。オブジェクトは次のようになります。

{
  "duration": 25000
}

ユーザー定義のデュレーションを操作するには、モジュールを次のように変更する必要があります。

module.exports = function(settings, trigger) {
  setTimeout(trigger, settings.duration);
};

コンテキストイベントデータを渡す

ルールをトリガーするときに、多くの場合、発生したイベントに関する追加の詳細を指定すると便利です。 ルールを作成するユーザーにとっては、特定の動作を完了するときに、この情報が役立つ場合があります。例えば、マーケターが、ユーザーが画面をスワイプするたびに Analytics ビーコンが送信されるルールを作成するとします。 拡張機能が swipe イベントタイプを提供する場合、マーケターは、イベントタイプを使用してルールを適切にトリガーできます。 次に、スワイプが発生した特定の角度をビーコンに含める場合はどうなるでしょうか?これは、追加情報なしでおこなうのは困難です。

発生したイベントに関する追加情報を提供するには、trigger 関数を呼び出すときにオブジェクトを渡します。 次に例を示します。

trigger({
  swipeAngle: 90 // the value would be the detected angle
});

その後、マーケターは、テキストフィールドに値 %event.swipeAngle% を指定することで、Analytics ビーコンでこの値を使用できます。 また、他のコンテキスト(カスタムコードアクションなど)内からも event.swipeAngle にアクセスできます。マーケターに役立つイベント情報を自由に含めることができます。 この情報は完全にオプションです。

nativeEvent

イベントタイプがネイティブイベントに基づいている場合(例えば、拡張機能で click イベントタイプが指定された場合)、nativeEvent プロパティを次のように設定することをお勧めします。

trigger({
  nativeEvent: nativeEvent // the value would be the underlying native event
});

これは、マーケターがカーソル座標などのネイティブイベントから任意の情報にアクセスしようとする場合に役立ちます。

element

要素と発生したイベントとの間に強い関係がある場合は、element プロパティを要素の DOM ノードに設定することをお勧めします。 例えば、拡張機能で click イベントタイプを指定していて、ID が herobanner の要素を選択した場合にのみルールが起動するよう、マーケターがイベントタイプを設定できるとします。この場合、ユーザーがヒーローバナーを選択した際に、trigger を呼び出し、element をヒーローバナーの DOM ノードに設定することをお勧めします。

trigger({
  element: element // the value would be the DOM node
});

ルールの順序を順守する

Platform Launch では、ユーザーはルールの順序を指定できます。例えば、方向変更のイベントタイプを使用する場合と、ルールの実行順序をカスタマイズする場合の両方のルールを作成できます。 Platform Launch のユーザーが、ルール A の方向変更のイベントに順序値 2 を指定し、ルール B の方向変更のイベントに順序値 1 を指定するとします。この設定は、モバイルデバイス上で方向が変更された場合に、ルール A の前にルール B を起動する必要があること示します(下位の値を持つルールが最初に起動します)。

前述したように、イベントモジュールで書き出された関数は、イベントタイプを使用するように設定された各ルールに対して 1 回だけ呼び出されます。 書き出された関数が呼び出されるたびに、特定のルールに結び付けられた一意の trigger 関数が渡されます。 前述のシナリオでは、エクスポートされた関数は、ルール B に結び付けられた trigger 関数で 1 回呼び出され、次にルール A に結び付けられた trigger 関数で再び呼び出されます。ルール B はルール A よりも低い順序値が与えられたため、ルール B が最初に実行されます。ライブラリモジュールが方向変更を検出したときに、ライブラリモジュールに提供されたのと同じ順序で trigger 関数を呼び出すことが重要です。

次のコード例では、方向変更が検出された場合、トリガー関数は、書き出された関数に指定されたのと同じ順序で呼び出されることに注意してください。

var triggers = [];

window.addEventListener('orientationchange', function() {
  triggers.forEach(function(trigger) {
    trigger();
  });
});

module.exports = function(settings, trigger) {
  triggers.push(trigger);
};

これにより、ユーザー指定の順序が維持されます。

不適切な実装では、次のように、トリガー関数が異なる順序で呼び出されます。

var triggers = [];

window.addEventListener('orientationchange', function() {
  for (var i = triggers.length - 1; i >= 0; i--) {
    triggers[i]();
  }
});

module.exports = function(settings, trigger) {
  triggers.push(trigger);
};

自然なプログラミングの慣行では、通常、適切な順序を維持しますが、その影響を認識し、それに応じて開発することが重要です。

このページ