diff --git a/src/ios/FirebasePlugin.h b/src/ios/FirebasePlugin.h index 57ecc5ae6..c744f8b5f 100755 --- a/src/ios/FirebasePlugin.h +++ b/src/ios/FirebasePlugin.h @@ -9,6 +9,7 @@ - (void)getId:(CDVInvokedUrlCommand*)command; - (void)getToken:(CDVInvokedUrlCommand*)command; - (void)getAPNSToken:(CDVInvokedUrlCommand*)command; +- (NSString *)hexadecimalStringFromData:(NSData *)data; - (void)grantPermission:(CDVInvokedUrlCommand*)command; - (void)hasPermission:(CDVInvokedUrlCommand*)command; - (void)setBadgeNumber:(CDVInvokedUrlCommand*)command; diff --git a/src/ios/FirebasePlugin.m b/src/ios/FirebasePlugin.m index 81b53e060..8de7b496f 100644 --- a/src/ios/FirebasePlugin.m +++ b/src/ios/FirebasePlugin.m @@ -81,7 +81,12 @@ - (void)getAPNSToken:(CDVInvokedUrlCommand *)command { NSData* apnsToken = [FIRMessaging messaging].APNSToken; CDVPluginResult *pluginResult; if (apnsToken) { +#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 130000 + // [deviceToken description] Starting with iOS 13 device token is like "{length = 32, bytes = 0xd3d997af 967d1f43 b405374a 13394d2f ... 28f10282 14af515f }" + NSString* hexToken = [self hexadecimalStringFromData:apnsToken]; +#else NSString* hexToken = [[apnsToken.description componentsSeparatedByCharactersInSet:[[NSCharacterSet alphanumericCharacterSet]invertedSet]]componentsJoinedByString:@""]; +#endif pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsString:hexToken]; } else { pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsString:nil]; @@ -90,6 +95,21 @@ - (void)getAPNSToken:(CDVInvokedUrlCommand *)command { [self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId]; } +- (NSString *)hexadecimalStringFromData:(NSData *)data +{ + NSUInteger dataLength = data.length; + if (dataLength == 0) { + return nil; + } + + const unsigned char *dataBuffer = data.bytes; + NSMutableString *hexString = [NSMutableString stringWithCapacity:(dataLength * 2)]; + for (int i = 0; i < dataLength; ++i) { + [hexString appendFormat:@"%02x", dataBuffer[i]]; + } + return [hexString copy]; +} + - (void)hasPermission:(CDVInvokedUrlCommand *)command { @try { [self _hasPermission:^(BOOL enabled) {