建立和傳送推播通知
瞭解如何使用Experience Platform Mobile SDK和Journey Optimizer為行動應用程式建立推播通知。
Journey Optimizer可讓您建立歷程,並傳送訊息給目標對象。 在使用Journey Optimizer傳送推播通知之前,您必須確保有適當的設定和整合。 若要瞭解Journey Optimizer中的推播通知資料流程,請參閱檔案。
先決條件
-
成功建立並執行應用程式,且已安裝並設定SDK。
-
為Adobe Experience Platform設定應用程式。
-
存取Journey Optimizer和足夠的許可權。 此外,您需要足夠的許可權才能使用下列Journey Optimizer功能。
- 建立推播認證。
- 建立推播通道設定。
- 建立歷程。
- 建立訊息。
- 建立訊息預設集。
-
針對iOS,為 付費Apple開發人員帳戶,其存取許可權足以建立憑證、識別碼和金鑰。
-
Android的Google開發人員帳戶,具有建立憑證和金鑰的足夠存取權。
-
實體iOS或Android裝置或模擬器以進行測試。
學習目標
在本課程中,您將學習
- 向Apple推播通知服務(APN)註冊應用程式ID。
- 在Journey Optimizer中建立管道設定。
- 更新您的結構描述以包含推送訊息欄位。
- 安裝及設定Journey Optimizer標籤擴充功能。
- 更新您的應用程式以註冊Journey Optimizer標籤擴充功能。
- 驗證Assurance中的設定。
- 從Assurance傳送測試訊息
- 在Journey Optimizer中定義您自己的推播通知事件、歷程和體驗。
- 從應用程式內傳送您自己的推播通知。
設定
建立推播認證
針對推播通知,您必須先註冊推播通知的應用程式。
下列步驟並非特定於Adobe Experience Cloud,而是旨在引導您完成APN設定。
-
在Apple開發人員入口網站中,瀏覽至 金鑰。
-
若要建立金鑰,請選取 +。
-
提供 金鑰名稱。
-
選取 Apple推播通知服務 (APN),然後選取 設定。
- 在 設定索引鍵 畫面中,從 環境 下拉式選單中選取 沙箱與生產。
- 選取「儲存」。
-
選取 繼續。
-
檢閱組態並選取 註冊。
-
下載
.p8
私密金鑰。 當您設定Journey Optimizer推送認證時,它將在下一個練習中使用。 -
記下 金鑰識別碼。 當您設定Journey Optimizer推送認證時,它將在下一個練習中使用。
-
記下 團隊識別碼。 當您設定Journey Optimizer推送認證時,它將在下一個練習中使用。 團隊ID可在畫面右上角找到,位於您的登入名稱旁。
其他檔案可在此處找到。
下列步驟並非特定於Adobe Experience Cloud,而是設計用來引導您完成Firebase設定。
-
存取Firebase主控台。
-
選取 建立Firebase專案。
- 輸入 專案名稱。
- 在 建立專案 中選取 繼續 - 讓我們以您專案的名稱 開始。 例如,
Luma Android App.
- 停用Firebase中的 Gemini,並在 建立專案 中選取 繼續 - 您的Firebase專案的AI協助。
- 停用此專案的 Google Analytics,並選取 為您的Firebase專案建立專案 - Google Analytics 中的 繼續。
- 選取 建立專案。
- 專案準備就緒後,選取 繼續。
-
返回Firebase主控台,確定您的專案已選取在頂端。 例如,Luma Android App。
-
選取
-
在 專案設定 中,選取 新增應用程式。
-
在 將Firebase新增至您的應用程式 中,選取 Android 作為平台。
-
在 將Firebase新增至您的Android應用程式中:
-
在步驟1,註冊應用程式:
- 輸入Android套件名稱,類似於應用程式識別碼。 例如
com.adobe.luma.tutorial.android
。 - 輸入選用的 應用程式暱稱。
- 選取 註冊應用程式。
- 輸入Android套件名稱,類似於應用程式識別碼。 例如
-
在步驟2中,下載然後新增設定檔。
- 選取
google-services.json
檔案取代為此新應用程式設定產生的檔案版本。
已在範例應用程式中注意其他步驟。
- 選取
-
您的畫面應如下所示:
-
-
在 專案設定 中,選取 服務帳戶。
-
選取 產生新的私密金鑰。 已產生
luma-android-app-firebase-adminsdk-xxxx-xxxxxxxx.json
檔案。 將此檔案儲存在安全的地方,因為您稍後需要檔案。
如需詳細資訊,請參閱Firebase開發人員檔案。
在資料收集中新增應用程式推送認證
接下來,您需要新增行動應用程式推送認證,以授權Adobe代表您傳送推送通知。 您可以在Data Collection或Journey Optimizer中新增推送認證。 在本教學課程中,將會使用資料收集介面。 然後,推送認證會連結至Journey Optimizer中的管道設定。
-
在資料收集中,選取 應用程式表面。
-
選取 建立應用程式表面。
-
在 建立應用程式表面 介面中:
-
輸入 名稱。
-
若要傳送Apple iOS的推播通知,請選取 iOS。
- 輸入您的 應用程式識別碼,例如
com.adobe.luma.tutorial.swiftui
。 - 選取沙箱(選用)。
- 啟用 推送認證。
- 將儲存的
.p8
私密金鑰檔案拖放到 拖放您的檔案。 - 輸入 金鑰識別碼。
- 輸入 團隊識別碼。
- 輸入您的 應用程式識別碼,例如
-
若要傳送Android的推播通知,請選取 Android。
- 輸入您的 應用程式識別碼,例如
com.adobe.luma.tutorial.android
。 - 選取沙箱(選用)。
- 啟用 推送認證。
- 將儲存的
luma-android-app-firebase-adminsdk-xxxx-xxxxxxxx.json
檔案拖放到 拖放您的檔案。
- 輸入您的 應用程式識別碼,例如
-
-
選取 「儲存」。如果所有資訊皆正確,表示您已建立推送認證以與管道設定建立關聯。
在Journey Optimizer中建立推送的管道設定
建立推送認證設定後,您必須建立設定,才能從Journey Optimizer傳送推送通知。
-
在Journey Optimizer介面中,開啟 頻道 > 一般設定 > 頻道設定 功能表,然後選取 建立頻道設定。
-
輸入設定的名稱和說明(選擇性)。
note note NOTE 名稱必須以字母(A-Z)開頭。 它只能包含英數字元。 您也可以使用底線 _
、點.
和連字號-
字元。 -
若要將自訂或核心資料使用標籤指派給組態,您可以選取 管理存取權。 進一步瞭解物件層級存取控制(OLAC)。
-
選取 推播 頻道。
-
選取 行銷動作,以使用此設定來關聯同意原則與訊息。 所有與行銷動作相關的同意政策都會被用來尊重客戶的偏好設定。 進一步瞭解行銷動作。
-
選擇您的 平台。 您可以針對頻道設定同時設定 iOS 和 Android。
-
選取您先前用來定義推送認證的適當 應用程式ID。 例如,適用於iOS的 com.adobe.luma.tutorial.swiftui 和適用於Android的 com.adobe.luma.tutorial.android。 綠色的
-
選取 提交 以儲存您的變更。
更新資料流設定
為確保將從您的行動應用程式傳送至Edge Network的資料轉送至Journey Optimizer,請更新您的Experience Edge設定。
-
在資料收集UI中,選取 資料串流,然後選取您的資料串流,例如 Luma Mobile App。
-
選取
-
在 資料串流 >
-
如果尚未選取,請從 設定檔資料集 中選取 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中,選取 設定。
-
選取
-
選取「儲存」。
-
從左側導覽中選取 推播偵錯。
-
選取「驗證安裝程式」標籤。
-
從 使用者端 清單中選取您的裝置。
-
確認您沒有收到任何錯誤。
-
選取 傳送測試推播 索引標籤。
-
(選擇性)變更 Title 和 Body 的預設詳細資料,並確保您提供應用程式預期的所有引數,例如 進階 > 通知頻道 (Android的必要專案,例如
LUMA_CHANNEL_ID
)。 -
選取
-
檢查 測試結果。
-
您應該會看到測試推播通知出現在應用程式中。


