IOS 10 beta testing : didRegisterForRemoteNotificationsWithDeviceToken

How do i print deviceToken using NSLOG


func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {

NSLog("Registration succeeded!")

}

Accepted Reply

In Swift you can get the device token through a conversion in NSString.

func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
     let deviceTokenString = NSString(format: "%@", deviceToken as CVarArg) as String
     print ("deviceToken String: \(deviceTokenString)");


This gives the deviceToken with a format of a hexString:

IE: deviceToken String: <12ce7dda 8032c423 8f8bd40f 3484e5bb f4698da5 8b7fdf8d 5c55e0a2 XXXXXXXX>



For Objective C you can convert the deviceToken via:


NSString *deviceTokenString = [deviceToken hexadecimalString];
NSLog(@"deviceToken String: %@", deviceTokenString);


Hope this helps


-DT

Replies

func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {

NSLog("Registration succeeded!")

let token=deviceToken.description

print("===> didRegisterForRemoteNotificationsWithDeviceToken = \(token)")

}


I get



===> didRegisterForRemoteNotificationsWithDeviceToken = 32 bytes

In Swift you can get the device token through a conversion in NSString.

func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
     let deviceTokenString = NSString(format: "%@", deviceToken as CVarArg) as String
     print ("deviceToken String: \(deviceTokenString)");


This gives the deviceToken with a format of a hexString:

IE: deviceToken String: <12ce7dda 8032c423 8f8bd40f 3484e5bb f4698da5 8b7fdf8d 5c55e0a2 XXXXXXXX>



For Objective C you can convert the deviceToken via:


NSString *deviceTokenString = [deviceToken hexadecimalString];
NSLog(@"deviceToken String: %@", deviceTokenString);


Hope this helps


-DT

If you are debugging you can also change the function signature to take in the NSData directly.


func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData!) {
     NSLog("Registration succeeded!")
     let token=deviceToken.description
     print("===> didRegisterForRemoteNotificationsWithDeviceToken = \(token)")


-DT

I tried this was kind of causing coredump . but prev one worked for me

Watch out: NSLogs won't appear in the system console under iOS 10 the way they did before.