プッシュ通知の作成と送信
Experience PlatformMobile SDK とJourney Optimizerを使用して、モバイルアプリ用のプッシュ通知を作成する方法について説明します。
Journey Optimizerでは、ジャーニーを作成し、ターゲットを絞ったオーディエンスにメッセージを送信できます。 Journey Optimizerでプッシュ通知を送信する前に、適切な設定と統合がおこなわれていることを確認する必要があります。 Journey Optimizerのプッシュ通知データフローについては、 ドキュメント.
前提条件
-
SDK が正常にビルドされ、インストールされ、設定された状態でアプリを実行しました。
-
アプリをAdobe Experience Platform用に設定します。
-
Journey Optimizerへのアクセスと十分な権限(説明を参照) ここ. また、次のJourney Optimizer機能に対する十分な権限が必要です。
- アプリケーションサーフェスを作成します。
- ジャーニーを作成します。
- メッセージを作成します。
- メッセージプリセットを作成します。
-
有料Apple開発者アカウント 証明書、識別子、キーを作成するのに十分なアクセス権を持つ
-
物理iOSデバイスまたはテスト用のシミュレーター。
学習内容
このレッスンでは、次の操作を行います
- アプリ ID をAppleプッシュ通知サービス (APNs) に登録します。
- Journey Optimizerでアプリサーフェスを作成します。
- スキーマを更新して、プッシュメッセージフィールドを含めます。
- Journey Optimizerタグ拡張機能をインストールして設定します。
- アプリを更新して、Journey Optimizerタグ拡張を登録します。
- アシュランスで設定を検証します。
- アシュランスからテストメッセージを送信する
- Journey Optimizerで独自のプッシュ通知イベント、ジャーニー、エクスペリエンスを定義します。
- アプリ内から独自のプッシュ通知を送信します。
セットアップ
アプリ ID を APNs に登録
次の手順は、Adobe Experience Cloud固有のものではなく、APNs 設定を順を追って説明するように設計されています。
秘密鍵の作成
-
Apple開発者ポータルで、に移動します。 キー.
-
キーを作成するには、「 」を選択します。 +.
-
次を提供: キー名.
-
を選択します。 Apple Push Notification service (APNs) チェックボックス。
-
「続行」を選択します。
-
設定を確認し、「 」を選択します。 登録.
-
をダウンロードします。
.p8
秘密鍵。 このレッスンの後半では、App Surface 設定で使用します。 -
次の項目をメモします。 キー ID. これは、App Surface 設定で使用されます。
-
次の項目をメモします。 チーム ID. これは、App Surface 設定で使用されます。
追加のドキュメントは、 ここにある.
データ収集にアプリケーションサーフェスを追加する
-
次から: データ収集インターフェイスを選択します。 アプリのサーフェス をクリックします。
-
設定を作成するには、「 」を選択します。 アプリサーフェスを作成.
-
を入力します。 名前 設定の場合、例:
Luma App Tutorial
. -
送信者 モバイルアプリケーション設定 を選択します。 Apple iOS.
-
にモバイルアプリのバンドル ID を入力します。 アプリ ID (iOS Bundle ID) フィールドに入力します。 例:
com.adobe.luma.tutorial.swiftui
. -
をオンにします。 プッシュ認証情報 を切り替えて、資格情報を追加します。
-
をドラッグ&ドロップします。
.p8
Appleプッシュ通知認証キー ファイル。 -
次を提供: キー ID:
p8
認証キー。 これは、 キー 」タブをクリックします。 証明書、識別子、およびプロファイル Apple Developer Portal ページのページ。 関連トピック 秘密鍵の作成. -
チーム ID を指定します。チーム ID は、 メンバーシップ 」タブまたはApple Developer Portal ページの上部に表示されます。 関連トピック 秘密鍵の作成.
-
「保存」を選択します。
データストリーム設定を更新
モバイルアプリから Edge ネットワークにデータが確実に送信されるようにするには、 Experience Edge 設定を更新します。
-
データ収集 UI で、「 」を選択します。 データストリーム を選択し、例えば、データストリームを選択します。 Luma Mobile App.
-
選択 対象: Experience Platform を選択し、 編集 を選択します。
-
Adobe Analytics の データストリーム > > Adobe Experience Platform 画面:
-
まだ選択していない場合は、「 」を選択します。 AJO プッシュプロファイルデータセット から プロファイルデータセット. このプロファイルデータセットは、
MobileCore.setPushIdentifier
API 呼び出し ( プッシュ通知用のデバイストークンの登録) と呼ばれ、プッシュ通知の一意の識別子(プッシュ識別子)が、ユーザーのプロファイルの一部として保存されます。 -
Adobe Journey Optimizer が選択されている。 詳しくは、 Adobe Experience Platform設定 を参照してください。
-
データストリーム設定を保存するには、 保存.
-
Journey Optimizer Tags 拡張機能のインストール
アプリがJourney Optimizerで動作するようにするには、タグプロパティを更新する必要があります。
-
に移動します。 タグ > 拡張機能 > カタログ,
-
プロパティを開きます(例: )。 Luma Mobile App Tutorial.
-
選択 カタログ.
-
を検索します。 Adobe Journey Optimizer 拡張子。
-
拡張機能をインストールします。
-
Adobe Analytics の 拡張機能のインストール ダイアログ
-
環境を選択します(例: )。 開発.
-
を選択します。 AJO プッシュトラッキングエクスペリエンスイベントデータセット データセット イベントデータセット リスト。
-
選択 ライブラリに保存してビルドする.
-
アシュランスを使用して設定を検証
-
以下を確認します。 設定手順 シミュレーターまたはデバイスを Assurance に接続するには、「 」セクションを参照してください。
-
Assurance UI で、 設定.
-
選択 次の プッシュデバッグ.
-
「保存」を選択します。
-
選択 プッシュデバッグ をクリックします。
-
を選択します。 設定の検証 タブをクリックします。
-
次の場所からデバイスを選択します。 クライアント リスト。
-
エラーが表示されていないことを確認します。
-
を選択します。 テストプッシュの送信 タブをクリックします。
-
(オプション)次のデフォルトの詳細を変更します: タイトル および 本文
-
選択 テストプッシュ通知の送信.
-
次を確認します。 テスト結果.
-
アプリにテストプッシュ通知が表示されます。
img-md w-300
署名
プッシュ通知を送信するには、Luma アプリへの署名が必要で、 には有料のApple開発者アカウントが必要です.
アプリの署名を更新するには:
-
Xcode でアプリに移動します。
-
選択 Luma をクリックします。
-
を選択します。 Luma ターゲット。
-
を選択します。 署名と機能 タブをクリックします。
-
設定 署名を自動管理, チーム、および バンドル識別子 または、特定のApple開発プロビジョニングの詳細を使用します。
note important IMPORTANT 必ず ユニーク バンドル識別子を置き換えます。 com.adobe.luma.tutorial.swiftui
バンドル識別子。各バンドル識別子は一意である必要があります。 通常、バンドル ID 文字列には逆引き DNS 形式を使用します ( 例:com.organization.brand.uniqueidentifier
. このチュートリアルの完成版(例: )は、を使用します。com.adobe.luma.tutorial.swiftui
.{zoomable="yes"}
アプリへのプッシュ通知機能の追加
-
Xcode で、「 Luma から ターゲット リストで、 署名と機能 タブで、 +機能 「 」ボタンをクリックし、「 プッシュ通知. これにより、アプリがプッシュ通知を受け取れるようになります。
-
次に、通知拡張機能をアプリに追加する必要があります。 に戻ります。 General 」タブで「 + アイコン ターゲット 」セクションに入力します。
-
新しいターゲットのテンプレートを選択するよう求められます。 選択 通知サービス拡張 次に、 次へ.
-
次のウィンドウで、
NotificationExtension
拡張機能の名前として追加し、「 完了 」ボタンをクリックします。
これで、以下の画面のようなプッシュ通知拡張機能がアプリに追加されました。
アプリでのJourney Optimizerの実装
前のレッスンで説明したように、モバイルタグ拡張機能のインストールでは設定のみが提供されます。 次に、メッセージング SDK をインストールして登録する必要があります。 これらの手順が明確でない場合は、 SDK のインストール 」セクションに入力します。
-
Xcode で、 AEP メッセージ は、パッケージの依存関係にパッケージのリストに追加されます。 詳しくは、 Swift Package Manager.
-
に移動します。 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
への APIfunc application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data)
関数に置き換えます。code language-swift // Send push token to Mobile SDK MobileCore.setPushIdentifier(deviceToken)
この関数は、アプリがインストールされているデバイスに固有のデバイストークンを取得します。 次に、設定済みの設定を使用し、Appleのプッシュ通知サービス (APNs) に依存するプッシュ通知配信用のトークンを設定します。
MobileCore.updateConfigurationWith(configDict: ["messaging.useSandbox": true])
プッシュ通知を送信する際に、プッシュ通知が APNs サンドボックスを使用するか、本番サーバーを使用するかを決定します。 シミュレーターまたはデバイスでアプリをテストする際に、 messaging.useSandbox
が true
プッシュ通知を受け取るために使用します。 Apple Testflight を使用して実稼動用にアプリをデプロイしてテストする場合は、 messaging.useSandbox
から false
そうしないと、実稼動アプリはプッシュ通知を受け取れなくなります。独自のプッシュ通知を作成する
独自のプッシュ通知を作成するには、プッシュ通知の送信を処理するジャーニーをトリガーするイベントをJourney Optimizerで定義する必要があります。
スキーマを更新
新しいイベントタイプを定義します。スキーマで定義されているイベントのリストの一部として、まだ使用できません。 このイベントタイプは、後でプッシュ通知をトリガーする際に使用します。
-
Journey Optimizer UI で、 スキーマ をクリックします。
-
選択 参照 」をクリックします。
-
スキーマを選択します(例: )。 Luma Mobile App Event Schema をクリックして開きます。
-
スキーマエディターで、次の操作を実行します。
-
を選択します。 eventType フィールドに入力します。
-
Adobe Analytics の フィールドのプロパティ ウィンドウ領域を下にスクロールして、イベントタイプに使用可能な値のリストを表示します。 選択 行を追加、を追加します。
application.test
として 値 およびTest event for push notification
としてDISPLAY NAME
. -
「適用」を選択します。
-
「保存」を選択します。
-
イベントの定義
Journey Optimizerのイベントを使用すると、ジャーニーを一元的にトリガーして、プッシュ通知などのメッセージを送信できます。 詳しくは、 イベントについて を参照してください。
-
Journey Optimizer UI で、 設定 をクリックします。
-
Adobe Analytics の ダッシュボード 画面で、 管理 ボタン イベント タイル。
-
Adobe Analytics の イベント 画面、選択 イベントを作成.
-
Adobe Analytics の event1 を編集 ペイン:
-
入力
LumaTestEvent
として 名前 イベントの。 -
次を提供: 説明 例:
Test event to trigger push notifications in Luma app
. -
前の手順で作成したモバイルアプリエクスペリエンスイベントスキーマを選択します。 XDM スキーマの作成 から スキーマ 例えば、リスト Luma Mobile App Event Schema v.1.
-
選択 の横 フィールド リスト。
Adobe Analytics の フィールド ダイアログで、次のフィールドが選択されていることを確認します ( 常に選択されているデフォルトのフィールドの上部 (_id, id、および timestamp)) を参照してください。 ドロップダウンリストを使用して、次の間で切り替えることができます。 選択済み, すべて および プライマリ または フィールドに入力します。
- 特定されたアプリケーション (id),
- イベントタイプ (eventType),
- プライマリ(プライマリ).
次に、 OK.
-
選択 の横 イベント ID 条件 フィールドに入力します。
-
Adobe Analytics の イベント ID 条件の追加 ダイアログ、ドラッグ&ドロップ イベントタイプ (eventType) 次に対して ここに要素をドラッグ&ドロップ.
-
ポップオーバーで、下までスクロールし、「 」を選択します。 application.test ( これは、 スキーマを更新) をクリックします。 次に、上までスクロールし、「 」を選択します。 OK.
-
選択 OK をクリックして条件を保存します。
-
-
選択 ECID (ECID) から 名前空間 リスト。 自動的に プロファイル識別子 フィールドに マップ identityMap のキー ECID の最初の要素の ID。.
-
「保存」を選択します。
-
このチュートリアルの一部として前に作成したモバイルアプリエクスペリエンスイベントスキーマに基づくイベント設定を作成しました。 このイベント設定は、特定のイベントタイプ (application.test
) の場合、その特定のタイプを持つイベントのみがモバイルアプリから開始され、次の手順で構築したジャーニーをトリガーにします。 実際のシナリオでは、外部サービスからプッシュ通知を送信する場合も同じ概念が当てはまります。外部アプリケーションから、ジャーニーをトリガーする前に、特定のフィールドを持つExperience Platformにエクスペリエンスイベントを送信します。
ジャーニーの作成
次の手順では、適切なイベントを受信した際にプッシュ通知の送信をトリガーにするジャーニーを作成します。
-
Journey Optimizer UI で、 ジャーニー をクリックします。
-
選択 「作成」ジャーニー.
-
Adobe Analytics の ジャーニーのプロパティ パネル:
-
を入力します。 名前 ジャーニーの例
Luma - Test Push Notification Journey
. -
を入力します。 説明 ジャーニーの例
Journey for test push notifications in Luma mobile app
. -
確認 再エントリを許可 が選択され、設定されている 再入場待機期間 から 30 秒.
-
「OK」を選択します。
-
-
ジャーニーキャンバスに戻る、 イベント をドラッグ&ドロップし、 LumaTestEvent それが表示されるキャンバス上で エントリイベントまたはオーディエンスの閲覧アクティビティを選択.
- Adobe Analytics の イベント:LumaTestEvent パネル、 ラベル 例:
Luma Test Event
.
- Adobe Analytics の イベント:LumaTestEvent パネル、 ラベル 例:
-
次から: アクション ドロップダウン、ドラッグ&ドロップ プッシュ の あなたの右に現れて LumaTestEvent アクティビティ。 Adobe Analytics の アクション:プッシュ ペイン:
-
次を提供: ラベル 例:
Luma Test Push Notification
、 説明 例:Test push notification for Luma mobile app
を選択します。 トランザクション から カテゴリ リストと選択 Luma から 押し出しサーフェス. -
選択 コンテンツを編集 実際のプッシュ通知の編集を開始する場合。
Adobe Analytics の プッシュ通知 編集者:
-
を入力します。 タイトル 例:
Luma Test Push Notification
を入力し、 本文 例:Test push notification for Luma mobile app
. -
オプションで、画像(.png または.jpg)へのリンクを メディアを追加. その場合、画像はプッシュ通知の一部になります。
-
エディターを保存して終了するには、「 」を選択します。 .
-
-
プッシュ通知の定義を保存して終了するには、 OK.
-
-
ジャーニーは次のようになります。 選択 公開 ジャーニーを公開してアクティブ化する。
プッシュ通知のトリガー
プッシュ通知を送信するためのすべての構成要素が揃っている。 残りの点は、このプッシュ通知のトリガー方法です。 基本的に、これは以前に見たのと同じです。適切なペイロードを持つエクスペリエンスイベントを ( イベント) をクリックします。
今回は、送信しようとしているエクスペリエンスイベントは、単純な XDM 辞書を構築して構築されていません。 次を使用します: struct
プッシュ通知ペイロードを表します。 アプリケーションでエクスペリエンスイベントペイロードを作成する方法として、専用のデータタイプを定義する方法があります。
-
に移動します。 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 ] }
-
に移動します。 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() ?? [:] ) }
このコードにより、
testPushPayload
関数に指定されたパラメーター (applicationId
およびeventType
) と呼び出しsendExperienceEvent
ペイロードを辞書に変換する際に発生した問題を修正しました。 また、このコードは、今回は、に基づく Swift の同時実行モデルを使用してAdobe Experience Platform SDK を呼び出す際の非同期的な側面も考慮しますawait
およびasync
. -
に移動します。 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 の物理デバイスでアプリを再構築し、実行します。 .
-
次に移動: 設定 タブをクリックします。
-
タップ プッシュ通知. アプリにプッシュ通知が表示されます。
img-md w-300
次の手順
これで、アプリ内のプッシュ通知を処理するすべてのツールが用意されました。 例えば、アプリのユーザーがログインしたときにウェルカムプッシュ通知を送信するジャーニーをJourney Optimizerで構築できます。 または、ユーザーがアプリで製品を購入した際の確認プッシュ通知。 または、場所のジオフェンスを入力します ( 場所 レッスン )。
次へ: アプリ内メッセージの作成と送信