Search code examples
iosswiftfirebasefirebase-cloud-messagingfirebase-notifications

How to handle launch options in Swift 3 when a notification is tapped? Getting syntax problems


I am trying to handle the launch option and open a specific view controller upon tapping a remote notification that I receive in swift 3. I have seen similar question, for instance here, but nothing for the new swift 3 implementation. I saw a similar question (and ) In AppDelegate.swift I have the following in didFinishLaunchingWithOptions:

    var localNotif = (launchOptions[UIApplicationLaunchOptionsRemoteNotificationKey] as! String)
if localNotif {
    var itemName = (localNotif.userInfo!["aps"] as! String)
    print("Custom: \(itemName)")
}
else {
    print("//////////////////////////")
}

but Xcode is giving me this error:

Type '[NSObject: AnyObject]?' has no subscript members

I also tried this:

   if let launchOptions = launchOptions {
        var notificationPayload: NSDictionary = launchOptions[UIApplicationLaunchOptionsRemoteNotificationKey] as NSDictionary!

    }

and I get this error:

error: ambiguous reference to member 'subscript'

I got similar errors wherever I had previously used similar code to get a value from a dictionary by the key and I had to replace the codes and basically safely unwrap the dictionary first. But that doesn't seem to work here. Any help would be appreciated. Thanks.


Solution

  • So it turned out the whole method signature has changed and when I implemented the new signature things worked just fine. Below is the code.

    new didFinishLaunchingWithOptions method:

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey : Any]? = nil) -> Bool {
    
    
    
    //and then 
     if launchOptions?[UIApplicationLaunchOptionsKey.remoteNotification] != nil {
    
    
    // Do what you want to happen when a remote notification is tapped.
    
    
    }
    
    }
    

    Hope this helps.