IOS 中的 FCM 错误:调用者没有权限?

FCM error in IOS : The caller does not have permission?

我正在使用 Firebase 节点管理 API 向 Android 和 IOs 设备发送推送通知。 Android 工作正常,但在 IOS 中,我可以生成 FCM 令牌,但是当我从节点 js(firebase 管理代码)向 IOS 令牌发送推送通知时,出现以下错误:

 Error sending message: { Error: The caller does not have permission
    at FirebaseMessagingError.FirebaseError [as constructor] (/Users/MAC/Documents/Workspace/Nodejs/msever/Mserver/node_modules/firebase-admin/lib/utils/error.js:39:28)
    at FirebaseMessagingError.PrefixedFirebaseError [as constructor] (/Users/MAC/Documents/Workspace/Nodejs/msever/Mserver/node_modules/firebase-admin/lib/utils/error.js:85:28)
    at new FirebaseMessagingError (/Users/MAC/Documents/Workspace/Nodejs/msever/Mserver/node_modules/firebase-admin/lib/utils/error.js:250:16)
    at Function.FirebaseMessagingError.fromServerError (/Users/MAC/Documents/Workspace/Nodejs/msever/Mserver/node_modules/firebase-admin/lib/utils/error.js:280:16)
    at FirebaseMessagingRequestHandler.handleHttpError (/Users/MAC/Documents/Workspace/Nodejs/msever/Mserver/node_modules/firebase-admin/lib/messaging/messaging-api-request.js:125:50)
    at /Users/MAC/Documents/Workspace/Nodejs/msever/Mserver/node_modules/firebase-admin/lib/messaging/messaging-api-request.js:113:23
    at process._tickCallback (internal/process/next_tick.js:68:7)
  errorInfo:
   { code: 'messaging/mismatched-credential',
     message: 'The caller does not have permission' },
  codePrefix: 'messaging' }

我正在为 Android 和 IOS

使用 React Native

根据您的错误信息

code: 'messaging/mismatched-credential'

Firebase official documentation 说:

用于验证此 SDK 的凭据无权向与提供的注册令牌对应的设备发送消息。确保凭据和注册令牌都属于同一个 Firebase 项目。有关如何验证 Admin SDK 的文档,请参阅 Add Firebase to your app

您可能正确配置了 Android,但您遗漏了 iOS 的一些小细节。按照 this link 设置 iOS 客户端 :)

就我而言,据我所知,推送通知在 android 上有效,但 iOS 出于某种原因给了我完全相同的错误。

我所做的是:

  1. 从 firebase 控制台重新下载 GoogleService-Info.plist,确保它适用于 iOS 设备
  2. 删除了项目中的旧的
  3. 添加新的,确保选中 copy items if needed 选项
  4. 测试您是否通过控制台或 admin sdk 函数接收推送通知