0

I am using push notification service for my demo app. Using Firebase, I'm able to send the notifications to the device. But some warnings are coming in my log message. How can I remove it? And another thing, how can I get the device token here with the updated Xcode 8 in Swift 3.

screenshots

Appdelegate Codes:

  import UIKit
  import Firebase
  import UserNotifications
  import FirebaseInstanceID
  import FirebaseMessaging

  @UIApplicationMain
  class AppDelegate: UIResponder, UIApplicationDelegate {

var window: UIWindow?


func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    // Override point for customization after application launch.



    UINavigationBar.appearance().barTintColor = UIColor(red: 233.0/255.0, green: 86.0/255.0, blue: 53.0/255.0, alpha: 1.0)

    UINavigationBar.appearance().titleTextAttributes = [NSForegroundColorAttributeName : UIColor.whiteColor()]
    UIBarButtonItem.appearance().tintColor = UIColor.whiteColor()


    UITabBar.appearance().backgroundColor = UIColor.whiteColor()
    // UITabBar.appearance().tintColor = UIColor.orangeColor()
     UITabBar.appearance().tintColor = UIColor(red: 233.0/255.0, green: 86.0/255.0, blue: 53.0/255.0, alpha: 1.0)

    // [START register_for_notifications]
    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()

    // [END register_for_notifications]

    // Use Firebase library to configure APIs
    FIRApp.configure()

    // Add observer for InstanceID token refresh callback.
    NSNotificationCenter.defaultCenter().addObserver(self,
                                                     selector: #selector(self.tokenRefreshNotification),
                                                     name: kFIRInstanceIDTokenRefreshNotification,
                                                     object: nil)

    return true
}

// [START receive_message]
func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject],fetchCompletionHandler completionHandler: (UIBackgroundFetchResult) -> Void) {

    // Print message ID.
    print("Message ID: \(userInfo["gcm.message_id"]!)")

    // Print full message.
    print("%@", userInfo)

}
// [END receive_message]

// [START refresh_token]
func tokenRefreshNotification(notification: NSNotification) {
    if let refreshedToken = FIRInstanceID.instanceID().token() {
        print("InstanceID token: \(refreshedToken)")
        print("InstanceID token: \(notification.object)")
    }
    // Connect to FCM since connection may have failed when attempted before having a token.
    connectToFcm()
}
// [END refresh_token]


func application(application: UIApplication,
                 didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) {
    FIRInstanceID.instanceID().setAPNSToken(deviceToken, type: FIRInstanceIDAPNSTokenType.Sandbox)


}

// [START connect_to_fcm]
func connectToFcm() {
    FIRMessaging.messaging().connectWithCompletion { (error) in
        if (error != nil) {
            print("Unable to connect with FCM. \(error)")
        } else {
            print("Connected to FCM.")
        }
    }
}
// [END connect_to_fcm]


func applicationWillResignActive(application: UIApplication) {

}

// [START disconnect_from_fcm]
func applicationDidEnterBackground(application: UIApplication) {
    FIRMessaging.messaging().disconnect()
    print("Disconnected from FCM.")

}
// [END disconnect_from_fcm]

func applicationWillEnterForeground(application: UIApplication) {
    // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background.
}

func applicationDidBecomeActive(application: UIApplication) {

connectToFcm()

}

func applicationWillTerminate(application: UIApplication) {
    // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
}


}

// [START ios_10_message_handling]
  @available(iOS 10, *)
 extension AppDelegate : UNUserNotificationCenterDelegate {

// Receive displayed notifications for iOS 10 devices.
func userNotificationCenter(center: UNUserNotificationCenter,
                            willPresentNotification 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)
}
}

//extension AppDelegate : FIRMessagingDelegate {
//    // Receive data message on iOS 10 devices.
//    func applicationReceivedRemoteMessage(remoteMessage:     FIRMessagingRemoteMessage) {
//        print("%@", remoteMessage.appData)
//    }
//}
PRADIP KUMAR
  • 489
  • 1
  • 9
  • 31

1 Answers1

1
  1. First Add this Observer in didFinishLaunchingWithOptions
NSNotificationCenter.defaultCenter().addObserver(self,
                                                   selector: #selector(tokenRefreshNotification(_:)),
                                                   name: kFIRInstanceIDTokenRefreshNotification,
                                                   object: nil)
  1. Then Add this Method in Appdelegate.M Class
func tokenRefreshNotification(notification: NSNotification) {

  let refreshedToken = FIRInstanceID.instanceID().token()
  print("InstanceID token: \(refreshedToken)")
  print("InstanceID token: \(notification.Object)")


  connectToFcm()
}
  1. Then Check that this Method (tokenRefreshNotification)Is Called or not ?

In this method u get Token ID

Sanandiya Vipul
  • 764
  • 4
  • 16