创建和发送推送通知
了解如何使用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推送凭据时,将在下一个练习中使用它。 -
记下 密钥ID。 当您配置Journey Optimizer推送凭据时,将在下一个练习中使用它。
-
记下 团队ID。 当您配置Journey Optimizer推送凭据时,将在下一个练习中使用它。 团队ID可在屏幕右上角登录名旁边找到。
其他文档可在此处找到。
以下步骤并非特定于Adobe Experience Cloud,而是旨在引导您完成Firebase配置。
-
访问Firebase控制台。
-
选择 创建Firebase项目。
- 输入 项目名称。
- 在 创建项目 中选择 继续 - 让我们为您的项目起一个名称。 例如:
Luma Android App.
- 在Firebase中禁用 Gemini,并在 创建项目 中选择 继续 - Firebase项目的AI帮助。
- 为此项目 禁用 Google Analytics,并在 为您的Firebase项目创建项目 - Google Analytics 中选择 继续。
- 选择 创建项目。
- 项目就绪后,选择 继续。
-
返回到Firebase控制台,确保在顶部选择您的项目。 例如,Luma Android应用程序。
-
选择
-
在 项目设置 中,选择 添加应用程序。
-
在 将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代表您发送推送通知。 您可以在数据收集或Journey Optimizer中添加推送凭据。 在本教程中,将使用数据收集界面。 然后,推送凭据将链接到Journey Optimizer中的渠道配置。
-
在数据收集中,选择 应用程序表面。
-
选择 创建应用程序表面。
-
在 创建应用程序表面 界面中:
-
输入 名称。
-
如果要发送Apple iOS的推送通知,请选择 iOS。
- 输入您的 应用程序ID,例如
com.adobe.luma.tutorial.swiftui
。 - 选择沙盒(可选)。
- 启用 推送凭据。
- 将保存的
.p8
私钥文件拖放到 上拖放您的文件。 - 输入 密钥ID。
- 输入 团队ID。
- 输入您的 应用程序ID,例如
-
如果要发送Android的推送通知,请选择 Android。
- 输入您的 应用程序ID,例如
com.adobe.luma.tutorial.android
。 - 选择沙盒(可选)。
- 启用 推送凭据。
- 将保存的
luma-android-app-firebase-adminsdk-xxxx-xxxxxxxx.json
文件拖放到 上拖放您的文件。
- 输入您的 应用程序ID,例如
-
-
选择 Save。如果所有信息都正确,则表示您已经创建了推送凭据来与渠道配置关联。
在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用户界面中,选择 配置。
-
选择
-
选择 保存。
-
从左侧导航中选择 推送调试。
-
选择 验证设置 选项卡。
-
从 客户端 列表中选择您的设备。
-
确认您没有收到任何错误。
-
选择 发送测试推送 选项卡。
-
(可选)更改 Title 和 Body 的默认详细信息,并确保提供应用程序需要的所有参数,如 Advanced > Notification Channel(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 选项卡并选择 目标 部分底部的 + 图标。
-
系统将提示您为新目标选择模板。 选择 通知服务扩展,然后选择 下一步。
-
在下一个窗口中,使用
NotificationExtension
作为扩展的名称,然后单击 完成 按钮。
现在,您应该将推送通知扩展添加到应用程序中,类似于以下屏幕。
已为推送通知设置了Android Studio项目。 您无需执行其他步骤即可为推送通知启用Android版本的Luma应用程序。 有关详细信息,请参阅关于通知。
Android推送通知要求您在应用程序中和在发送推送通知时定义通知渠道id。 Android Luma应用中使用的渠道通知ID为LUMA_CHANNEL ID
。
在应用程序中实施Journey Optimizer
如前面的课程中所述,安装移动标记扩展仅提供配置。 接下来,您必须安装并注册消息传送SDK。 如果未清除这些步骤,请查看安装SDK部分。
-
在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
中将override fun onCreate()
API添加到class LumaAplication : Application
中的FirebaseMessaging.getInstance().token.addOnCompleteListener
函数。code language-kotlin // Send push token to Mobile SDK MobileCore.setPushIdentifier(token)
此函数检索与安装应用程序的设备特有的设备令牌。 然后,使用您设置的依赖于Firebase Cloud Messaging (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 和 时间戳)。 您可以使用下拉列表在 Selected、All 和 Primary 之间切换,或者使用
- 已识别应用程序(ID),
- 事件类型(eventType),
- 主要(主要)。
然后选择 确定。
-
选择
-
在 添加事件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 秒。
-
选择 确定。
-
-
返回历程画布,从 EVENTS,将
- 在 Events: LumaTestEvent 面板中,输入 标签,例如
Luma Test Event
。
- 在 Events: 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)的链接。 如果这样做,则图像是推送通知的一部分。 请注意,如果这样做,您需要注意在移动设备应用程序中正确处理图像。
-
要保存并退出编辑器,请选择
-
-
要保存并完成推送通知定义,请选择 确定。
-
-
您的历程应如下所示。 选择 发布 以发布并激活您的历程。
触发推送通知
您已具备发送推送通知的所有要素。 剩下的问题是如何触发此推送通知。 实质上,它与您之前看到的相同:只需发送具有适当有效负载的体验事件(如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() ?? [:] ) }
此代码使用提供给函数(
testPushPayload
和applicationId
)的参数创建一个eventType
实例,然后在将有效负载转换为字典时调用sendExperienceEvent
。 此代码还通过使用Swift的基于await
和async
的并发模型来考虑调用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 ) }
使用应用程序进行验证
要验证推送通知事件和历程,请执行以下操作:
-
使用
-
转到 设置 选项卡。
-
点按 推送通知。
您会看到推送通知显示在应用程序顶部。
-
使用
-
转到 设置 选项卡。
-
点按 推送通知。
您会看到推送通知显示在应用程序顶部。
如何在应用程序本身中处理和显示推送通知不属于此部分的主题。 每个平台都实施处理并以特定方式显示通知。 有关详细信息,请参阅:
- 对于iOS: 用户通知
- 对于Android: Cloud Messaging
后续步骤
现在,您应该拥有在应用程序中处理推送通知的所有工具。 例如,您可以在Journey Optimizer中构建一个历程,当应用程序用户登录时,该历程会发送欢迎推送通知。 或确认推送通知(当用户在该应用程序中购买产品时)。 或输入位置的地理围栏(如您在位置课程中所见)。
下一步: 创建并发送应用程序内消息