建立和傳送推播通知
瞭解如何使用Experience Platform Mobile SDK和Journey Optimizer為行動應用程式建立推播通知。
Journey Optimizer可讓您建立歷程,並傳送訊息給目標對象。 在使用Journey Optimizer傳送推播通知之前,您必須確保有適當的設定和整合。 若要瞭解Journey Optimizer中的推播通知資料流程,請參閱 檔案.
先決條件
-
成功建立並執行應用程式,且已安裝並設定SDK。
-
為Adobe Experience Platform設定應用程式。
-
如所述存取Journey Optimizer和足夠的許可權 此處. 此外,您需要足夠的許可權才能使用下列Journey Optimizer功能。
- 建立應用程式表面。
- 建立歷程。
- 建立訊息。
- 建立訊息預設集。
-
付費Apple開發人員帳戶 具有建立憑證、識別碼和金鑰的足夠存取權。
-
實體iOS裝置或模擬器以進行測試。
學習目標
在本課程中,您將學習
- 向Apple推播通知服務(APN)註冊應用程式ID。
- 在Journey Optimizer中建立應用程式表面。
- 更新您的結構描述以包含推送訊息欄位。
- 安裝及設定Journey Optimizer標籤擴充功能。
- 更新您的應用程式以註冊Journey Optimizer標籤擴充功能。
- 驗證Assurance中的設定。
- 從保證傳送測試訊息
- 在Journey Optimizer中定義您自己的推播通知事件、歷程和體驗。
- 從應用程式內傳送您自己的推播通知。
設定
向APN註冊應用程式ID
下列步驟並非特定於Adobe Experience Cloud,而是旨在引導您完成APN設定。
建立私密金鑰
-
在Apple開發人員入口網站中,導覽至 金鑰.
-
若要建立金鑰,請選取 +.
-
提供 金鑰名稱.
-
選取 Apple推播通知服務 (APNs) 核取方塊。
-
選取「繼續」。
-
檢閱設定並選取 註冊.
-
下載
.p8
私密金鑰。 本課程稍後將用於App Surface設定。 -
記下 金鑰ID. 它用於App Surface設定。
-
記下 團隊ID. 它用於App Surface設定。
其他檔案包括 可在此處找到.
在資料收集中新增應用程式表面
-
從 資料收集介面,選取 應用程式表面 在左側面板中。
-
若要建立組態,請選取 建立應用程式表面.
-
輸入 名稱 例如,針對設定
Luma App Tutorial
. -
從 行動應用程式設定,選取 Apple iOS.
-
在中輸入行動應用程式套件組合ID 應用程式ID (iOS套件組合ID) 欄位。 例如,
com.adobe.luma.tutorial.swiftui
. -
切換至 推送認證 切換即可新增您的認證。
-
拖放您的
.p8
Apple推播通知驗證金鑰 檔案。 -
提供 金鑰ID,在建立期間指派的10個字元字串
p8
驗證金鑰。 此路徑位於 金鑰 索引標籤中的 憑證、識別碼和設定檔 Apple開發人員入口網站頁面的頁面。 另請參閱 建立私密金鑰. -
提供 團隊ID. 團隊ID是一個值,可在下找到 會籍 標籤或Apple開發人員入口網站頁面頂端的標籤。 另請參閱 建立私密金鑰.
-
選取「儲存」。
更新資料流設定
為確保將從您的行動應用程式傳送到Edge Network的資料轉送到Journey Optimizer,請更新您的Experience Edge設定。
-
在資料收集UI中,選取 資料串流,並選取您的資料串流,例如 Luma Mobile App.
-
選取 的 Experience Platform 並選取 編輯 從內容功能表。
-
在 資料串流 > > Adobe Experience Platform 畫面:
-
如果尚未選取,請選取 AJO推播設定檔資料集 從 設定檔資料集. 使用時,需要此設定檔資料集
MobileCore.setPushIdentifier
API呼叫(請參閱 註冊推播通知的裝置代號)可確保推送通知的唯一識別碼(亦即推送識別碼)會儲存為使用者設定檔的一部分。 -
Adobe Journey Optimizer 已選取。 另請參閱 Adobe Experience Platform設定 以取得詳細資訊。
-
若要儲存資料流設定,請選取 儲存.
-
安裝Journey Optimizer標籤擴充功能
若要讓應用程式與Journey Optimizer搭配使用,您必須更新標籤屬性。
-
瀏覽至 標籤 > 擴充功能 > 目錄,
-
開啟您的屬性,例如 Luma Mobile App Tutorial.
-
選取 目錄.
-
搜尋 Adobe Journey Optimizer 副檔名。
-
安裝擴充功能。
-
在 安裝擴充功能 對話方塊
-
選取環境,例如 開發.
-
選取 AJO推播追蹤體驗事件資料集 資料集 事件資料集 清單。
-
選取 儲存至程式庫並建置.
-
使用保證驗證設定
-
檢閱 設定指示 區段來將您的模擬器或裝置連線到Assurance。
-
在Assurance UI中,選取 設定.
-
選取 旁邊 推送偵錯.
-
選取「儲存」。
-
選取 推送偵錯 從左側導覽。
-
選取 驗證設定 標籤。
-
從中選擇您的裝置 使用者端 清單。
-
確認您沒有收到任何錯誤。
-
選取 傳送測試推播 標籤。
-
(選擇性)變更預設詳細資料 標題 和 內文
-
選取 傳送測試推播通知.
-
檢查 測試結果.
-
您應該會看到測試推播通知出現在應用程式中。
{width="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
.{modal="regular"}
將推播通知功能新增至您的應用程式
-
在Xcode中,選取 Luma 從 目標 清單中,選取 簽署與功能 索引標籤中,選取 +功能 按鈕,然後選取 推播通知. 這可讓您的應用程式接收推播通知。
-
接下來,您必須將通知擴充功能新增至應用程式。 返回 General 標籤並選取 + 圖示於 目標 區段。
-
系統會提示您為新目標選取範本。 選取 通知服務延伸模組 然後選取 下一個.
-
在下一個視窗中,使用
NotificationExtension
作為擴充功能的名稱,然後按一下 完成 按鈕。
現在,您應該會在應用程式中新增推播通知擴充功能,類似於下列畫面。
在應用程式中實作Journey Optimizer
如先前課程所述,安裝行動標籤擴充功能僅會提供設定。 接下來,您必須安裝並註冊傳訊SDK。 如果這些步驟不清楚,請查閱 安裝SDK 區段。
-
在Xcode中,確認 AEP傳訊 會新增至套件相依性中的套件清單中。 另請參閱 Swift封裝管理程式.
-
瀏覽至 Luma > Luma > AppDelegate 在「Xcode專案」導覽器中。
-
確定
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])
判斷推播通知是使用APNs沙箱或生產伺服器來傳送推播通知。 在模擬器中或裝置上測試應用程式時,請確定 messaging.useSandbox
設為 true
所以您會收到推播通知。 使用Apple的Testflight將應用程式部署到生產環境以進行測試時,請務必設定 messaging.useSandbox
至 false
否則,您的生產應用程式將無法接收推播通知。建立您自己的推播通知
若要建立自己的推播通知,您必須在Journey Optimizer中定義觸發歷程的事件,負責傳送推播通知。
更新您的結構描述
您即將定義新的事件型別,目前無法當作結構描述中定義之事件清單的一部分使用。 您稍後在觸發推播通知時會使用此事件型別。
-
在Journey Optimizer UI中,選取 方案 從左側邊欄。
-
選取 瀏覽 標籤列中的。
-
選取您的結構描述,例如 Luma Mobile App Event Schema 以開啟它。
-
在架構編輯器中:
-
選取 eventtype 欄位。
-
在 欄位屬性 窗格,向下捲動以檢視事件型別的可能值清單。 選取 新增列,並新增
application.test
作為 值 和Test event for push notification
作為DISPLAY NAME
. -
選取 「套用」。
-
選取「儲存」。
-
定義事件
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)。 您可以使用下拉式清單在 已選取, 全部 和 主要 或使用 欄位。
- 已識別的應用程式(ID),
- 事件型別(eventType),
- 主要(主要).
然後選取 確定.
-
選取 在 事件ID條件 欄位。
-
在 新增事件ID條件 對話方塊,拖放 事件型別(eventType) 開啟到 將元素拖放到這裡.
-
在彈出視窗中,捲動到底部並選取 application.test (這是您先前新增至事件型別清單的事件型別,做為的一部分) 更新您的結構描述)。 然後向上捲動到頂端並選取 確定.
-
選取 確定 以儲存條件。
-
-
選取 ECID (ECID) 從 名稱空間 清單。 自動 設定檔識別碼 欄位已填入 對應identityMap的索引鍵ECID的第一個元素的ID.
-
選取「儲存」。
-
您剛才已根據您先前在本教學課程中建立的行動應用程式體驗事件結構描述建立事件設定。 此事件設定將使用您的特定事件型別(application.test
),因此只有從該行動應用程式起始的特定型別事件,才會觸發您在下一個步驟中建立的歷程。 在真實情境中,您可能會想要從外部服務傳送推播通知,但相同的概念適用:從外部應用程式傳送體驗事件至Experience Platform,該事件具有您可在這些事件觸發歷程之前用來套用條件的特定欄位。
建立歷程
您的下一個步驟是建立歷程,在收到適當事件時觸發推播通知的傳送。
-
在Journey Optimizer UI中,選取 歷程 從左側邊欄。
-
選取 建立歷程.
-
在 歷程屬性 面板:
-
輸入 名稱 例如,對於歷程
Luma - Test Push Notification Journey
. -
輸入 說明 例如,對於歷程
Journey for test push notifications in Luma mobile app
. -
確定 允許重新進入 已選取並設定 重新進入等待期 至 30 秒.
-
選取 確定.
-
-
回到歷程畫布,從 活動,拖放您的 LumaTestEvent 在它顯示的畫布上 選取進入事件或讀取對象活動.
- 在 事件: LumaTestEvent 面板,輸入 標籤,例如
Luma Test Event
.
- 在 事件: LumaTestEvent 面板,輸入 標籤,例如
-
從 動作 下拉式清單、拖放 推播 於 顯示在您的右側 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)的連結,位置在: 新增媒體. 如果這樣做,影像將成為推播通知的一部分。
-
若要儲存並離開編輯器,請選取 .
-
-
若要儲存並完成推播通知定義,請選取「 」 確定.
-
-
您的歷程應如下所示。 選取 發佈 以發佈並啟用您的歷程。
觸發推播通知
您已具備傳送推播通知的所有要素。 剩下的問題是如何觸發此推播通知。 本質上,與您之前看到的一樣:只要傳送具有適當有效負載的體驗事件(如所示)即可 活動)。
此時,您即將傳送的體驗事件未建構為建構簡單的XDM字典。 您即將使用 struct
代表推播通知裝載。 定義專用資料型別是在應用程式中實作建構體驗事件裝載的替代方式。
-
瀏覽至 Luma > Luma > 模型 > XDM > TestPushPayload 在Xcode專案導覽器中檢查程式碼。
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 在Xcode專案導覽器中,新增下列程式碼至
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
將裝載轉換為字典時。 這次的程式碼也考慮到了呼叫Adobe Experience Platform SDK的非同步層面,該環節使用Swift的並行模式,並基於await
和async
. -
瀏覽至 Luma > Luma > Views > General > 組態檢視 在「Xcode專案」導覽器中。 在推播通知按鈕定義中,新增下列程式碼,以傳送測試推播通知體驗事件裝載,以便在點選按鈕時觸發您的歷程。
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中建立歷程,在應用程式的使用者登入時傳送歡迎推播通知。 或使用者在應用程式中購買產品時的確認推播通知。 或輸入位置的地理柵欄(如您所見) 地點 課程)。
下一步: 建立和傳送應用程式內訊息