2009-08-14 4 views
0

Dans l'iPhone push documentation de notification, ils ont un extrait de code dans lequel ils remplacent la méthode UIApplication qui reçoit un jeton de dispositif -Inscription à la notification Apple Push - comment transmettre le DevToken avec HTTP?

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

Ma question est, quand je mets en œuvre ma propre méthode personnalisée, comment puis-je utiliser le devTokenBytes?

Je dois créer une requête HTTP, en utilisant NSURLConnection (je suppose), qui transmettra le jeton à mon application de fournisseur côté serveur. Je reçois cette partie, mais je ne sais pas comment ajouter devTokenBytes à la demande? Mon premier instinct a été d'utiliser les octets pour créer un objet String, mais lorsque j'essaie d'utiliser NSASCIIStringEncoding, j'obtiens un étrange mélange de caractères. Je vois que le type de retour de la méthode "bytes" de NSData est un pointeur, mais je ne sais pas quoi en faire. Quelle est la bonne façon de mettre ce jeton dans une requête?

La documentation contient également des détails - "L'application doit se connecter à son fournisseur et lui transmettre ce jeton, codé au format binaire". Mais je ne sais pas comment gérer quelque chose encodé de cette manière.

Répondre

2

Il semble que la façon la plus simple de gérer cela est d'utiliser la valeur de retour de la méthode "description" de NSData. Il va retourner une chaîne que vous pouvez jouer avec un peu pour obtenir une représentation de 64 caractères.

2

Je ne l'ai pas encore essayé, mais ma première hypothèse serait de regarder Base64 codant le tableau binaire dans une chaîne propre de 7 bits qui peut être transmise comme un paramètre de requête sur votre demande.

Vous pouvez également POST les données à une URL à la place, mais je pense que l'encodage serait plus facile.

0

Je ne suis pas sûr si cela est que vous cherchez:

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