2017-05-05 5 views
11

APNS経由でプッシュを送信する際に問題があります。それは私たちがリンゴから間違った反応を得ているようです。プッシュは送信されますが、エラー応答が返され、プッシュが複数回送信されます。他の誰かが同様の問題を経験したことがありますか?APNSプッシュ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

どのエラーが表示されますか?あなたの質問にそれを含めてください。 – ventiseis

+0

@ventiseisログに表示される唯一のエラーは「8-Invalid token」です。これは場合によっては有効な応答です –

+0

トークンは正しいと思われますが、エラーはそうではないと言いますか?トークンが実際に動作することをどのように確認しますか? – DanFromGermany

答えて

1

私はあなたが誤解を誤解していると思います。通常、レスポンスコードはあなたのリストを管理するのに役立ちます。 「無効なトークン」エラーが発生した場合は、通常、更新されたトークンが添付されます。無効なトークンを削除し、新しいトークンを挿入します。 APNSは自動的にメッセージを「転送」し、通知はあなたの最新の状態を維持するのに役立つことに留意してください。

更新されたトークンを取得していない場合は、アプリが削除され、再インストールされていない可能性がありますので、トークンは無効です。

関連する問題