mercredi 5 octobre 2016

How to get the body of a push notification sent from firebase console in iOS 10 and swift 3?

Vote count: 0

i'm developing an iOS app that should receive push notifications sent from the firebase console. I'm using Swift 3 and iOS10. As recommended by firebase documentation, we must assign our delegate object to the UNUserNotificationCenter object to receive display notifications, and the FIRMessaging object to receive data messages, before our app finishes launching. This has been done in the didFinishLaunchingWithOptions method. I followed all the steps in order to configure Firmessaging as well as APNs.

Now, when i send a message from the firebase console, i receive it through applicationReceivedRemoteMessage(_ remoteMessage: FIRMessagingRemoteMessage) method. The problem is that i could not extract the body of the message from the remoteMessage.appData dictionary. Knowing that the body is within remoteMessage.appData["notification"] which is equal to

[AnyHashable("notification"): {
   body = Hello Notifications;
   e = 1;
}, AnyHashable("from"): 49679924394, AnyHashable("collapse_key"): com.company.app]

I could not extract the body in order to show it in an alert controller. The code of the appDelegate is given below.

class AppDelegate: UIResponder, UIApplicationDelegate, FIRMessagingDelegate, UNUserNotificationCenterDelegate{
......

func application(_ application: UIApplication, didFinishLaunchingWithOptions, launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    application.isStatusBarHidden = true
    FIRApp.configure()
    FIRDatabase.database().persistenceEnabled = true
    if #available(iOS 10.0, *) {
       let authOptions : UNAuthorizationOptions = [.alert, .badge, .sound]
       let center = UNUserNotificationCenter.current()
       center.requestAuthorization(options: authOptions, completionHandler: {_ ,_ in })
       application.registerForRemoteNotifications()
// For iOS 10 display notification (sent via APNS)
       UNUserNotificationCenter.current().delegate = self
// For iOS 10 data message (sent via FCM)        
       FIRMessaging.messaging().remoteMessageDelegate = self         
    } else {
       let settings: UIUserNotificationSettings = UIUserNotificationSettings(types: [.alert, .badge, .sound], categories: nil)
       application.registerUserNotificationSettings(settings)
    }
    application.registerForRemoteNotifications()
     return true
}
// Receive data message on iOS 10 devices.
func applicationReceivedRemoteMessage(_ remoteMessage: FIRMessagingRemoteMessage) {
    print(remoteMessage.appData)
    print(remoteMessage.appData["notification"]!)
    let alertController = UIAlertController(title: "Message from IOBird Developer Team", message: "?????? Body of the message ?????", preferredStyle: .alert)
    let OKAction = UIAlertAction(title: "OK", style: .default) { (action:UIAlertAction!) in
    }
    alertController.addAction(OKAction)
    self.window?.rootViewController?.present(alertController, animated: true, completion: nil)
}

asked 36 secs ago

Let's block ads! (Why?)



How to get the body of a push notification sent from firebase console in iOS 10 and swift 3?

Aucun commentaire:

Enregistrer un commentaire