如何获取 iOS deviceToken 十六进制字符串

iOS App 会从 APN 服务器处获得的用户推送服务的 deviceToken,开发者需要主动把该 deviceToken 绑定到 mPaaS 推送服务中。在测试开发阶段,开发者可能需要通过 deviceToken 进行消息推送测试,例如在移动推送(MPS)控制台进行 Device 维度的推送测试。在 MPS 控制台,目前只接受十六进制字符串格式的 deviceToken,获取该字符串的一种方式如下:

//iOS 13以下,可以通过如下方式获取hexstring
NSString *hexTokenString = [[deviceToken description] stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"<>"]];
hexTokenString = [hexTokenString stringByReplacingOccurrencesOfString:@" " withString:@""];
if ([hexTokenString length] > 0) {
    NSLog(@"push DeviceToken is: %@",hexTokenString);
}


// iOS 13,可以通过如下方式获取hexstring
NSUInteger dataLength = deviceToken.length;
if (dataLength == 0) {
  return;
}
const unsigned char *dataBuffer = (const unsigned char *)deviceToken.bytes;
NSMutableString *hexTokenString  = [NSMutableString stringWithCapacity:(dataLength * 2)];
for (int i = 0; i < dataLength; ++i) {
  [hexTokenString appendFormat:@"%02x", dataBuffer[i]];
}
NSLog(@"push DeviceToken token:%@", hexTokenString);