0

在 iPhone Push Notification 文档中,他们有一个代码片段,其中他们覆盖了接收设备令牌的 UIApplication 方法 -

- (void)application:(UIApplication *)app didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)devToken {
const void *devTokenBytes = [devToken bytes];
self.registered = YES;
[self sendProviderDeviceToken:devTokenBytes]; // custom method
}

我的问题是,当我实现自己的自定义方法时,如何使用 devTokenBytes?

我需要使用 NSURLConnection (我想)创建一个 HTTP 请求,它将令牌传递给我的服务器端提供程序应用程序。我得到了那部分,但我不确定如何将 devTokenBytes 添加到请求中?我的第一直觉是使用字节来创建一个 String 对象,但是当我尝试使用 NSASCIIStringEncoding 时,我得到了一个奇怪的混乱的字符。我看到 NSData 的“bytes”方法的返回类型是一个指针,但我不知道如何处理它。将此令牌放入请求的正确方法是什么?

该文档还详细说明了 - “他的应用程序应该与其提供者连接并将这个令牌传递给它,以二进制格式编码。” 但我不知道如何处理以这种方式编码的东西。

4

3 回答 3

2

我还没有尝试过,但我的第一个猜测是查看 Base64 将二进制数组编码为 7 位干净的字符串,该字符串可以作为查询参数传递给您的请求。

您也可以将数据发布到 URL,但我认为编码会更容易。

于 2009-08-14T16:13:05.333 回答
2

似乎最简单的处理方法是使用 NSData 的“描述”方法的返回值。它将返回一个字符串,您可以使用它来获得 64 个字符的表示形式。

于 2009-08-16T19:38:38.553 回答
0

我不确定这是否是您要找的:

deviceTokenString = [[[[[deviceToken description]
                            stringByReplacingOccurrencesOfString: @"<" withString: @""] 
                           stringByReplacingOccurrencesOfString: @">" withString: @""] 
                          stringByReplacingOccurrencesOfString: @" " withString: @""] retain];
于 2012-11-23T03:04:00.667 回答