2010-11-19 4 views
0

Ich arbeite an einem Projekt in PHP, das erfordert, dass ich eine Alarmbenachrichtigung auf dem APNS-Server verschiebe. Ich habe das erweiterte Push-Benachrichtigungsformat verwendet. aber ich erhalte keine Antwort wie in den APNS-Dokumenten angegeben. Ich bekomme Antwort in drei Ziffern in der Regel 133, 132, 154, 138, etc. Welche ich zu Statuszeichen, z. 133 ist 1, 3, 3. aber jetzt habe ich auch 139 erhalten. Daher bezweifle ich, dass meine Interpretation der Antwort falsch ist. Aber ich verstehe nicht, wo es falsch ist. Und wichtig ist, obwohl ich diese Antworten empfange Alert wird gedrängt und ich erhalte Benachrichtigungen sowohl auf meinem iPhone als auch auf dem iPad.Enhanced Apple Push Notification: Antwortfehler beim Provider-Server

Mein Code ist wie folgt:

$payload['aps'] = array('alert' => $message, 'badge' => 1, 'sound' => 'default'); 

$apnsHost = 'gateway.sandbox.push.apple.com'; 

$apnsPort = 2195; // default port 

$apnsCert = 'apns-dev.pem'; // APNS crtificate. 

$passPhrase = ''; 

$streamContext = stream_context_create(); 

stream_context_set_option($streamContext, 'ssl', 'local_cert', $apnsCert); 

stream_context_set_option($streamContext, 'ssl', 'passphrase', $passPhrase); 

try{ 

$apns = stream_socket_client('ssl://' . $apnsHost . ':' . $apnsPort, $error, $errorString, 60, STREAM_CLIENT_CONNECT, $streamContext); 

if (!$apns) { 
    print "Failed to connect {$error} {$errorString}\n"; 
} 
else { 
    // Sending the payload 

    $apnsMessage = chr(0) . pack('n', 1) . pack('n', $nid) . pack('n', time() + 604800) . pack('n', 32) . pack('H*', str_replace(' ', '', $alert_device_token)) . pack('n', strlen($payload)) . $payload; 

    echo 'APNS Message: ' . $apnsMessage; 

    $fwrite = fwrite($apns, $apnsMessage); 

    echo 'APNS response: ' . $fwrite; 

Und wenn das ich die folgende Antwort auf den Browser gedruckt noch ausgeführt werden konnte:

APNS Nachricht: = YA OC 6-U: Ÿ Ÿ ¸Þ ÷ Ú Ú 0 ß Ê Ê "" "" "" {{{{{: {"alert": "Ihr EUR/USD-SELL-Alert-Preis wurde erreicht!", "badge": 1, "sound": "default"}} APNS Antwort: 139

Kann Bitte sag mir, was das hier bedeutet. Ich mache hier etwas falsch.

+0

kann ich fragen, ob Sie es fest. Ich bekomme so etwas. – user633268

+0

Hallo, Ja, ich bin aus dieser Situation herausgekommen. Sie müssen erweiterte Nutzlast anstelle dieser verwenden, d. H. Normale Pay Load – srahul07

+0

Dubbelugh unten ist korrekt: die Anzahl, die Sie erhalten, ist die Bytes, die von fwrite geschrieben werden. Aber Sie können dies zur Fehlerüberprüfung verwenden, denn wenn Sie eine Antwort von 0 zurück erhalten, bedeutet dies, dass fwrite nichts schreiben konnte, wahrscheinlich weil Apple die Serververbindung geschlossen hat. Also ist es nicht das fwrite mit der 0 Antwort, das ist das Problem, es ist ein vorheriges fwrite, das erfolgreich gesendet wurde, aber da war etwas daran, das Apple nicht mochte, also schlossen sie die Serververbindung. Wenn Sie "ORDER BY id" mit der SELECT-Anweisung verwenden, können Sie herausfinden, wo das Problem aufgetreten ist, und von dort weiter PUSH ausführen. – jsherk

Antwort

1

Das Echo "139" ist der Rückgabewert von fwrite(). Es ist die Anzahl von Bytes von fwrite() geschrieben

See: PHP: fwrite

Verwandte Themen