注册Apple推送通知 - 我如何通过HTTP传递DevToken?

问题描述:

在iPhone推送通知的文件,他们有一个代码片段中,他们将覆盖接收设备令牌的UIApplication方法 -注册Apple推送通知 - 我如何通过HTTP传递DevToken?

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

我的问题是,当我实现我自己的自定义方法,我怎么使用devTokenBytes?

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

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

似乎最简单的处理方法是使用NSData的“description”方法的返回值。它会返回一个String,你可以稍微玩一下来获得64个字符的表示。

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

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

林不知道如果这是你在寻找:

deviceTokenString = [[[[[deviceToken description] 
          stringByReplacingOccurrencesOfString: @"<" withString: @""] 
          stringByReplacingOccurrencesOfString: @">" withString: @""] 
          stringByReplacingOccurrencesOfString: @" " withString: @""] retain];