iPhone推送通知设备令牌-如何“解密”

Posted

技术标签:

【中文标题】iPhone推送通知设备令牌-如何“解密”【英文标题】:iPhone pushNotification DeviceToken - How to "decrypt" 【发布时间】:2009-12-18 18:27:46 【问题描述】:

我已经设法从 APN 获取 devicetoken。它是 NSData 的类型。 所以我想把这个 deviectoken 写到我的 mysql 数据库中。 我已经尝试将其转换为字符串,但没有运气。 那是我的方式:

 NSString *tokenTMP = [[NSString alloc] initWithData:devToken encoding:NSASCIIStringEncoding];

如果我有可读格式的 deviceToken。如何使用 php 中的 token 向 apns 服务器发送请求?

非常感谢!

【问题讨论】:

【参考方案1】:

我在 NSData 中添加了以下类别

- (NSString*) stringWithHexBytes 

   NSMutableString *stringBuffer = [NSMutableString stringWithCapacity:([self length] * 2)];
   const unsigned char *dataBuffer = [self bytes];

   for (int i = 0; i < [self length]; ++i)
   
       [stringBuffer appendFormat:@"%02X", (unsigned long)dataBuffer[ i ]];
   

   return [[stringBuffer retain] autorelease];

然后我可以调用 [devToken stringWithHexBytes];并将其发送到我的服务器并将其存储为文本。

希望对您有所帮助。

克里斯。

【讨论】:

感谢您的帮助。如果我想运行该应用程序,编译器会抱怨 ([self length] * 2) 出现错误“二进制操作数无效 *(具有 'id' 和 'int')”。 我已经编辑了你的函数,现在它可以工作了!多谢! - (NSString*) stringWithHexBytes:(NSData *)token;像魅力一样工作:)

以上是关于iPhone推送通知设备令牌-如何“解密”的主要内容,如果未能解决你的问题,请参考以下文章

如何以编程方式确定推送通知状态?

如何在 iPhone 上指定推送通知的用户?

无需设备或“真实”模拟器即可接收 iPhone / Android 的推送通知

推送通知未在 iPhone 应用程序中的多个设备上传递?

临时推送通知未发送 iphone 通知

推送通知不适用于 iPhone 所有设备 (Xcode8) 版本