簽署
若要更新應用程式的簽署:
-
前往Xcode中的應用程式。
-
在專案導覽器中選取 Luma。
-
選取 Luma 目標。
-
選取「簽署與功能」標籤。
-
設定 自動管理簽署、團隊 和 套件組合識別碼,或使用您特定的Apple開發佈建詳細資料。
note important IMPORTANT 請確定您使用_唯一_組合識別碼並取代 com.adobe.luma.tutorial.swiftui
組合識別碼,因為每個組合識別碼必須是唯一的。 一般而言,您會使用反向DNS格式作為套件組合ID字串,例如com.organization.brand.uniqueidentifier
。 例如,此教學課程的完成版本使用com.adobe.luma.tutorial.swiftui
。
將推播通知功能新增至您的應用程式
-
在Xcode中,從 Luma TARGETS 清單中選取,選取 簽署與功能 標籤,選取 +功能 按鈕,然後選取 推播通知。 此選取範圍可讓您的應用程式接收推播通知。
-
接下來,您必須將通知擴充功能新增至應用程式。 返回 General 標籤,並選取 TARGETS 區段底部的 + 圖示。
-
系統會提示您為新目標選取範本。 選取 通知服務延伸模組,然後選取 下一步。
-
在下一個視窗中,使用
NotificationExtension
作為擴充功能的名稱,然後按一下 完成 按鈕。
現在,您應該會在應用程式中新增推播通知擴充功能,類似於下列畫面。
Android Studio專案已設定為推送通知。 您不需要執行額外的步驟,即可啟用Android版本的Luma應用程式以使用推播通知。 如需詳細資訊,請參閱關於通知。
Android推播通知需要您在應用程式中及傳送推播通知時,定義通知通道id。 Android Luma應用程式中使用的管道通知ID為LUMA_CHANNEL ID
。
在應用程式中實作Journey Optimizer
如先前課程所述,安裝行動標籤擴充功能僅會提供設定。 接下來,您必須安裝並註冊傳訊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 ]
-
在Android Studio中,確定aepsdk-messing-android是 Android:app ChevronDown Gradle指令碼
-
在Android Studio專案導覽器中,導覽至 Android
-
請確定
com.adobe.marketing.mobile.Messaging
是匯入清單的一部分。import import com.adobe.marketing.mobile.Messaging
-
請確定
Messaging.EXTENSION
是您註冊的擴充功能陣列的一部分。code language-kotlin val extensions = listOf( Identity.EXTENSION, Lifecycle.EXTENSION, Signal.EXTENSION, Edge.EXTENSION, Consent.EXTENSION, UserProfile.EXTENSION, Places.EXTENSION, Messaging.EXTENSION, Optimize.EXTENSION, Assurance.EXTENSION )
註冊推播通知的裝置代號
您必須註冊裝置代號才能使用推播通知。
-
導覽至Xcode專案導覽器中的 Luma > Luma > AppDelegate。
-
將
MobileCore.setPushIdentifier
API新增至func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data)
函式。code language-swift // Send push token to Mobile SDK MobileCore.setPushIdentifier(deviceToken)
此函式擷取安裝應用程式的裝置所獨有的裝置代號。 然後使用您已設定的設定來設定推播通知傳送的代號,該設定依賴Apple的推播通知服務(APN)。
-
在Android Studio專案導覽器中,導覽至 Android
-
將
MobileCore.setPushIdentifier
API新增至override fun onCreate()
中class LumaAplication : Application
的FirebaseMessaging.getInstance().token.addOnCompleteListener
函式。code language-kotlin // Send push token to Mobile SDK MobileCore.setPushIdentifier(token)
此函式擷取安裝應用程式的裝置所獨有的裝置代號。 然後,使用您已設定的且依賴Firebase雲端通訊(FCM)的設定,設定推播通知傳送的代號。
MobileCore.updateConfigurationWith(configDict: ["messaging.useSandbox": true])
會判斷推播通知是使用APNs沙箱或生產伺服器來傳送推播通知。 在模擬器或裝置上測試您的應用程式時,請確定messaging.useSandbox
設為true
以便您接收推播通知。 使用Apple的Testflight部署應用程式以進行生產測試時,請確定您將messaging.useSandbox
設為false
,否則您的生產應用程式將無法接收推播通知。>Firebase Cloud Messaging (FCM) 不 支援推播通知的沙箱概念。
建立您自己的推播通知
若要建立自己的推播通知,您必須在Journey Optimizer中定義觸發歷程的事件,負責傳送推播通知。
更新您的結構描述
您即將定義新的事件型別,目前無法當作結構描述中定義之事件清單的一部分使用。 您稍後在觸發推播通知時會使用此事件型別。
-
在Journey Optimizer UI中,從左側邊欄選取 結構描述。
-
在索引標籤列中選取 瀏覽。
-
選取您的結構描述,例如 Luma Mobile App Event Schema 以開啟它。
-
在架構編輯器中:
-
選取 eventType 欄位。
-
在 欄位屬性 窗格中,向下捲動以檢視事件型別的可能值清單。 選取 新增列,並將
application.test
新增為 VALUE,並將Test event for push notification
新增為DISPLAY NAME
。 -
選取 「套用」。
-
選取「儲存」。
-
定義事件
Journey Optimizer中的事件可讓您觸發傳送訊息的歷程,例如推播通知。 如需詳細資訊,請參閱關於事件。
-
在Journey Optimizer UI中,從左側邊欄選取 組態。
-
在 儀表板 畫面中,選取 事件 方塊中的 管理 按鈕。
-
在 事件 畫面中,選取 建立事件。
-
在 編輯事件event1 窗格中:
-
輸入
LumaTestEvent
作為事件的 Name。 -
提供 描述,例如
Test event to trigger push notifications in Luma app
。 -
選取您先前在從結構描述 清單建立XDM結構描述 中建立的行動應用程式體驗事件結構描述,例如 Luma Mobile App Event Schema v.1。
-
選取
在 欄位 對話方塊中,確定已選取下列欄位(在永遠選取的預設欄位之上(_id、id 和 timestamp)。 您可以使用下拉式清單在 已選取、全部 與 主要 之間切換,或使用
- 識別的應用程式(識別碼),
- 事件型別(eventType),
- 主要(主要)。
然後選取 確定。
-
選取
-
在 新增事件識別碼條件 對話方塊中,將 事件型別(eventType) 拖放到 將元素拖放到這裡。
-
在彈出視窗中,捲動到底部並選取 application.test (這是您先前新增至事件型別清單的事件型別,作為更新您的結構描述的一部分)。 然後向上捲動到頂端並選取 確定。
-
選取 確定 以儲存條件。
-
-
從 名稱空間 清單中選取 ECID (ECID)。 設定檔識別碼 欄位自動填入對應identityMap 之索引鍵ECID的第一個專案識別碼。
-
選取「儲存」。
-
您剛才已根據您先前在本教學課程中建立的行動應用程式體驗事件結構描述建立事件設定。 此事件設定將會使用您的特定事件型別(application.test
)篩選傳入的體驗事件,因此只有從該行動應用程式起始的特定型別事件,才會觸發您在下一個步驟中建立的歷程。 在真實情境中,您可能會想要從外部服務傳送推播通知。 不過,適用相同的概念:從外部應用程式傳送體驗事件至Experience Platform,其中包含您可在事件觸發歷程之前用來套用條件的特定欄位。
建立歷程
您的下一個步驟是建立歷程,在收到適當事件時觸發推播通知的傳送。
-
在Journey Optimizer UI中,從左側邊欄選取 歷程。
-
選取 建立歷程。
-
在 歷程屬性 面板中:
-
輸入歷程的 名稱,例如
Luma - Test Push Notification Journey
。 -
輸入歷程的 描述,例如
Journey for test push notifications in Luma mobile app
。 -
請確定已選取 允許重新進入,並將 重新進入等待期間 設定為 30 秒。
-
選取 確定。
-
-
回到歷程畫布,從 EVENTS,將
- 在 事件: LumaTestEvent 面板中,輸入 標籤,例如
Luma Test Event
。
- 在 事件: LumaTestEvent 面板中,輸入 標籤,例如
-
從 ACTIONS 下拉式清單中,將
-
提供 標籤,例如
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
。 定義專用資料型別是在應用程式中實作建構體驗事件裝載的替代方式。
請注意,僅供說明用途,您會從應用程式內傳送推播通知。 較典型的案例是您從其他應用程式或服務傳送體驗事件(觸發推播通知歷程)。
-
導覽至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() ?? [:] ) }
此程式碼會使用提供給函式(
testPushPayload
和applicationId
)的引數建立eventType
執行個體,然後在將裝載轉換至字典時呼叫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) }
-
在Android Studio導覽器中導覽至 Android
code language-kotlin import com.google.gson.annotations.SerializedName data class TestPushPayload( @SerializedName("application") val application: Application, @SerializedName("eventType") val eventType: String ) { fun asMap(): Map<String, Any> { return mapOf( "application" to application.asMap(), "eventType" to eventType ) } } data class Application( @SerializedName("id") val id: String ) { fun asMap(): Map<String, Any> { return mapOf( "id" to id ) } }
程式碼可呈現您要傳送以觸發測試推播通知歷程的下列簡單裝載。
code language-json { "eventType": string, "application" : [ "id": string ] }
-
導覽至Android Studio導覽器中的 Android
func sendTestPushEvent(applicationId: String, eventType: String)
:code language-kotlin // Create payload and send experience event val testPushPayload = TestPushPayload( Application(applicationId), eventType ) sendExperienceEvent(testPushPayload.asMap())
此程式碼會使用提供給函式(
testPushPayload
和applicationId
)的引數建立eventType
執行個體,然後在將裝載轉換為對應時呼叫sendExperienceEvent
。 -
在Android Studio導覽器中,導覽至 Android
code language-kotlin // Setting parameters and calling function to send push notification val eventType = testPushEventType val applicationId = context.packageName scope.launch { MobileSDK.shared.sendTestPushEvent( applicationId, eventType ) }
使用您的應用程式進行驗證
若要驗證推播通知事件和歷程:
-
使用
-
前往 設定 標籤。
-
點選 推播通知。
您會看到推播通知出現在應用程式頂端。
-
使用
-
前往 設定 標籤。
-
點選 推播通知。
您會看到推播通知出現在應用程式頂端。
如何在應用程式本身中處理和顯示推播通知,不在本節的主題之內。 每個平台都會實作處理,並以特定方式顯示通知。 如需詳細資訊,請參閱:
後續步驟
您現在應該擁有在應用程式中處理推播通知的所有工具。 例如,您可以在Journey Optimizer中建立歷程,在應用程式的使用者登入時傳送歡迎推播通知。 或使用者在應用程式中購買產品時的確認推播通知。 或輸入地點的地理柵欄(如您在地點課程中所見)。
下一步: 建立並傳送應用程式內訊息