プッシュ通知の作成と送信

Experience Platformの Mobile SDK とJourney Optimizerを使用して、モバイルアプリ用のプッシュ通知を作成する方法を説明します。

Journey Optimizerでは、ジャーニーを作成し、ターゲットとなるオーディエンスにメッセージを送信できます。 Journey Optimizerでプッシュ通知を送信する前に、適切な設定と統合が行われていることを確認する必要があります。 Journey Optimizerでのプッシュ通知のデータフローについては、 ドキュメントを参照してください。

アーキテクチャ

NOTE
このレッスンはオプションで、プッシュ通知の送信を検討している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で独自のプッシュ通知イベント、ジャーニーおよびエクスペリエンスを定義します。
  • アプリ内から独自のプッシュ通知を送信します。

セットアップ

TIP
Journey Optimizerのアプリ内メッセージレッスンの一部として既に環境を設定している場合は、この設定の節の手順のいくつかが既に実行されている可能性があります。

アプリ ID を APN に登録

次の手順は、Adobe Experience Cloudに固有のものではなく、APN 設定の手順を示すように設計されています。

秘密鍵の作成

  1. Apple開発者ポータルで、「キー」に移動します。

  2. キーを作成するには、「+」を選択します。
    新しいキーを作成

  3. キー名 を入力します。

  4. Apple プッシュ通知サービス ​ (APN)」チェックボックスをオンにします。

  5. 続行」を選択します。
    新しいキーを設定

  6. 設定を確認し、「登録」を選択します。

  7. .p8 秘密鍵をダウンロードします。 これは、このレッスンの後半のアプリサーフェス設定で使用します。

  8. キー ID をメモします。 これは、アプリサーフェスの設定で使用されます。

  9. チーム ID をメモします。 これは、アプリサーフェスの設定で使用されます。
    主な詳細

その他のドキュメントについては こちらを参照してください。

データ収集でのアプリサーフェスの追加

  1. データ収集インターフェイスで、左側のパネルの アプリサーフェス を選択します。

  2. 設定を作成するには、「アプリサーフェスを作成」を選択します。
    アプリサーフェスホーム

  3. 設定の 名前 を入力します(例:Luma App Tutorial)。

  4. モバイルアプリケーション設定 から、「Apple iOS」を選択します。

  5. アプリ ID (iOS バンドル ID) フィールドにモバイルアプリのバンドル ID を入力します。 例:com.adobe.luma.tutorial.swiftui

  6. プッシュ資格情報 をオンにして、資格情報を追加します。

  7. .p8 Apple プッシュ通知認証キー ファイルをドラッグ&ドロップします。

  8. 認証キーの作成時に割り当てられる 10 文字の文字列である キー IDp8 指定します。 これは、Apple開発者ポータルページの「証明書、識別子、プロファイル ページの「​ キー」タブにあります。 秘密鍵の作成も参照してください。

  9. チーム ID を指定します。Team ID は値で、メンバーシップ タブまたはApple Developer Portal ページの上部にあります。 秘密鍵の作成も参照してください。

  10. 保存」を選択します。

    アプリサーフェスの設定

データストリーム設定を更新

