我目前正在尝试按照官方Firebase文档实施Firebase云消息传递。
我已启用了推送通知的证书和配置文件。我还使用CocoaPods安装了所有必要的框架(FirebaseMessaging,Firebase),它们似乎工作正常。
在应用代表处,我尝试使用以下代码初始化Firebase云消息传递令牌。
let token = FIRInstanceID.instanceID().token()!
我还将GCM设置为已启用,并且GoogleService-Info.plist中有一个GCM发件人ID值。
我得到的错误如下:
2016-11-29 16:11:12.358 Firebasesample [3852:122151] Firebase自动 屏幕报告已启用。致电+ [FIRAnalytics setScreenName:setScreenClass:]设置屏幕名称或覆盖 默认屏幕类名称。要禁用自动屏幕报告,请设置 标志FirebaseAutomaticScreenReportingEnabled中的NO Info.plist
2016-11-29 16:11:12.419:Firebase 消息未正确设置,nil senderID。致命错误:意外 在解包可选值时发现nil
提前感谢您提供任何建议/帮助。
答案 0 :(得分:4)
在没有实施的评论中已经回答:
请务必按照https://firebase.google.com/docs/cloud-messaging/ios/client上的设置指南进行操作。
在didFinishLaunchingWithOptions
中添加以下方法(在FIRApp.configure()
之后)。
NotificationCenter.default.addObserver(self, selector: #selector(tokenRefreshNotification(_:)), name: NSNotification.Name.firInstanceIDTokenRefresh, object: nil)
刷新令牌后,会调用:
func tokenRefreshNotification(_ notification: Notification) {
guard let token = FIRInstanceID.instanceID().token() else {
QL3("No firebase token, aborting registering device")
return nil
}
//register your token somewhere..
registerToken(token)
}
答案 1 :(得分:1)
对于仍然遇到令牌问题的人,可能是因为尚未生成令牌。
在指南(https://firebase.google.com/docs/cloud-messaging/ios/client)上,您可以找到以下部分:
当您需要当前令牌时,请检索它。如果,这可能返回null 令牌尚未生成。
我希望它有所帮助。
答案 2 :(得分:0)
我被这个问题困住了,没有在 IOS-10 之上的 IOS 设备上收到 firebase 推送通知,因为 firebase 令牌可能比您选择用于存储的数据类型长。 检查令牌列的数据类型。我已经从 varchar 转换为文本,它可以工作并挽救了我们的一天。
问候, 护林员