在iPhone推送通知的文档,他们有一个代码段,其中它们将覆盖其接收设备令牌的UIApplication方法 -

- (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的“字节”方法的返回类型是一个指针,但我不知道该怎么办。什么是把这个令牌到请求的正确方法是什么?

该文档还详细介绍 - “他应用程序应该与它的供应商连接,并通过它由此看来,以二进制格式进行编码。”但我不知道如何处理事情以这种方式进行编码。

有帮助吗?

解决方案 2

好像处理这个的最简单的方法是从NSData的的“说明”的方法使用的返回值。它会返回一个字符串,你可以用一个位以获得一个64字符表示。

其他提示

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

您也可以发布数据到一个URL来代替,但我认为编码会更容易些。

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

deviceTokenString = [[[[[deviceToken description]
                            stringByReplacingOccurrencesOfString: @"<" withString: @""] 
                           stringByReplacingOccurrencesOfString: @">" withString: @""] 
                          stringByReplacingOccurrencesOfString: @" " withString: @""] retain];
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top