モバイルアプリからEdge Networkに送信されるデータが確実にJourney Optimizerに転送されるようにするには、Experience Edgeの設定を更新します。

  1. データ収集 UI で「データストリーム」を選択し、データストリームを選択します(例:Luma Mobile App)。

  2. 2Experience Platform 「{ その他 編集 ​​ 編集 ​​ を選択します。

  3. データストリーム/ フォルダー /Adobe Experience Platform 画面で、次の操作を行います。

    1. まだ選択していない場合は、{ プロファイルデータセット から ​​ 0}AJO プッシュプロファイルデータセット ​​ を選択します。 ​このプロファイルデータセットは、MobileCore.setPushIdentifier API 呼び出し( プッシュ通知用のデバイストークンの登録を参照)を使用する場合に必要です。この呼び出しにより、プッシュ通知の一意の識別子(プッシュ識別子など)がユーザーのプロファイルの一部として保存されます。

    2. Adobe Journey Optimizer が選択されました。 詳しくは、Adobe Experience Platform 設定を参照してください。

    3. データストリーム設定を保存するには、「保存」を選択します。

    AEP データストリーム設定

Journey Optimizer タグ拡張機能のインストール

アプリがJourney Optimizerと連携するには、タグプロパティを更新する必要があります。

  1. タグ/拡張機能/カタログ に移動します。

  2. プロパティを開きます(例:Luma Mobile App Tutorial)。

  3. カタログ を選択します。

  4. Adobe Journey Optimizer 拡張機能を検索します。

  5. 拡張機能をインストールします。

  6. 拡張機能をインストール ダイアログで、

    1. 環境(例:開発 を選択します。

    2. イベントデータセット リストから AJO プッシュトラッキングエクスペリエンスイベントデータセット データセットを選択します。

    3. ライブラリおよびビルドに保存 を選択します。

      AJO拡張機能

NOTE
AJO プッシュトラッキングエクスペリエンスイベントデータセット がオプションとして表示されない場合は、カスタマーケアにお問い合わせください。

Assurance で設定を検証

  1. シミュレーターまたはデバイスを Assurance に接続するには、「 設定手順」セクションを確認してください。

  2. Assurance UI で、「設定」を選択します。
    設定クリック

  3. プッシュデバッグ の横にある プラス を選択します。

  4. 保存」を選択します。
    保存

  5. 左側のナビゲーションから プッシュデバッグ を選択します。

  6. 設定を検証」タブを選択します。

  7. クライアント リストからお使いのデバイスを選択します。

  8. エラーがないことを確認します。
    validate

  9. テストプッシュを送信 タブを選択します。

  10. (オプション)(タイトル および ​​ 本文 ​​ のデフォルトの詳細を変更

  11. バグ テストプッシュ通知を送信 を選択します。

  12. テスト結果 を確認します。

  13. テストプッシュ通知がアプリに表示されます。

    {width="300"}

署名

Luma アプリへの署名は、プッシュ通知を送信するために必要で、Apple開発者の有料アカウントが必要 です。

アプリの署名を更新するには:

  1. Xcode でアプリに移動します。

  2. プロジェクト ナビゲータで [Luma] を選択します。

  3. Luma ターゲットを選択します。

  4. 署名と機能」タブを選択します。

  5. 自動管理の署名チーム、および バンドル 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 を使用します。

    Xcode 署名機能 {modal="regular"}

アプリへのプッシュ通知機能の追加

IMPORTANT
iOS アプリでプッシュ通知を実装してテストするには、有料 Apple開発者アカウントが必要です。 Appleの有料デベロッパーアカウントをお持ちでない場合は、このレッスンの残りの部分をスキップできます。
  1. Xcode で、「TARGETS」リストから「Luma」を選択し、「署名と機能」タブを選択します。次に、「+機能」ボタンを選択し、「プッシュ通知」を選択します。 これにより、アプリがプッシュ通知を受信できるようになります。

  2. 次に、通知拡張機能をアプリに追加する必要があります。 「General」タブに戻り、「TARGETS」セクションの下部にある + アイコンを選択します。

  3. 新しいターゲットのテンプレートを選択するよう求められます。 通知サービス拡張機能 を選択してから、「次へ」を選択します。

  4. 次のウィンドウで、拡張機能の名前として NotificationExtension を使用し、「完了」ボタンをクリックします。

以下の画面のように、プッシュ通知拡張機能がアプリに追加されました。

Pusn notifications 拡張機能

アプリへのJourney Optimizerの実装

前のレッスンで説明したように、モバイルタグ拡張機能をインストールしても、設定のみが提供されます。 次に、Messaging SDK をインストールして登録する必要があります。 これらの手順が明確でない場合は、「SDK のインストール の節を参照しください。

NOTE
SDK のインストールの節を完了した場合、SDK は既にインストールされているので、この手順をスキップできます。
  1. Xcode で、AEP メッセージがパッケージの依存関係のパッケージのリストに追加されていることを確認します。 Swift パッケージマネージャーを参照してください。

  2. Xcode プロジェクトナビゲーターで Luma/Luma/AppDelegate に移動します。

  3. AEPMessaging が読み込みのリストに含まれていることを確認します。

    import AEPMessaging

  4. 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
    ]
    

プッシュ通知用のデバイストークンの登録

  1. MobileCore.setPushIdentifier API を func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) 関数に追加します。

    code language-swift
    // Send push token to Mobile SDK
    MobileCore.setPushIdentifier(deviceToken)
    

    この関数は、アプリがインストールされているデバイスに固有のデバイストークンを取得します。 次に、設定した設定を使用して、プッシュ通知配信のトークンを設定します。この設定は、Appleのプッシュ通知サービス(APN)に依存しています。

IMPORTANT
MobileCore.updateConfigurationWith(configDict: ["messaging.useSandbox": true]) は、プッシュ通知が APN サンドボックスまたは実稼動サーバーをプッシュ通知の送信に使用しているかどうかを判断します。 シミュレーターまたはデバイスでアプリをテストする場合は、プッシュ通知を受信できるように、messaging.useSandboxtrue に設定されていることを確認します。 Appleの Testflight を使用してテストするために実稼動用にアプリをデプロイする場合は、messaging.useSandboxfalse に設定します。そうしないと、実稼動アプリはプッシュ通知を受信できません。

独自のプッシュ通知を作成

独自のプッシュ通知を作成するには、プッシュ通知の送信を処理するジャーニーをトリガーにするイベントをJourney Optimizerで定義する必要があります。

スキーマを更新

スキーマで定義されたイベントのリストの一部としてまだ使用できない新しいイベントタイプを定義しようとしています。 このイベントタイプは、後でプッシュ通知をトリガーするときに使用します。

  1. Journey Optimizer UI の左パネルで「スキーマ」をクリックします。

  2. タブバーの 参照 を選択します。

  3. スキーマ(例:Luma Mobile App Event Schema)を選択して開きます。

  4. スキーマエディターで、次の手順を実行します。

    1. eventType フィールドを選択します。

    2. フィールドプロパティ ペインで、下にスクロールして、イベントタイプに指定可能な値のリストを表示します。 行を追加 を選択し、VALUE として application.test を追加し、DISPLAY NAME として Test event for push notification を追加します。

    3. 適用」を選択します。

    4. 保存」を選択します。

      イベントタイプへの値の追加

イベントを定義

Journey Optimizerのイベントを使用すると、プッシュ通知などのメッセージを送信するために、ジャーニーをまとめてトリガーできます。 詳しくは、 イベントについてを参照してください。

  1. Journey Optimizer UI の左パネルで「設定」をクリックします。

  2. ダッシュボード 画面で、イベント タイルの 管理 ボタンを選択します。

  3. イベント 画面で、「イベントを作成」を選択します。

  4. event1 を編集 パネルで、次の操作を行います。

    1. イベントの 名前 として LumaTestEvent を入力します。

    2. 説明 を入力します(例:Test event to trigger push notifications in Luma app)。

    3. XDM スキーマの作成で前に作成したモバイルアプリエクスペリエンスイベントスキーマを スキーマ リストから選択します(例:Luma Mobile App Event Schema v.1)。

    4. フィールド リストの横にある「編集 を選択します。

      イベントを編集ステップ 1

      フィールド ダイアログで、(常に選択されるデフォルトフィールド(_idid および timestamp)に加えて)次のフィールドが選択されていることを確認します。 ドロップダウンリストを使用して、「選択済み 、「すべて、{4 プライマリ を切り替えたり 検索

      • アプリケーションが識別されました(ID)
      • イベントタイプ (eventType)
      • プライマリ(プライマリ)

      イベントフィールドを編集

      次に、「OK」を選択します。

    5. イベント ID 条件 フィールドの横にある 編集 を選択します。

      1. イベント ID 条件を追加 ダイアログで、イベントタイプ (eventType)ここに要素をドラッグ&ドロップ にドラッグ&ドロップします。

      2. ポップオーバーで、下までスクロールして「application.test」を選択します(これは、 スキーマを更新の一部としてイベントタイプのリストに以前に追加したイベントタイプです)。 次に、上までスクロールして、「OK」を選択します。

      3. OK」を選択して、条件を保存します。

        イベント条件を編集

    6. 名前空間 リストから ECID (ECID) を選択します。 プロファイル識別子 フィールドには、マップ identityMap のキー ECID の最初の要素の ID が自動的に入力されます。

    7. 保存」を選択します。

      イベントを編集ステップ 2

先ほど、このチュートリアルの一部として前に作成したモバイルアプリエクスペリエンスイベントスキーマに基づくイベント設定を作成しました。 このイベント設定は、特定のイベントタイプ(application.test)を使用して受信エクスペリエンスイベントをフィルタリングするので、モバイルアプリから開始された、特定のタイプを持つイベントのみが、次の手順で作成するジャーニーをトリガーします。 実際には、外部サービスからプッシュ通知を送信する場合もありますが、同じコンセプトが適用されます。外部アプリケーションから、特定のフィールドを持つExperience Platformにエクスペリエンスイベントを送信し、これらのイベントがジャーニーをトリガーする前に条件を適用できます。

ジャーニーの作成

次の手順では、適切なイベントを受け取ったときにプッシュ通知の送信をトリガーにするジャーニーを作成します。

  1. Journey Optimizer UI の左パネルから 0}ジャーニー} を選択します。

  2. ジャーニーを作成 を選択します。

  3. ジャーニーのプロパティ パネルで、次の操作を行います。

    1. ジャーニーの 名前 を入力します(例:Luma - Test Push Notification Journey)。

    2. ジャーニーの 説明 を入力します(例:Journey for test push notifications in Luma mobile app)。

    3. 再エントリを許可 が選択されていることを確認し、再エントリ待機期間30 に設定します。

    4. OK」を選択します。

      ジャーニーのプロパティ

  4. ジャーニーキャンバスに戻り、イベント から、 イベント LumaTestEvent をキャンバスの エントリイベントまたはオーディエンスを読み取りアクティビティを選択 にドラッグ&ドロップします。

    • Events:LumaTestEvent パネルに Label (例:Luma Test Event)を入力します。
  5. アクション」ドロップダウンから、LumaTestEvent アクティビティの右側に表示される ![ 追加 ]​ の上に​ プッシュ ​ プッシュ プッシュをドラッグ&ドロップします。 アクション:プッシュ パネルで、

    1. ラベル、例えば Luma Test Push Notification を入力し、説明、例えば Test push notification for Luma mobile app を入力して、カテゴリ リストから トランザクション を選択し、プッシュサーフェス から Luma を選択します。

    2. 実際のプッシュ通知の編集を開始するには、「 編集 コンテンツを編集」を選択します。

      プッシュプロパティ

      プッシュ通知 エディターで以下を行います。

      1. タイトル を入力して(例:Luma Test Push Notification)、本文 を入力して(例:Test push notification for Luma mobile app)。

      2. オプションで、「メディアを追加 に画像へのリンク(.png または.jpg を入力できます。 その場合、画像はプッシュ通知の一部になります。

      3. エディターを保存して終了するには、「 左に山形記号 」を選択します。

        プッシュエディター

    3. プッシュ通知の定義を保存して終了するには、「OK」を選択します。

  6. ジャーニーは次のようになります。 「Publish」を選択して、ジャーニーを公開およびアクティブ化します。
    ジャーニーの完了

プッシュ通知をトリガー

プッシュ通知を送信するためにすべての材料が用意されていること。 残っているのは、このプッシュ通知のトリガー方法です。 本質的には、以前に見たものと同じです。適切なペイロードでエクスペリエンスイベントを送信するだけです(Events など)。

今回は、送信しようとしているエクスペリエンスイベントは、単純な XDM ディクショナリを構築して構築されていません。 プッシュ通知ペイロードを表す struct を使用します。 専用のデータタイプを定義することは、アプリケーションでエクスペリエンスイベントペイロードの構築を実装する方法の代替方法です。

  1. 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
       ]
    }
    
  2. 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 を呼び出します。 今回のコードでは、awaitasync に基づく Swift の同時実行モデルを使用して、Adobe Experience Platform SDK の呼び出しの非同期の側面も考慮しています。

  3. 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)
    }
    

