Push Notification not showing in iOS 10

匿名 (未验证) 提交于 2019-12-03 02:33:02

问题:

How can I get notification in iOS 10? In previous version, I can receive notification in func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject]).

In iOS 10, Apple introduces UNNotificationSettings. I can get FCM with func applicationReceivedRemoteMessage(remoteMessage: FIRMessagingRemoteMessage).

However, I cannot get notification showing up on my phone in the background.

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {      FIRApp.configure()      if #available(iOS 10.0, *) {         let authOptions : UNAuthorizationOptions = [.Alert, .Badge, .Sound]         UNUserNotificationCenter.currentNotificationCenter().requestAuthorizationWithOptions(             authOptions,             completionHandler: {_,_ in })          // For iOS 10 display notification (sent via APNS)         UNUserNotificationCenter.currentNotificationCenter().delegate = self         // For iOS 10 data message (sent via FCM)         FIRMessaging.messaging().remoteMessageDelegate = self      } else {         let settings: UIUserNotificationSettings =             UIUserNotificationSettings(forTypes: [.Alert, .Badge, .Sound], categories: nil)         application.registerUserNotificationSettings(settings)         application.registerForRemoteNotifications()     }       return true }  @available(iOS 10, *) extension AppDelegate: UNUserNotificationCenterDelegate, FIRMessagingDelegate { // Receive displayed notifications for iOS 10 devices. func userNotificationCenter(center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: (UNNotificationPresentationOptions) -> Void) {     let userInfo = notification.request.content.userInfo     // Print message ID.     print("Message ID: \(userInfo["gcm.message_id"]!)")      // Print full message.     print("%@", userInfo)  }   // Receive data message on iOS 10 devices. func applicationReceivedRemoteMessage(remoteMessage: FIRMessagingRemoteMessage) {     print("%@", remoteMessage.appData) } } 

回答1:

you have to move this method

application.registerForRemoteNotifications()

to above return statement.

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {     FIRApp.configure()      if #available(iOS 10.0, *) {         let authOptions : UNAuthorizationOptions = [.Alert, .Badge, .Sound]         UNUserNotificationCenter.currentNotificationCenter().requestAuthorizationWithOptions(             authOptions,             completionHandler: {_,_ in })          // For iOS 10 display notification (sent via APNS)         UNUserNotificationCenter.currentNotificationCenter().delegate = self         // For iOS 10 data message (sent via FCM)         FIRMessaging.messaging().remoteMessageDelegate = self      } else {         let settings: UIUserNotificationSettings =             UIUserNotificationSettings(forTypes: [.Alert, .Badge, .Sound], categories: nil)         application.registerUserNotificationSettings(settings)             }      application.registerForRemoteNotifications()     NotificationCenter.default.addObserver(self,                                            selector: #selector(self.tokenRefreshNotification),                                            name: .firInstanceIDTokenRefresh,                                            object: nil)      return true  } 


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!