APN的设备令牌是什么编码?

str*_*ark 2 notifications push device token apple-push-notifications

是否有可能从应用程序返回设备令牌:(UIApplication*)应用程序didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken方法?由于我不擅长PHP,我希望我的用户手动将令牌输入到他们的计算机上的程序中,该程序将用于发送通知.但是,我无法从此方法中获取令牌.它使用NSLog记录正常,但是当我使用NSString initWithData:时,我总是得到一些神秘的东西.我想编码错了?

感谢您的帮助!

小智 7

令牌是一个NSData对象,它指向原始二进制blob数据,而不是字符串.将它转换为字符串的两种最常见的方法是:

  1. base64编码下载http://projectswithlove.com/projects/NSData_Base64.zip
NSString *str = [deviceToken base64EncodedStringWithoutNewlines];
Run Code Online (Sandbox Code Playgroud)
  1. 使用NSData的-description获取字符串十六进制转储并清理它
NSString *str = [[deviceToken description] stringByReplacingOccurrencesOfString:@"<" withString:@""];
str = [str stringByReplacingOccurrencesOfString:@">" withString:@""];
str = [str stringByReplacingOccurrencesOfString: @" " withString: @""];
Run Code Online (Sandbox Code Playgroud)

我更喜欢#1,因为后者依赖于NSData的-description调用的内部方式,但两者都应该有效.