2017-05-05 2 views
11

Wir haben einige Probleme mit dem Senden von Pushs über APNS. Wie es scheint, bekommen wir falsche Antworten von Apple. Der Push wird gesendet, aber wir erhalten eine Fehlerantwort, die dazu führt, dass Pushs mehrmals gesendet werden. Hat jemand andere ähnliche Probleme erlebt oder vermisse ich etwas?APNS Push PHP falsche Antwort

<?php 
private function checkAppleErrorResponse($apns, PushToken $token) 
{ 

    //byte1=always 8, byte2=StatusCode, bytes3,4,5,6=identifier(rowID). Should return nothing if OK. 
    $apple_error_response = fread($apns, 6); 


    if ($apple_error_response) { 
     //unpack the error response (first byte 'command" should always be 8) 
     $error_response = unpack('Ccommand/Cstatus_code/Nidentifier', $apple_error_response); 

     if ($error_response['status_code'] == '0') { 
      $error_response['status_code'] = '0-No errors encountered'; 
     } else if ($error_response['status_code'] == '1') { 
      $error_response['status_code'] = '1-Processing error'; 
     } else if ($error_response['status_code'] == '2') { 
      $error_response['status_code'] = '2-Missing device token'; 
     } else if ($error_response['status_code'] == '3') { 
      $error_response['status_code'] = '3-Missing topic'; 
     } else if ($error_response['status_code'] == '4') { 
      $error_response['status_code'] = '4-Missing payload'; 
     } else if ($error_response['status_code'] == '5') { 
      $error_response['status_code'] = '5-Invalid token size'; 
     } else if ($error_response['status_code'] == '6') { 
      $error_response['status_code'] = '6-Invalid topic size'; 
     } else if ($error_response['status_code'] == '7') { 
      $error_response['status_code'] = '7-Invalid payload size'; 
     } else if ($error_response['status_code'] == '8') { 
      $error_response['status_code'] = '8-Invalid token'; 
     } else if ($error_response['status_code'] == '255') { 
      $error_response['status_code'] = '255-None (unknown)'; 
     } else { 
      $error_response['status_code'] = $error_response['status_code'] . '-Not listed'; 
     } 

     if ($token->isExistingUser()) { 
      $this->logger->error('#cloudalarm User-Id: ' . $token->getAssociatedUser() . ': Something went wrong with APNS pushing , error is ' . $error_response['status_code']); 
     } else { 
      $this->logger->error('#cloudalarm for simple login id ' . $token->getAssociatedUser() . ': Something went wrong with APNS pushing , error is ' . $error_response['status_code']); 
     } 

     return true; 
    } 

    return false; 
} 
?> 
+0

Welchen Fehler erhalten Sie? Bitte fügen Sie das in Ihre Frage ein. – ventiseis

+0

@ventiseis der einzige Fehler, den wir in unseren Protokollen sehen, ist '8-Invalid token', was in einigen Fällen eine gültige Antwort ist –

+0

Sie glauben also, dass das Token korrekt ist, aber der Fehler sagt, dass es nicht ist? Wie verifizieren Sie, dass die Token tatsächlich funktionieren? – DanFromGermany

Antwort

1

Ich denke, dass Sie den Fehler missverstehen. In der Regel sollen die Antwortcodes Ihnen helfen, Ihre Liste zu verwalten. Wenn Sie einen "ungültigen Token" -Fehler erhalten, wird dieser normalerweise von einem aktualisierten Token begleitet, entfernen Sie den ungültigen und fügen Sie den neuen ein. Denken Sie daran, dass APNS die Nachricht automatisch weiterleitet und die Benachrichtigung nur dazu dient, Sie auf dem Laufenden zu halten.

Wenn Sie das aktualisierte Token nicht erhalten, kann es sein, dass Ihre App gelöscht und nicht neu installiert wurde, sodass das Token einfach ungültig ist.

Verwandte Themen