Firebase 远程通知未收到?
Posted
技术标签:
【中文标题】Firebase 远程通知未收到?【英文标题】:Firebase Remote Notifications Not Receiving? 【发布时间】:2016-06-20 19:04:12 【问题描述】:我正在尝试通过云消息从我的 Firebase 控制台发送远程通知,但我的手机没有收到任何警报。我已经将我的证书上传到 Firebase,并且我正在使用 Firebase 教程提供的默认代码来接收通知。
这是我的证书图片,表明我已经创建了它
这是我实现它的代码。 类 AppDelegate: UIResponder, UIApplicationDelegate
var window: UIWindow?
override init()
FIRApp.configure()
FIRDatabase.database().persistenceEnabled = true
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool
// Override point for customization after application launch.
let notificationTypes : UIUserNotificationType = [UIUserNotificationType.Alert, UIUserNotificationType.Badge, UIUserNotificationType.Sound]
let notificationSettings = UIUserNotificationSettings(forTypes: notificationTypes, categories: nil)
application.registerForRemoteNotifications()
application.registerUserNotificationSettings(notificationSettings)
return FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions)
func application(application: UIApplication,
openURL url: NSURL,
sourceApplication: String?,
annotation: AnyObject) -> Bool
return FBSDKApplicationDelegate.sharedInstance().application(
application,
openURL: url,
sourceApplication: sourceApplication,
annotation: annotation)
func applicationDidBecomeActive(application: UIApplication)
// Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
FBSDKAppEvents.activateApp()
func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject],
fetchCompletionHandler completionHandler: (UIBackgroundFetchResult) -> Void)
// If you are receiving a notification message while your app is in the background,
// this callback will not be fired till the user taps on the notification launching the application.
// TODO: Handle data of notification
// Print message ID.
print("Message ID: \(userInfo["gcm.message_id"]!)")
// Print full message.
print("%@", userInfo)
编辑 经过更多调试,我的控制台现在正在打印此错误:
警告:应用程序委托收到了对 -application:didReceiveRemoteNotification:fetchCompletionHandler: 的调用,但从未调用过完成处理程序。
【问题讨论】:
***.com/a/37670233 试图从您的解决方案中复制并粘贴代码,但它告诉我“self.tokenRefreshNotificaiton), name”有一个错误,我使用的是 xcode 7.3.1 基于警告 - 您需要检查 github 示例并实现此 github.com/firebase/quickstart-ios/blob/master/messaging/… 我将代码添加到我的,但我仍然收到相同的错误 Application delegate received call to -application:didReceiveRemoteNotification:fetchCompletionHandler: 但从未调用完成处理程序。 【参考方案1】:根据您上次的编辑,您似乎正在收到通知。否则,它不会向您发出完成处理程序从未被调用过的警告。
您可以通过调用完成处理程序继续删除警告(并使 iOS 满意)。例如,
completionHandler(.NoData)
这告诉 iOS 没有与您的应用需要下载的通知相关联的新数据。
【讨论】:
有没有办法让我的通知弹出,即使它们在应用程序内部而不是在后台显示?目前,如果通知在应用内,则不会显示,但如果屏幕被锁定或在另一个应用/主页中,则会显示 不。这就是 iOS 的工作方式——如果你的应用在后台,iOS 会显示一个通知。但是,如果您的应用程序在前台,那么您的应用程序应该会执行显示通知的工作,因此 iOS 不会向用户显示任何内容。以上是关于Firebase 远程通知未收到?的主要内容,如果未能解决你的问题,请参考以下文章
Swift 3 Firebase 远程通知未在 TestFlight 上显示
应用程序处于后台时未收到后台获取远程通知,并且用户未通过推送通知进入