戦略的なケースは他の場所で説明しました:ブラスト時代は終わりました。行動トリガー通知は、プラットフォームが報酬を与え、購読者が許容するものです。このガイドはもう半分です — イベントのインストルメンテーションからマーケティングの引き継ぎまで、iOSアプリイベントから実際にプッシュ通知をトリガーする方法です。これは配線を行う開発者向けに書かれており、出荷するコードと保守性を維持する規約が含まれています。
1つの段落でのアーキテクチャ
アプリは、型付けされたプロパティを持つ名前付きイベントを発火させます。PushEngageは、ダッシュボードで設定されたトリガールールに対してそれらのイベントを照合し、キャンペーンは即時、遅延、または終了条件付きのマルチステップシーケンスとして送信されます。労働の分担がポイントです:エンジニアリングは各イベントを一度インストルメント化します。マーケティングは、再ビルドなしで、それらのイベントに対してキャンペーンを作成、編集、および削除します。あなたのインストルメンテーションは、マーケティングチームのためのAPIです。
trackEvent:汎用シグナル
iOS SDK 1.0は、カスタム行動シグナルの主力であるtrackEventを導入しました:
PushEngage.trackEvent(name: "product_viewed",
properties: [
"sku": "WCJ-1042",
"category": "outerwear",
"price": 189.00,
"in_stock": true
],
profileId: currentUserId, // ties the event to an identified subscriber
provider: nil,
eventType: nil) { success, error in
if !success { log(error) }
}
SDKが強制する3つのルール。事前に設計してください:
- プロパティ値は文字列、数値、またはブール値でなければなりません。配列、辞書、日付はクライアント側で拒否されます — 送信する前にフラット化してください。
- イベント名とプロパティキーは空であってはなりません。完了ハンドラは、検証が失敗したときに通知します。デバッグビルドでログに記録してください。
- 完了ハンドラはバックグラウンドキューで到着します。UIに触れる前にメインにディスパッチしてください。
ユーザーが識別された場合は常にprofileIdを渡してください — これにより、キャンペーンはデバイスではなく顧客をデバイス間で追跡できます。
sendTriggerEvent:クラシックなトリガーキャンペーンの配線
ダッシュボードのトリガービルダーで構築されたキャンペーン(カート放棄、閲覧放棄、カスタムジャーニー)の場合、アプリは、マーケターが設定したキャンペーンとイベント名、および通知テンプレートがレンダリングするデータトークンとともにsendTriggerEventを発火させます:
let trigger = TriggerCampaign(campaignName: "cart_abandonment",
eventName: "add_to_cart",
data: [
"productname": "Waxed Canvas Jacket",
"price": "$189",
"cartlink": "myapp://cart"
])
PushEngage.sendTriggerEvent(triggerCampaign: trigger) { success, error in
// background queue — dispatch before UI work
}
dataトークンは通知コピーに流し込まれます — これが、マーケターがコードに触れることなく「あなたのワックスキャンバスジャケットが待っています」がパーソナライズされる方法です。私たちはモバイルアプリのカート放棄プレイブックで完全なカート回復シーケンスを歩きました。この呼び出しはそのエンジンです。
addAlert:価格下落と在庫切れ、組み込み
最も意図の高い2つのコマーストリガーは、カスタムキャンペーンを必要とさえしません — それらはファーストクラスのSDK市民です。ユーザーが製品をウォッチするときは、アラートを登録してください:
let alert = TriggerAlert(type: .priceDrop, // or .inventory
productId: "WCJ-1042",
link: "myapp://product/WCJ-1042",
price: 189.00,
data: ["size": "M"])
PushEngage.addAlert(triggerAlert: alert) { success, error in }
PushEngageは、価格が下落したときや在庫が復活したときに、監視、マッチング、送信を行います。価格下落通知ガイドを読んだことがあるなら、これはそれらのキャンペーンをトリガーするアプリ側の登録です。
スケーラブルなイベント分類法
インストルメンテーションの負債は現実です。半年後、イベントが addToCart、cart_add、または CartUpdated のいずれであるかを誰も覚えていません。初日に規約を決めましょう — snake_case名、object_action順序、単数形のプロパティキー — そしてコアコマースセットをカバーしましょう:
| イベント | 主要プロパティ | 対象となるキャンペーン |
|---|---|---|
product_viewed | sku、カテゴリ、価格 | 閲覧放棄、パーソナライゼーション |
product_saved | sku、価格 | 価格下落、在庫復活、ウィンバックフック |
cart_updated | カート値、アイテム数、トップアイテム | カート放棄 |
purchase_completed | 注文値、アイテム数 | 終了条件、購入後、目標 |
search_performed | クエリ、結果数 | ゼロ結果リカバリ、興味セグメント |
onboarding_step | ステップ、完了 | オンボーディングシリーズの分岐 |
6つのイベントを一度だけ計測すれば、オンボーディングシリーズ、カートリカバリ、ウィンバックフック、そして今年マーケティングチームが要求するあらゆるセグメントを強化できます。
引き継ぐ前にループをテストする
デバッグビルドでPushEngage.enableLogging = trueを設定し、イベントがデバイスから送信されるのを確認します。テストビルドから各イベントを発火させ、ダッシュボードのイベントビューに到着することを確認し、トリガーごとに1つのエンドツーエンドテストキャンペーンを送信します。SDKリポジトリのサンプルアプリには、フローを参考にできる動作中のトリガースクリーンが含まれています。ここで15分間の検証を行えば、後で発生する「なぜキャンペーンが発火しなかったのか」という調査(通常は契約の両側でのイベント名のタイポ)を節約できます。
引き継ぎ:ここからマーケティングが担当するもの
イベントが流れたら、あなたの仕事は終わりです。マーケティングはトリガーのルールを作成し、コピーを書き、遅延と終了条件を設定し、バリアントをA/Bテストし、収益アトリビューションのための目標追跡をアタッチします — すべてダッシュボード上で、チケットなしで行えます。イベント分類法のテーブルをチームのWikiに公開し、両者の契約とします。そして、「プッシュを送信できますか」というチケットの要求キューがゼロになるのを見てください — それが当初の目的でした。キャンペーンが従うべき戦略については、マーケティングチームにアプリプッシュマーケティングガイドを渡してください。