プッシュ通知の作成と送信
Experience Platformの Mobile SDK とJourney Optimizerを使用して、モバイルアプリ用のプッシュ通知を作成する方法を説明します。
Journey Optimizerでは、ジャーニーを作成し、ターゲットとなるオーディエンスにメッセージを送信できます。 Journey Optimizerでプッシュ通知を送信する前に、適切な設定と統合が行われていることを確認する必要があります。 Journey Optimizerでのプッシュ通知のデータフローについては、 ドキュメントを参照してください。
前提条件
-
SDK がインストールおよび設定された状態で、アプリケーションが正常に構築および実行されました。
-
Adobe Experience Platform用にアプリを設定します。
-
Journey Optimizerへのアクセスと、説明に従った十分な権限 こちら。 また、次のJourney Optimizer機能に対する十分な権限も必要です。
- アプリサーフェスを作成します。
- ジャーニーを作成します。
- メッセージを作成します。
- メッセージプリセットの作成。
-
有料のApple開発者アカウント で、証明書、識別子およびキーを作成するための十分なアクセス権。
-
テスト用の物理的なiOSデバイスまたはシミュレーター。
学習目標
このレッスンでは、次の操作を行います
- アプリ ID をApple Push Notification Service (APN)に登録します。
- Journey Optimizerでアプリサーフェスを作成します。
- プッシュメッセージフィールドを含めるようにスキーマを更新します。
- Journey Optimizer タグ拡張機能をインストールして設定します。
- アプリを更新して、Journey Optimizer タグ拡張機能を登録します。
- Assurance の設定を検証します。
- Assurance からテストメッセージを送信
- Journey Optimizerで独自のプッシュ通知イベント、ジャーニーおよびエクスペリエンスを定義します。
- アプリ内から独自のプッシュ通知を送信します。
セットアップ
アプリ ID を APN に登録
次の手順は、Adobe Experience Cloudに固有のものではなく、APN 設定の手順を示すように設計されています。
秘密鍵の作成
-
Apple開発者ポータルで、「キー」に移動します。
-
キーを作成するには、「+」を選択します。
-
キー名 を入力します。
-
「Apple プッシュ通知サービス (APN)」チェックボックスをオンにします。
-
「続行」を選択します。
-
設定を確認し、「登録」を選択します。
-
.p8
秘密鍵をダウンロードします。 これは、このレッスンの後半のアプリサーフェス設定で使用します。 -
キー ID をメモします。 これは、アプリサーフェスの設定で使用されます。
-
チーム ID をメモします。 これは、アプリサーフェスの設定で使用されます。
その他のドキュメントについては こちらを参照してください。
データ収集でのアプリサーフェスの追加
-
データ収集インターフェイスで、左側のパネルの アプリサーフェス を選択します。
-
設定を作成するには、「アプリサーフェスを作成」を選択します。
-
設定の 名前 を入力します(例:
Luma App Tutorial
)。 -
モバイルアプリケーション設定 から、「Apple iOS」を選択します。
-
アプリ ID (iOS バンドル ID) フィールドにモバイルアプリのバンドル ID を入力します。 例:
com.adobe.luma.tutorial.swiftui
。 -
プッシュ資格情報 をオンにして、資格情報を追加します。
-
.p8
Apple プッシュ通知認証キー ファイルをドラッグ&ドロップします。 -
認証キーの作成時に割り当てられる 10 文字の文字列である キー ID
p8
指定します。 これは、Apple開発者ポータルページの「証明書、識別子、プロファイル ページの「 キー」タブにあります。 秘密鍵の作成も参照してください。 -
チーム ID を指定します。Team ID は値で、メンバーシップ タブまたはApple Developer Portal ページの上部にあります。 秘密鍵の作成も参照してください。
-
「保存」を選択します。
データストリーム設定を更新
モバイルアプリからEdge Networkに送信されるデータが確実にJourney Optimizerに転送されるようにするには、Experience Edgeの設定を更新します。
-
データ収集 UI で「データストリーム」を選択し、データストリームを選択します(例:Luma Mobile App)。
-
「{ その他 編集 を選択します。
-
データストリーム/ /Adobe Experience Platform 画面で、次の操作を行います。
-
まだ選択していない場合は、{ プロファイルデータセット から 0}AJO プッシュプロファイルデータセット を選択します。 このプロファイルデータセットは、
MobileCore.setPushIdentifier
API 呼び出し( プッシュ通知用のデバイストークンの登録を参照)を使用する場合に必要です。この呼び出しにより、プッシュ通知の一意の識別子(プッシュ識別子など)がユーザーのプロファイルの一部として保存されます。 -
Adobe Journey Optimizer が選択されました。 詳しくは、Adobe Experience Platform 設定を参照してください。
-
データストリーム設定を保存するには、「保存」を選択します。
-
Journey Optimizer タグ拡張機能のインストール
アプリがJourney Optimizerと連携するには、タグプロパティを更新する必要があります。
-
タグ/拡張機能/カタログ に移動します。
-
プロパティを開きます(例:Luma Mobile App Tutorial)。
-
カタログ を選択します。
-
Adobe Journey Optimizer 拡張機能を検索します。
-
拡張機能をインストールします。
-
拡張機能をインストール ダイアログで、
-
環境(例:開発 を選択します。
-
イベントデータセット リストから AJO プッシュトラッキングエクスペリエンスイベントデータセット データセットを選択します。
-
ライブラリおよびビルドに保存 を選択します。
-
Assurance で設定を検証
-
シミュレーターまたはデバイスを Assurance に接続するには、「 設定手順」セクションを確認してください。
-
Assurance UI で、「設定」を選択します。
-
の横にある プラス を選択します。
-
「保存」を選択します。
-
左側のナビゲーションから プッシュデバッグ を選択します。
-
「設定を検証」タブを選択します。
-
クライアント リストからお使いのデバイスを選択します。
-
エラーがないことを確認します。
-
「テストプッシュを送信 タブを選択します。
-
(オプション)(タイトル および 本文 のデフォルトの詳細を変更
-
テストプッシュ通知を送信 を選択します。
-
テスト結果 を確認します。
-
テストプッシュ通知がアプリに表示されます。
{width="300"}
署名
Luma アプリへの署名は、プッシュ通知を送信するために必要で、Apple開発者の有料アカウントが必要 です。
アプリの署名を更新するには:
-
Xcode でアプリに移動します。
-
プロジェクト ナビゲータで [Luma] を選択します。
-
Luma ターゲットを選択します。
-
「署名と機能」タブを選択します。
-
自動管理の署名、チーム、および バンドル ID を設定するか、特定のApple開発プロビジョニングの詳細を使用します。
note important IMPORTANT 各バンドル ID は一意である必要があるので、unique バンドル ID を使用し、 com.adobe.luma.tutorial.swiftui
バンドル ID を置き換えてください。 通常は、バンドル ID 文字列(com.organization.brand.uniqueidentifier
など)に逆 DNS 形式を使用します。 たとえば、このチュートリアルの完成バージョンではcom.adobe.luma.tutorial.swiftui
を使用します。{modal="regular"}
アプリへのプッシュ通知機能の追加
-
Xcode で、「TARGETS」リストから「Luma」を選択し、「署名と機能」タブを選択します。次に、「+機能」ボタンを選択し、「プッシュ通知」を選択します。 これにより、アプリがプッシュ通知を受信できるようになります。
-
次に、通知拡張機能をアプリに追加する必要があります。 「General」タブに戻り、「TARGETS」セクションの下部にある + アイコンを選択します。
-
新しいターゲットのテンプレートを選択するよう求められます。 通知サービス拡張機能 を選択してから、「次へ」を選択します。
-
次のウィンドウで、拡張機能の名前として
NotificationExtension
を使用し、「完了」ボタンをクリックします。
以下の画面のように、プッシュ通知拡張機能がアプリに追加されました。
アプリへのJourney Optimizerの実装
前のレッスンで説明したように、モバイルタグ拡張機能をインストールしても、設定のみが提供されます。 次に、Messaging SDK をインストールして登録する必要があります。 これらの手順が明確でない場合は、「SDK のインストール の節を参照しください。
-
Xcode で、AEP メッセージがパッケージの依存関係のパッケージのリストに追加されていることを確認します。 Swift パッケージマネージャーを参照してください。
-
Xcode プロジェクトナビゲーターで Luma/Luma/AppDelegate に移動します。
-
AEPMessaging
が読み込みのリストに含まれていることを確認します。import AEPMessaging
-
Messaging.self
が、登録している拡張機能の配列の一部であることを確認します。code language-swift let extensions = [ AEPIdentity.Identity.self, Lifecycle.self, Signal.self, Edge.self, AEPEdgeIdentity.Identity.self, Consent.self, UserProfile.self, Places.self, Messaging.self, Optimize.self, Assurance.self ]
プッシュ通知用のデバイストークンの登録
-
MobileCore.setPushIdentifier
API をfunc application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data)
関数に追加します。code language-swift // Send push token to Mobile SDK MobileCore.setPushIdentifier(deviceToken)
この関数は、アプリがインストールされているデバイスに固有のデバイストークンを取得します。 次に、設定した設定を使用して、プッシュ通知配信のトークンを設定します。この設定は、Appleのプッシュ通知サービス(APN)に依存しています。
MobileCore.updateConfigurationWith(configDict: ["messaging.useSandbox": true])
は、プッシュ通知が APN サンドボックスまたは実稼動サーバーをプッシュ通知の送信に使用しているかどうかを判断します。 シミュレーターまたはデバイスでアプリをテストする場合は、プッシュ通知を受信できるように、messaging.useSandbox
が true
に設定されていることを確認します。 Appleの Testflight を使用してテストするために実稼動用にアプリをデプロイする場合は、messaging.useSandbox
を false
に設定します。そうしないと、実稼動アプリはプッシュ通知を受信できません。独自のプッシュ通知を作成
独自のプッシュ通知を作成するには、プッシュ通知の送信を処理するジャーニーをトリガーにするイベントをJourney Optimizerで定義する必要があります。
スキーマを更新
スキーマで定義されたイベントのリストの一部としてまだ使用できない新しいイベントタイプを定義しようとしています。 このイベントタイプは、後でプッシュ通知をトリガーするときに使用します。
-
Journey Optimizer UI の左パネルで「スキーマ」をクリックします。
-
タブバーの 参照 を選択します。
-
スキーマ(例:Luma Mobile App Event Schema)を選択して開きます。
-
スキーマエディターで、次の手順を実行します。
-
eventType フィールドを選択します。
-
フィールドプロパティ ペインで、下にスクロールして、イベントタイプに指定可能な値のリストを表示します。 行を追加 を選択し、VALUE として
application.test
を追加し、DISPLAY NAME
としてTest event for push notification
を追加します。 -
「適用」を選択します。
-
「保存」を選択します。
-
イベントを定義
Journey Optimizerのイベントを使用すると、プッシュ通知などのメッセージを送信するために、ジャーニーをまとめてトリガーできます。 詳しくは、 イベントについてを参照してください。
-
Journey Optimizer UI の左パネルで「設定」をクリックします。
-
ダッシュボード 画面で、イベント タイルの 管理 ボタンを選択します。
-
イベント 画面で、「イベントを作成」を選択します。
-
event1 を編集 パネルで、次の操作を行います。
-
イベントの 名前 として
LumaTestEvent
を入力します。 -
説明 を入力します(例:
Test event to trigger push notifications in Luma app
)。 -
XDM スキーマの作成で前に作成したモバイルアプリエクスペリエンスイベントスキーマを スキーマ リストから選択します(例:Luma Mobile App Event Schema v.1)。
-
リストの横にある「編集 を選択します。
フィールド ダイアログで、(常に選択されるデフォルトフィールド(_id、id および timestamp)に加えて)次のフィールドが選択されていることを確認します。 ドロップダウンリストを使用して、「選択済み 、「すべて、{4 プライマリ を切り替えたり
- アプリケーションが識別されました(ID)、
- イベントタイプ (eventType)、
- プライマリ(プライマリ)。
次に、「OK」を選択します。
-
フィールドの横にある 編集 を選択します。
-
イベント ID 条件を追加 ダイアログで、イベントタイプ (eventType) ここに要素をドラッグ&ドロップ にドラッグ&ドロップします。
-
ポップオーバーで、下までスクロールして「application.test」を選択します(これは、 スキーマを更新の一部としてイベントタイプのリストに以前に追加したイベントタイプです)。 次に、上までスクロールして、「OK」を選択します。
-
「OK」を選択して、条件を保存します。
-
-
名前空間 リストから ECID (ECID) を選択します。 プロファイル識別子 フィールドには、マップ identityMap のキー ECID の最初の要素の ID が自動的に入力されます。
-
「保存」を選択します。
-
先ほど、このチュートリアルの一部として前に作成したモバイルアプリエクスペリエンスイベントスキーマに基づくイベント設定を作成しました。 このイベント設定は、特定のイベントタイプ(application.test
)を使用して受信エクスペリエンスイベントをフィルタリングするので、モバイルアプリから開始された、特定のタイプを持つイベントのみが、次の手順で作成するジャーニーをトリガーします。 実際には、外部サービスからプッシュ通知を送信する場合もありますが、同じコンセプトが適用されます。外部アプリケーションから、特定のフィールドを持つExperience Platformにエクスペリエンスイベントを送信し、これらのイベントがジャーニーをトリガーする前に条件を適用できます。
ジャーニーの作成
次の手順では、適切なイベントを受け取ったときにプッシュ通知の送信をトリガーにするジャーニーを作成します。
-
Journey Optimizer UI の左パネルから 0}ジャーニー} を選択します。
-
ジャーニーを作成 を選択します。
-
ジャーニーのプロパティ パネルで、次の操作を行います。
-
ジャーニーの 名前 を入力します(例:
Luma - Test Push Notification Journey
)。 -
ジャーニーの 説明 を入力します(例:
Journey for test push notifications in Luma mobile app
)。 -
再エントリを許可 が選択されていることを確認し、再エントリ待機期間 を 30 秒 に設定します。
-
「OK」を選択します。
-
-
ジャーニーキャンバスに戻り、イベント から、 LumaTestEvent をキャンバスの エントリイベントまたはオーディエンスを読み取りアクティビティを選択 にドラッグ&ドロップします。
- Events:LumaTestEvent パネルに Label (例:
Luma Test Event
)を入力します。
- Events:LumaTestEvent パネルに Label (例:
-
「アクション」ドロップダウンから、LumaTestEvent アクティビティの右側に表示される ![ 追加 ] の上に プッシュ プッシュをドラッグ&ドロップします。 アクション:プッシュ パネルで、
-
ラベル、例えば
Luma Test Push Notification
を入力し、説明、例えばTest push notification for Luma mobile app
を入力して、カテゴリ リストから トランザクション を選択し、プッシュサーフェス から Luma を選択します。 -
実際のプッシュ通知の編集を開始するには、「 コンテンツを編集」を選択します。
プッシュ通知 エディターで以下を行います。
-
タイトル を入力して(例:
Luma Test Push Notification
)、本文 を入力して(例:Test push notification for Luma mobile app
)。 -
オプションで、「メディアを追加 に画像へのリンク(.png または.jpg を入力できます。 その場合、画像はプッシュ通知の一部になります。
-
エディターを保存して終了するには、「 」を選択します。
-
-
プッシュ通知の定義を保存して終了するには、「OK」を選択します。
-
-
ジャーニーは次のようになります。 「Publish」を選択して、ジャーニーを公開およびアクティブ化します。
プッシュ通知をトリガー
プッシュ通知を送信するためにすべての材料が用意されていること。 残っているのは、このプッシュ通知のトリガー方法です。 本質的には、以前に見たものと同じです。適切なペイロードでエクスペリエンスイベントを送信するだけです(Events など)。
今回は、送信しようとしているエクスペリエンスイベントは、単純な XDM ディクショナリを構築して構築されていません。 プッシュ通知ペイロードを表す struct
を使用します。 専用のデータタイプを定義することは、アプリケーションでエクスペリエンスイベントペイロードの構築を実装する方法の代替方法です。
-
Xcode プロジェクトナビゲーターで Luma/Luma/モデル/XDM/TestPushPayload に移動し、コードを調べます。
code language-swift import Foundation // MARK: - TestPush struct TestPushPayload: Codable { let application: Application let eventType: String } // MARK: - Application struct Application: Codable { let id: String }
コードは、テストプッシュ通知ジャーニーをトリガーするために送信する、次のシンプルなペイロードを表します
code language-json { "eventType": string, "application" : [ "id": string ] }
-
Xcode プロジェクトナビゲーターで Luma/Luma/Utils/MobileSDK に移動し、以下のコードを
func sendTestPushEvent(applicationId: String, eventType: String)
に追加します。code language-swift // Create payload and send experience event Task { let testPushPayload = TestPushPayload( application: Application( id: applicationId ), eventType: eventType ) // send the final experience event await sendExperienceEvent( xdm: testPushPayload.asDictionary() ?? [:] ) }
このコードは、関数(
applicationId
およびeventType
)に提供されたパラメーターを使用してtestPushPayload
インスタンスを作成し、ペイロードをディクショナリに変換する際にsendExperienceEvent
を呼び出します。 今回のコードでは、await
とasync
に基づく Swift の同時実行モデルを使用して、Adobe Experience Platform SDK の呼び出しの非同期の側面も考慮しています。 -
Xcode プロジェクトナビゲーターで Luma/Luma/Views/General/ConfigView に移動します。 次のコードをプッシュ通知ボタンの定義に追加して、そのボタンがタップされるたびにジャーニーをトリガーにテストプッシュ通知エクスペリエンスイベントペイロードを送信します。
code language-swift // Setting parameters and calling function to send push notification Task { let eventType = testPushEventType let applicationId = Bundle.main.bundleIdentifier ?? "No bundle id found" await MobileSDK.shared.sendTestPushEvent(applicationId: applicationId, eventType: eventType) }
アプリを使用した検証
-
を使用して、シミュレータまたは Xcode の物理デバイスでアプリを再構築して実行します。
-
「設定」タブに移動します。
-
プッシュ通知 をタップします。 アプリにプッシュ通知が表示されます。
{width="300"}
次の手順
これで、アプリでプッシュ通知を処理するためのすべてのツールが用意できました。 例えば、Journey Optimizerで、アプリのユーザーがログインしたときにウェルカムプッシュ通知を送信するジャーニーを作成できます。 または、ユーザーがアプリで製品を購入したときの確認プッシュ通知。 または、場所のジオフェンスに入ります( 場所レッスンで確認できます)。
次のトピック:アプリ内メッセージの作成および送信