アプリを使用した検証

  1. 再生 を使用して、シミュレータまたは Xcode の物理デバイスでアプリを再構築して実行します。

  2. 設定」タブに移動します。

  3. プッシュ通知 をタップします。 アプリにプッシュ通知が表示されます。

    {width="300"}

次の手順

これで、アプリでプッシュ通知を処理するためのすべてのツールが用意できました。 例えば、Journey Optimizerで、アプリのユーザーがログインしたときにウェルカムプッシュ通知を送信するジャーニーを作成できます。 または、ユーザーがアプリで製品を購入したときの確認プッシュ通知。 または、場所のジオフェンスに入ります( 場所レッスンで確認できます)。

SUCCESS
これで、Journey OptimizerとExperience Platform Mobile SDK のJourney Optimizer拡張機能を使用して、アプリでプッシュ通知を有効にしました。
Adobe Experience Platform Mobile SDK の学習に時間を費やしていただき、ありがとうございます。 ご不明な点がある場合や、一般的なフィードバックをお寄せになる場合、または今後のコンテンツに関するご提案がある場合は、この Experience League コミュニティ ディスカッションの投稿でお知らせください。

次のトピック:アプリ内メッセージの作成および送信

recommendation-more-help
9fed61f5-c338-47ad-8005-0b89a5f4af8b