iOS:Firebase标记返回null
我目前正在尝试按照官方的Firebase文档实施Firebase云消息传递。
我已经解决了启用了推送通知的证书和供应configuration文件。 我也使用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自动屏幕报告function。 调用+ [FIRAnalytics setScreenName:setScreenClass:]设置屏幕名称或覆盖默认的屏幕类名称。 要禁用自动屏幕报告,请将Info.plist中的标志FirebaseAutomaticScreenReportingEnabled设置为NO
2016-11-29 16:11:12.419:Firebase消息传递设置不正确,无发件人ID。 致命错误:意外地发现零,而解包一个可选值
提前感谢您的任何build议/帮助。
已经在没有执行的评论中回答了:
确保您按照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) }
对于那些仍然有问题得到令牌,也许是因为令牌尚未产生。
在指南( https://firebase.google.com/docs/cloud-messaging/ios/client )上可以find这个部分:
当你需要当前令牌时,检索它。 如果令牌尚未生成,则可能返回null。
我希望它有帮助。