14

Ich benutze den Apns PHP-Server zur Verfügung gestellt unter https://code.google.com/p/apns-php/.APNS: ungültiges Token (8)

Ich habe das Push-Benachrichtigungszertifikat eingerichtet, aber mein Code löst immer noch einen Fehler beim Verbinden aus.

Was ist daran falsch? Hier ist, wie ich das Gerät Token erhalten:

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)devToken { 

#if !TARGET_IPHONE_SIMULATOR 

    // Prepare the Device Token for Registration (remove spaces and < >) 
    NSString *deviceToken = [[[[devToken description] 
           stringByReplacingOccurrencesOfString:@"<"withString:@""] 
           stringByReplacingOccurrencesOfString:@">" withString:@""] 
          stringByReplacingOccurrencesOfString: @" " withString: @""]; 
    NSLog(@"%@", deviceToken); 

#endif 
} 

Dies ist der Fehler, wenn ich meinen Server laufen:

Sat, 11 May 2013 13:37:53 -0700 ApnsPHP[18198]: INFO: Trying 
ssl://gateway.push.apple.com:2195... 
Sat, 11 May 2013 13:37:54 -0700 ApnsPHP[18198]: INFO: Connected to ssl://gateway.push.apple.com:2195. 
Sat, 11 May 2013 13:37:54 -0700 ApnsPHP[18198]: INFO: Sending messages queue, run #1: 1 message(s) left in queue. 
Sat, 11 May 2013 13:37:54 -0700 ApnsPHP[18198]: STATUS: Sending message ID 1 [custom identifier: abc123] (1/3): 101 bytes. 
Sat, 11 May 2013 13:37:54 -0700 ApnsPHP[18198]: ERROR: Unable to send message ID 1: Invalid token (8). 
Sat, 11 May 2013 13:37:54 -0700 ApnsPHP[18198]: INFO: Disconnected. 
Sat, 11 May 2013 13:37:54 -0700 ApnsPHP[18198]: INFO: Trying ssl://gateway.push.apple.com:2195... 
Sat, 11 May 2013 13:37:54 -0700 ApnsPHP[18198]: INFO: Connected to ssl://gateway.push.apple.com:2195. 
Sat, 11 May 2013 13:37:54 -0700 ApnsPHP[18198]: INFO: Sending messages queue, run #2: 1 message(s) left in queue. 
Sat, 11 May 2013 13:37:54 -0700 ApnsPHP[18198]: WARNING: Message ID 1 [custom identifier: abc123] has an unrecoverable error (8), removing from queue without retrying... 
Sat, 11 May 2013 13:37:55 -0700 ApnsPHP[18198]: INFO: Disconnected. 
+0

Haben Sie bei diesem Build ein Ad-Hoc-Bereitstellungsprofil verwendet? Sonst funktioniert ein Produktionszertifikat nicht. – edwardmp

+0

@edwardmp yeah Ich denke, das ist das Problem. –

Antwort

20

Die wahrscheinlichste Erklärung ist, dass Sie eine Push-Benachrichtigung mit einem Sandbox Gerät Token senden zum Produktions-APNS-Server.

Entweder Sie verwenden ein altes Geräte-Token, das von Ihrer App an Ihren Server gesendet wurde, während Sie es in der Sandbox-Umgebung getestet haben, oder Ihre App ist noch mit einem Entwickler-Bereitstellungsprofil signiert und empfängt weiterhin Sandbox-Geräte-Token vom APNS-Dienst.

In meiner Antwort wird davon ausgegangen, dass Sie ein Geräte-Token verwenden, das vom APN-Dienst stammt, und nicht ein Dummy-Token, das Sie selbst erstellt haben.

Ich schlage vor, Sie überprüfen das Bereitstellungsprofil, um zu sehen, welcher Wert für die aps-Berechtigung angezeigt wird. Ich schlage auch vor, dass Sie Ihre Datenbank von allen alten Geräte-Tokens löschen.

+0

hmm ... Jetzt gibt es keinen Fehler, den ich in die Sandbox geändert habe, aber mein Gerät erhält immer noch nicht die Benachrichtigung, soweit ich das beurteilen kann. –

+0

@JasonSilberman Was genau haben Sie in die Sandbox geändert? Die App oder der Server? Wenn Sie das falsche Zertifikat auf dem Server verwenden (mithilfe von Sandbox Push Certificate zum Herstellen einer Verbindung zum Produktions-APNS-Server oder umgekehrt), empfängt das Gerät keine Daten und der Server erhält keine Fehlerreaktion. – Eran

+0

Ich benutze das Sandbox-Gateway und das Sandbox-Zertifikat –