跳到主要内容

配置推送通知服务

推送通知服务用于向用户发送有关 RainMaker 的事件通知。在安卓和 iOS 中使用这一服务分别需要在通知设置中配置 FCM 和 APNS 环境。

在安卓中配置推送通知服务

配置过程分为两步:需要在 Google Firebase 服务端以及安卓应用代码中进行配置。

Firebase 服务端配置

  1. 为安卓应用配置推送通知服务,请参阅推送通知设置

  2. 前往 Firebase 控制台,选择你的项目。在左侧导航栏中点击齿轮图标,然后选择 Project settings

    firebase8

  3. 选择 Service accounts。在 Firebase Admin SDK 下,点击 Generate new private key
    此操作将下载一个包含所有项目详细信息(包括私钥)的文件。

    firebase9

  4. 用管理员账号登录 RainMaker 管理面板。打开 Deployment Settings > Push Notifications

    push_notification12

  5. 创建新的平台应用程序。选择类型为 Google Notification

    push_notification13

  6. 将步骤 3 中下载的文件中的 Private Key 内容粘贴到此处。点击 Save

    push_notification14

  7. 现在可以启用推送通知服务了,具体启用步骤请参阅启用通知推送

安卓应用代码层面的配置

  1. 安卓应用必须在 Firebase 中注册后,推送通知才能工作。如果尚未注册,可以按以下步骤注册。

  2. 点击 Download google-services.json 获取 Firebase 安卓配置文件 (google-services.json)。用下载好的文件替换应用中 app 模块 (应用级) 目录下现有的 google-services.json 文件。

    firebase10

  3. 其他设置保持不变。

    firebase11

  4. 继续进行推送通知配置

Firebase 设置

要继续配置,需要使用谷歌账号登录 Firebase 控制台。

创建 Firebase 项目

  1. Firebase 控制台中点击 Create a project,然后选择或输入 Project name

    firebase1

    firebase2

    注意

    如果已有谷歌云项目,可以在下拉菜单中选择该项目,并将 Firebase 资源添加至该项目。

  2. (可选)如果你正在创建新项目,可以编辑 Project ID。如需使用特定标识符,必须在此设置步骤中修改项目 ID。Firebase 会自动为 Firebase 项目分配唯一 ID。

    注意

    在 Firebase 为项目配置完资源后,将无法再更改项目 ID。

  3. 点击 Continue

    firebase3

  4. 点击 Create project(如果你使用现有的谷歌云项目,则点击 Add Firebase)。

    firebase4

    备注

    更多信息请参见 Firebase 网站上的创建 Firebase 项目

在 Firebase 中注册应用

要在安卓应用中使用 Firebase,必须先在 Firebase 项目中注册该应用。注册应用通常也称为将应用“添加”到项目。

备注

了解 Firebase 项目文档说明了在 Firebase 项目中添加应用的最佳实践与注意事项,包括如何处理多个构建变体。

  1. 前往 Firebase 控制台

  2. Project Overview 页面中央,点击安卓图标 (plat_android) 或 Add an app to get started,启动设置流程。

    firebase5

  3. Android package name 字段输入应用包名 (application id)。点击 Register app

    firebase6

    备注

    请确保输入应用实际使用的包名。包名应区分大小写,并且在此安卓应用注册到 Firebase 项目后将无法更改。

    备注

    更多信息请参见 Firebase 网站上的章节:在 Firebase 中注册您的应用

在 iOS 中配置推送通知服务

配置过程分为两步:需要在苹果开发者控制台以及 iOS 应用代码中进行配置。

苹果开发者控制台推送通知设置

  1. 登录苹果开发者账号。

    push_notification1

  2. 启用此服务需要 App ID。若尚未创建,请前往苹果开发者控制台创建新账号,具体步骤请参阅在苹果开发者控制台创建应用 ID

  3. 打开 Certificates 一栏,点击 +

    push_notification2

  4. 为推送通知服务创建新的证书,请选择 Apple Push Notification service SSL (Sandbox & Production) 并点击 Continue

    push_notification3

  5. 选择应用程序的 App ID 并点击 Continue

    push_notification4

  6. 接下来需要创建证书签名请求 (CSR)。

    push_notification5

  7. 打开 Keychain Access 工具栏,选择 Certificate Assistant > Request a Certificate From a Certificate Authority

    push_notification6

  8. Certificate Assistant 对话框中,找到 User Email Address 一栏并输入电子邮件地址,CA Email Address 一栏无需填写。选择 Saved to disk 并点击 Continue 以保存证书。

    push_notification7

  9. 上传 CSR。

    push_notification8

  10. 证书已经成功创建,可以使用 Keychain Access 下载并查看。

    push_notification9

  11. Keychain Access 导出证书,格式为 p12

    push_notification10

    无需设置密码来保护导出的证书。

    push_notification16

  12. 启动通知推送需要使用 SSL 证书和对应的私钥。

    使用以下命令可获取 SSL 证书:

    openssl pkcs12 -in yourP12Certificate.p12 -clcerts -nokeys

    使用以下命令可获取私钥:

    openssl pkcs12 -in yourP12Certificate.p12 -nocerts -nodes

  13. 用管理员账号登录 RainMaker 管理面板。打开 Deployment Settings > Push Notifications

    push_notification12

  14. 创建新的平台应用程序,选择类型为 Apple Notification (APNS)。

    push_notification13

  15. 将步骤 12 中获取的 SSL 证书和私钥粘贴至此处,点击 Save

    push_notification11

    备注

    该证书也可用于沙盒和生产环境。沙盒环境用于测试通知和调试,APNS 用于分发。你可以重复步骤 13 和 14,选择类型为 APNS_SANDBOX (APNS_SANDBOX),为沙盒环境设置推送通知。

  16. 现在可以启用推送通知服务了,具体启用步骤请参阅启用通知推送

在 ESP RainMaker 管理面板启用推送通知

  1. 用管理员账号登录 RainMaker 管理面板。打开 Deployment Settings > Push Notifications

    push_notification12

  2. 使用切换键启用推送通知。你可以自定义启用推送通知的事件。

    push_notification15

    备注

    使用同一个切换键也可以禁用推送通知功能。

iOS 应用代码层面的推送通知设置

项目默认启用推送通知。ios/Notification/ESPNotificationModule.swift 中的 getNotificationPlatform() 方法应根据构建配置返回平台标识字符串:

  • 生产构建:返回 APNS
  • 开发/沙盒构建:返回 APNS_SANDBOX

后端会使用该平台标识符识别通知的平台类型。该方法应检查构建配置(DEBUG 或 RELEASE),并返回相应的值:

@objc(getNotificationPlatform:reject:)
func getNotificationPlatform(resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
// 开发/沙盒构建 – 返回 APNS_SANDBOX
resolve("APNS_SANDBOX")
// 生产构建 – 返回 APNS
resolve("APNS")
}

On this page