2017-05-05 18 views
11

Mamy pewne problemy z wysyłaniem wiadomości za pośrednictwem APNS. Jak się wydaje, otrzymujemy błędne odpowiedzi od Apple. Przesyłanie jest wysyłane, ale otrzymujemy odpowiedź błędu, która prowadzi do wysyłania wysłanych wiele razy. Czy ktoś inny miał podobne problemy lub coś przegapiłem?APNS Push PHP błędna odpowiedź

<?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

Jakiego błędu dostałeś? Proszę uwzględnić to w swoim pytaniu. – ventiseis

+0

@ventisejest jedynym błędem, który widzimy w naszych dziennikach jest "Nieprawidłowy token 8", który jest prawidłową odpowiedzią w niektórych przypadkach –

+0

Więc uważasz, że token jest poprawny, ale błąd mówi, że nie jest? Jak sprawdzić, czy tokeny rzeczywiście działają? – DanFromGermany

Odpowiedz

1

Myślę, że nie rozumiesz błędu. Zazwyczaj kody odpowiedzi służą do zarządzania listą. Jeśli pojawi się błąd "nieprawidłowego tokena", zwykle towarzyszy mu zaktualizowany token, usuń nieprawidłowy i wstaw nowy w swoim miejscu. Należy pamiętać, że APNS automatycznie przekazuje wiadomość, a powiadomienie ma na celu pomóc Ci być na bieżąco.

Jeśli nie otrzymujesz zaktualizowanego tokenu, być może aplikacja została usunięta i nie została ponownie zainstalowana, więc token jest po prostu nieprawidłowy.

Powiązane problemy