推送通知 [已弃用]
重要
第三方服务和推送通知弃用
App Services 中的第三方服务和推送通知已弃用,转而创建在函数中使用外部依赖项的 HTTP 端点。
Webhook 已重命名为 HTTPS 端点,行为没有发生变化。您应该迁移现有的 Webhook。
现有服务将继续运行到 9 月30 ,2025 。
由于第三方服务和推送通知现已弃用,因此,默认将其从 App Services 用户界面中删除。如果您需要管理现有的第三方服务或推送通知,可以执行以下操作以将配置重新添加到用户界面中:
在左侧导航栏中的 Manage(管理)部分下面,单击 App Settings(应用设置)。
启用 Temporarily Re-Enable 3rd Party Services(暂时重新启用第三方服务)旁边的切换开关,然后保存更改。
Overview
Atlas App Services 支持将移动(Android 和 iOS)应用与 Firebase Cloud Messaging (FCM) 服务集成以提供推送通知。您可以在 App Services 控制台中配置和发送通知消息,而客户端则向Firebase Cloud
Messaging (FCM)
注册以获取发送到特定主题的消息。
管理界面
通过App Services用户界面中的Push Notifications屏幕,您可以写入通知草稿、向用户发送通知以及定义通知规则。
Push Notifications(推送通知)屏幕中有四个标签页:
标签页名称 | 说明 |
---|---|
Draft | 在“草稿”标签页中,您可以查看草稿消息列表。对于草稿消息,可以:
|
Sent | Sent(已发送)标签页展示 App Services 已发送给注册客户端的消息。在这里,可以查看已发送消息的列表。对于已发送的消息,可以:
|
Config | 在 Config(配置)标签页中,提供 FCM 凭证(发件人 ID 和旧版 API 密钥)。 |
Rules | 您可以选择指定推送通知规则,以限制应用程序发送的推送通知类型。 |
发送推送通知
您可以从 Push Notifications(推送通知)页面发送新的推送通知。单击 Send New Notification(发送新通知)按钮打开 Send New Notification(发送新通知)对话框。在此对话框中,您将提供通知消息、标签和相关主题受众。
设置客户端以接收推送通知
在 Android 应用程序中集成推送通知的一般流程如下:
为 FCM 添加依赖项。
创建Push 实例。
使用 push.registerDevice() 或 push.registerDeviceAsync() 方法,以为推送通知注册客户端。
使用 FirebaseMessaging 的 subscribeToTopic() 订阅主题。
创建一个扩展抽象 FirebaseMessagingService 的类,并实现 onMessageReceived() 方法。该类处理与 FCM 的通信。
更新 Android 项目的
AndroidManifest.xml
文件,以注册您的应用程序的FirebaseMessagingService
派生类和接收器。
要查看 FCM 与 Android 客户端集成的最新信息和详细步骤,请参阅在 Android 上设置 Firebase Cloud Messaging 客户端应用程序 的官方文档 指南。
要在 iOS 应用中将 FCM 与 Atlas App Services 结合使用,请按照以下常规步骤进行操作:
通过 Apple 开发者会员中心创建有效的 Apple 推送通知服务 (APNs) 证书。
将 GoogleService-Info.plist 文件复制到您的 XCode 项目中。
配置 FCM 并添加您的 iOS 应用。在注册您的应用时,FCM 将返回一个注册令牌。
要查看有关 FCM 与 iOS 客户端集成的最新信息和详细步骤,请参阅在 iOS 上设置 Firebase Cloud Messaging 客户端应用官方指南。
规则模板
通知必须有具体标题
{ "%%args.notification.title": "Test Notification Please Ignore" }
通知必须针对特定主题
{ "%%args.to": "%%values.validTopics" }
通知只能发送给有限的一组用户 ID
{ "%%true": { "%function": { "name": "allUserIdsAreValid", "arguments": [ "%%args.userIds" ] } } }
注意
此模板调用名为allUserIdsAreValid
的示例函数,该函数执行以下操作:
接受
userIds
参数中提供的用户 ID 列表查询 MongoDB 以获取与当前用户 ID 相匹配的用户文档
将提供的电话号码与用户文档中列出的电话号码进行比较
返回比较的布尔值结果
exports = function(toPhone) { const mdb = context.services.get('mongodb-atlas'); const users = mdb.db('demo').collection('users'); const user = users.findOne({ _id: context.user.id }); return user.phoneNumber === toPhone; }
推送通知规则
要指定推送通知的规则,请单击 Push Notifications(推送通知)页面上的 Rules(规则)标签页。
注意
与 App Services 中的其他服务不同,推送通知的规则是可选的。默认情况下,允许所有推送通知。但是,一旦指定了规则,该规则施加的限制将生效。
推送通知规则允许以下参数。可以通过 "%%args"
扩展来访问它们:
字段 | 类型 | 说明 |
---|---|---|
userIds | 字符串数组。 | 消息收件人的用户 ID。 |
to | 字符串 | 消息的收件人。该值可以是设备的注册令牌、设备组的通知密钥或单个主题(前缀为 /topics/ )。 |
registrationTokens | 字符串数组。 | 接收组播消息的设备的注册令牌列表。 |
priority | 字符串 | |
collapseKey | 字符串 | 与可折叠消息关联的折叠键。 对应于通过 FCM 发送 HTTP JSON 消息的 collapse_key 选项。 请参阅 FCM HTTP 协议参考。 |
contentAvailable | 布尔 | 一个标志,用于确定是否在收到消息时唤醒空闲的客户端应用程序。 对应于通过 FCM 发送 HTTP JSON 消息的 content_available 选项。 请参阅 FCM HTTP 协议参考。 |
mutableContent | 布尔 | 一个标志,用于确定是否可以在向用户显示通知内容之前对其进行修改。 对应于通过 FCM 发送 HTTP JSON 消息的 mutable_content 选项。 请参阅 FCM HTTP 协议参考。 |
timeToLive | int | 设备离线时保留消息的最长时间(毫秒)。有效值为 0 至 2419200。 对应于通过 FCM 发送 HTTP JSON 消息的 |
data | JSON文档 | |
notification | JSON文档 |
通知文档字段
下表列出了可用作推送通知规则的允许字段的 notification
文档的字段。要访问规则中的其中一个字段,请使用 "%%args.notification.<field>"
。
字段 | 类型 | 说明 |
---|---|---|
title | 字符串 | 通知标题。 对应于通过 FCM 发送 HTTP JSON 消息的 title 选项。 请参阅 FCM HTTP 协议参考。 |
body | 字符串 | 通知正文。 对应于通过 FCM 发送 HTTP JSON 消息的 body 选项。 请参阅 FCM HTTP 协议参考。 |
sound | 字符串 | 收到通知时播放的声音。 对应于通过 FCM 发送 HTTP JSON 消息的 sound 选项。 请参阅 FCM HTTP 协议参考。 |
clickAction | 字符串 | 用户单击通知时要执行的操作。 对应于通过 FCM 发送 HTTP JSON 消息的 click_action 选项。 请参阅 FCM HTTP 协议参考。 |
bodyLocKey | 字符串 | 用于正文string本地化的键。 对应于通过 FCM 发送 HTTP JSON 消息的 body_loc_key 选项。 请参阅 FCM HTTP 协议参考。 |
bodyLocArgs | 字符串 | 用于替换正文string中用于本地化的格式说明符的string值。 对应于通过 FCM 发送HTTP JSON消息的 body_loc_args 选项。 请参阅 FCM HTTP协议参考。 |
titleLocKey | 字符串 | 用于标题string本地化的键。 对应于通过 FCM 发送 HTTP JSON 消息的 title_loc_key 选项。 请参阅 FCM HTTP 协议参考。 |
titleLocArgs | 字符串 | 用于替换标题string中用于本地化的格式说明符的string值。 对应于通过 FCM 发送 HTTP JSON 消息的 title_loc_args 选项。 请参阅 FCM HTTP 协议参考。 |
icon | 字符串 | 仅适用于安卓系统。 通知图标。 对应于通过 FCM 发送HTTP JSON消息的 icon 选项。 请参阅 FCM HTTP协议参考。 |
color | 字符串 | 仅适用于安卓系统。 指示 #rrggbb 格式中的图标颜色。 对应于通过 FCM 发送 HTTP JSON 消息的 color 选项。 请参阅 FCM HTTP 协议参考。 |
tag | 字符串 | 仅适用于安卓系统。 如果指定,则每个通知不会产生新条目,而是用指定标签替换现有条目。 如果未设置,则每个通知都会产生一个新条目。 对应于通过 FCM 发送 HTTP JSON 消息的 tag 选项。 请参阅 FCM HTTP 协议参考。 |
badge | 字符串 | 仅适用于 iOS。 gclient 应用主页图标上的徽章。 对应于通过 FCM 发送 HTTP JSON 消息的 badge 选项。 请参阅 FCM HTTP 协议参考。 |