2009-08-14 2 views
0

Im iPhone Push Notification Dokumentation haben sie einen Codeausschnitt, in dem sie die UIApplication Methode überschreiben, die ein Gerät Token empfängt -Registrierung für Apple Push-Benachrichtigung - wie gebe ich DevToken mit HTTP weiter?

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

Meine Frage ist, wenn ich meine eigene benutzerdefinierte Methode implementieren, wie verwende ich die devTokenBytes?

Ich muss eine HTTP-Anfrage erstellen, mit NSURLConnection (nehme ich an), die das Token an meine serverseitige Provider App übergeben wird. Ich bekomme diesen Teil, aber ich bin mir nicht sicher, wie man devTokenBytes zur Anfrage hinzufügt? Mein erster Instinkt war, die Bytes zu verwenden, um ein String-Objekt zu erstellen, aber wenn ich versuche, NSASCIIStringEncoding zu verwenden, bekomme ich ein komisches Durcheinander an Charakteren. Ich sehe, dass der Rückgabetyp von NSDatas "Bytes" -Methode ein Zeiger ist, aber ich weiß nicht, was ich damit machen soll. Was ist der richtige Weg, dieses Token in eine Anfrage zu stellen?

Die Dokumentation auch Details - "die Anwendung sollte mit seinem Provider verbinden und übergeben Sie dieses Token, codiert im Binärformat." Aber ich weiß nicht, wie ich mit etwas umgehen soll, das auf diese Weise kodiert ist.

Antwort

2

Scheint wie der einfachste Weg, dies zu behandeln ist, den Rückgabewert von der "description" -Methode von NSData zu verwenden. Es wird eine Zeichenfolge zurückgegeben, die Sie mit einem Bit wiedergeben können, um eine 64-stellige Darstellung zu erhalten.

2

Ich habe es noch nicht ausprobiert, aber meine erste Vermutung wäre, Base64 für die Codierung der Binär-Array in eine saubere 7-Bit-Zeichenfolge, die als Abfrageparameter auf Ihre Anfrage übergeben werden können.

Sie könnten die Daten auch an eine URL POST, aber ich würde denken, Codierung wäre einfacher.

0

Ich bin nicht sicher, ob dies Sie auf der Suche nach:

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