我正在与iOS一起开发Firebase Cloud Messaging ,希望得到任何帮助:
问题所在
我按照这个文档发送测试通知,但它不起作用。
我尝试过什么
我已经理智地检查了我在iOS方面能想到的一切,一切看起来都不错。以下是我到目前为止检查过的内容列表:
- 我让我的管理员在 Apple 开发网站上生成了一个密钥 ID 和私钥文件,并将其上传到我的 Firebase 应用。
- 我在iOS应用上安装了Firebase SDK,并将GoogleService-Info.plist文件复制到我的Xcode项目中。
- 我注册了
application.registerForRemoteNotifications()
的静默通知。 - 我向
UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .badge, .sound], completionHandler: { _, _ in })
注册了明确的通知。 - 我在 Firebase 委托方法
messaging(_: didReceiveRegistrationToken:)
中捕获了 Firebase 设备令牌。 - 我从
console.firebase.google.com/project/<PROJECT_NAME>/notification/compose
向该设备令牌发送了一条测试消息。
为了确认消息已成功发送,我在此文档之后发送了手动 POST 请求。
- 我使用google-auth-library为它生成了一个访问令牌。
- 我将设备令牌放在
{"message": {"token": "..."}}
下的请求有效负载中。 请求返回状态代码为 200。 - 我尝试使用格式错误的访问令牌和设备令牌进行尝试,但失败了,因此从iOS捕获的设备令牌必须有效。
因此,似乎正在发送消息。此外,我在iOS上捕获的设备令牌在开机自检中发送时有效。所以我相信iOS方面一定有问题。
我能想到的唯一解释可能是与应用程序捆绑包 ID 或 APNs 令牌不匹配。我不是管理员,所以我无法在 Apple 开发人员网站上查看令牌。
有谁知道可能出了什么问题?
所以问题是有人之前在 Info.plist 中设置了FirebaseAppDelegateProxyEnabled
NO
。我把它翻到YES
,这让它工作了。