2017-05-05 2 views
11

Nous avons quelques problèmes avec l'envoi de Pushes via APNS. Comme il semble que nous obtenons de mauvaises réponses de Apple. La poussée est envoyée, mais nous obtenons une réponse d'erreur, ce qui conduit à des poussées envoyées plusieurs fois. Est-ce que quelqu'un d'autre a connu des problèmes similaires ou est-ce que quelque chose me manque?APNS Pousser une mauvaise réponse PHP

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

Quelle erreur recevez-vous? Veuillez l'inclure dans votre question. – ventiseis

+0

@ventiseis la seule erreur que nous voyons dans nos logs est '8-Invalid token', qui est une réponse valide dans certains cas –

+0

Donc vous croyez que le jeton est correct mais l'erreur dit qu'il ne l'est pas? Comment vérifiez-vous que les jetons fonctionnent réellement? – DanFromGermany

Répondre

1

Je pense que vous ne comprenez pas l'erreur. Généralement, les codes de réponse sont destinés à vous aider à gérer votre liste. Si vous obtenez une erreur "jeton invalide", elle est généralement accompagnée d'un jeton mis à jour, supprimez le jeton invalide et insérez le nouveau à sa place. Gardez à l'esprit que APNS "transmet" le message automatiquement et que l'avis est juste pour vous aider à rester à jour.

Si vous n'obtenez pas le jeton mis à jour, il se peut que votre application ait été supprimée et non réinstallée. Le jeton est donc tout simplement non valide.