【发布时间】:2017-01-09 19:33:50
【问题描述】:
我敢肯定这个问题以前有人问过,但我一生都找不到正确的答案。
在 Objective-C 中你有这个:
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken;
这很好,deviceToken 不是字符串,因此通常您将其转换为字符串并将其发送到需要 NSData 的方法(确切的目标示例:
[[ETPush pushManager] registerDeviceToken:deviceToken];
一切都很好:)
问题是,在我的设置中,我从 外部 原始 deviceToken 函数调用该方法,因此我实际上已经可以将令牌作为字符串访问。所以我需要做的就是将该字符串 back 转换为 deviceToken NSData 对象。我可以这样做将其转换为 NSData 对象:
NSData *deviceToken = [stringToken dataUsingEncoding:NSUTF8StringEncoding];
但问题是,当我查看描述时,我会得到如下信息:
<63333833 30613765 ... 64386561 30653861 61356164 31353338 35623665 34396563>
如果您查看该问题的每一个实现,如何将 NSData 设备令牌转换为 NSString? 他们会回答类似这样的内容(或使用字节的类似内容):
NSString * deviceTokenString = [[[[deviceToken description]
stringByReplacingOccurrencesOfString: @"<" withString: @""]
stringByReplacingOccurrencesOfString: @">" withString: @""]
stringByReplacingOccurrencesOfString: @" " withString: @""];
你可以想象,把上面我发布的那个字符串用在那个方法中,它会创建类似的东西:
6333383330613765....etc.
这显然不是我的设备令牌 :)
那么问题来了!
如何将其转换回可以发送给这些方法的 NSData 对象?
【问题讨论】:
标签: ios objective-c push-notification