2009-08-14 142 views
0

在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的「字節」方法的返回類型是一個指針,但我不知道該如何處理它。將此令牌放入請求的正確方法是什麼?

該文檔還詳細說明了 - 「他的應用程序應該連接到它的提供程序並將它傳遞給此令牌,並以二進制格式編碼。」但我不知道如何處理以這種方式編碼的東西。

回答

2

似乎最簡單的處理方法是使用NSData的「description」方法的返回值。它會返回一個String,你可以稍微玩一下來獲得64個字符的表示。

2

我還沒有嘗試過,但我的第一個猜測是將Base64編碼二進制數組轉換爲7位乾淨的字符串,該字符串可以作爲查詢參數傳遞給您的請求。

您也可以將數據發佈到URL,但我認爲編碼會更容易。

0

林不知道如果這是你在尋找:

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