跳转到主要内容
要向通过 Google Play Store 下载您 Android 应用的用户发送推送通知,您必须创建一个 Firebase Cloud Messaging (FCM) 服务账户私钥并将其上传到 OneSignal。
本说明不适用于:
  • Web Push。 Android 设备无需 FCM 服务账户即可订阅您的网站或 PWA。请参阅 Web push 设置
  • 通过华为应用市场分发的华为应用。 请参阅 华为授权

要求


创建 Firebase 服务账户私钥 \

1

创建或打开您的 Firebase 项目

转到您的 Firebase 控制台,创建或选择一个项目。
Firebase 控制台显示可用项目列表
2

启用 Firebase Cloud Messaging API V1

项目设置中,选择 Cloud Messaging 选项卡。
Firebase 项目设置显示 Cloud Messaging 选项卡,Firebase Cloud Messaging API (V1) 状态为已启用
检查 Firebase Cloud Messaging API (V1) 状态:
  • 如果显示已启用(绿色对勾),请继续下一步。
  • 如果显示已禁用,请点击 3 点菜单 > 在 Google Cloud Console 中管理 API。在 Google Cloud Console 中点击启用,等待出现绿色对勾和 “API Enabled” 字样。
Google Cloud Console 上的 Firebase Cloud Messaging API 页面显示 API Enabled 状态和绿色对勾
此时正适合检查您的 Firebase 服务账户是否具有所需权限:
  • cloudmessaging.messages.create
  • firebase.projects.get
新创建的 Firebase 项目通常默认就拥有这些权限。如果不确定或使用的是较旧的项目,请在继续之前先检查。详情请参阅我如何检查我的服务账户权限?
3

生成新的私钥

回到项目设置,选择服务账户选项卡,点击生成新的私钥
Firebase 项目设置中的服务账户选项卡,显示生成新的私钥按钮
在弹窗中点击生成密钥进行确认。
Firebase 为服务账户生成新私钥的确认对话框
下载的私钥包含敏感凭据。请勿共享或将其提交到版本控制中。
.json 文件保存在安全的位置。下一节会用到它。

将服务账户私钥上传到 OneSignal

在您的 OneSignal 控制台中:
1

打开 Android 设置

转到设置 > 推送和应用内消息 > 平台 > Google Android (FCM)点击激活(初次设置)或设置(如果 Android 已配置)。
OneSignal 推送和应用内消息设置显示平台选项卡,包含 Google Android (FCM) 磁贴和设置按钮
2

上传您的服务账户私钥

点击选择文件,选择您在上一节中保存的 .json 私钥。
OneSignal Google Android (FCM) 配置屏幕,包含 Service Account JSON 文件上传字段和选择文件按钮
3

保存并继续

点击保存并继续。OneSignal 会验证私钥,并将您带到设置流程的下一步,在那里您将选择 SDK。
如果控制台显示 Invalid request 或其他错误,您的服务账户可能缺少一个或多个所需角色。请参阅我如何检查我的服务账户权限?
您的 OneSignal 应用现已连接到 Firebase Cloud Messaging (V1)。接下来,按照移动 SDK 设置中适用于您所用 SDK 的说明,在您的应用中安装并初始化 OneSignal。

常见问题

我如何检查我的服务账户权限? \

服务账户权限在 Google Cloud Console 中管理,而不是在 Firebase 控制台中。您上传到 OneSignal 的私钥所对应的服务账户必须同时具有:
  • cloudmessaging.messages.create——由 Firebase Cloud Messaging API Adminroles/firebasecloudmessaging.admin)授予。
  • firebase.projects.get——由 Firebase Viewerroles/firebase.viewer)授予。
Firebase Adminroles/firebase.admin)、EditorOwner 这样更宽泛的角色也包含这两项权限,同样满足要求。对于仅用于 OneSignal 的服务账户,建议优先使用上述精细的角色组合,以限制私钥泄露时的影响。 如果在上传服务账户私钥后 OneSignal 控制台显示 Invalid request,缺少角色是最常见的原因。
1

在 Google Cloud Console 中打开 IAM

登录 Google Cloud Console,选择与您的 Firebase 应用关联的项目,然后转到 IAM 和管理 > IAM
2

找到您的服务账户

将主体邮箱与您上传的私钥中的 client_email 字段匹配。
3

添加任何缺少的角色

点击铅笔(编辑)图标,然后点击添加其他角色,添加尚未分配的任一角色。
4

保存

点击保存。IAM 更改可能需要一分钟才能生效。

为什么我看到 “This configuration is for a different Firebase Project”?

当上传的私钥属于不同的 Firebase 项目(不同的 Sender ID)时会出现此错误。 解决方案:使用原始 Firebase 项目的私钥。如果无法获得,请联系 support@onesignal.com 并提供您的应用 ID。切换项目会重置推送令牌。您的用户必须重新打开应用才能再次接收推送。

我可以更改 Sender ID 吗?

可以,但会影响您的现有用户。 设备令牌与原始 Sender ID 绑定。更改它会使现有令牌失效。
在用户重新打开应用并生成新令牌之前,他们将停止接收推送通知。
如果需要帮助,请联系 support@onesignal.com 并提供您的应用 ID。

为什么我在 OneSignal 中看不到 Sender ID?

如果您的 Firebase 服务器密钥看起来像 AIz...,您可能在使用过时的 Google Cloud Messaging (GCM) 配置。请创建一个新的 Firebase 项目并上传一个服务账户私钥。

切换到 FCM V1 时我需要更新代码吗?

不需要应用或 SDK 更改。这仅是控制台更新。

切换到 FCM V1 的截止日期是什么时候?

Google 的旧版 FCM API 现已完全弃用。如果您仍在使用旧版 API,应立即迁移到 FCM V1

我如何检查哪些应用仍在使用旧版 API?

对每个应用调用查看应用 API,并检查响应中的 fcm_v1_service_account_json 字段:
  • 存在且非空:应用使用 FCM V1。
  • 缺失或为空:应用未配置 FCM V1。如果该应用发送 Android 推送,则仍在使用旧版 API,必须进行迁移。
要先列出您的应用及其应用 ID,请使用查看应用列表 API。

什么是 Firebase Cloud Messaging,OneSignal 为什么需要服务账户私钥? \

Firebase Cloud Messaging (FCM) 是 Google 用于向 Android 设备发送推送通知的服务。服务账户是 OneSignal 用于向您的 Firebase 项目进行身份验证的 Google 身份,其私钥是证明该身份的 JSON 文件。上传私钥即授权 OneSignal 代表您通过 Firebase 发送推送。有关更多详细信息,请参阅 Google 的服务账户文档

相关页面

移动 SDK 设置

在您的 Android 应用中安装并初始化 OneSignal SDK。

移动推送设置

针对 Android、iOS 及其他移动平台的平台特定设置步骤。

华为推送设置

授权 OneSignal 向通过华为应用市场分发的华为应用发送推送。

Web push 设置

为网站配置推送通知。