I just updated from Xcode 7 to the 8 GM and amidst the Swift 3 compatibility issues I noticed that my device tokens have stopped working. They now only read '32BYTES'.
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data)
{
print(deviceToken) // Prints '32BYTES'
print(String(data: deviceToken , encoding: .utf8)) // Prints nil
}
Before the update I was able to simply send the NSData to my server, but now I'm having a hard time actually parsing the token.
What am I missing here?
Edit: I just testing converting back to NSData and I'm seeing the expected results. So now I'm just confused about the new Data type.
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data)
{
print(deviceToken) // Prints '32BYTES'
print(String(data: deviceToken , encoding: .utf8)) // Prints nil
let d = NSData(data: deviceToken)
print(d) // Prints my device token
}
Here is my Swift 3 extension to get a base-16 encoded hex string:
Get device token with proper format.
Try this:
I had the same problem. This is my solution: