2017-05-05 10 views
11

APNS를 통해 푸시를 보내는 데 몇 가지 문제가 있습니다. 우리가 사과에서 잘못된 반응을 얻는 것처럼 보입니다. 푸시가 전송되지만 푸시가 여러 번 전송되는 오류 응답이 표시됩니다. 다른 사람이 비슷한 문제를 경험 했습니까?APNS Push 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는 자동으로 메시지를 '전달'한다는 사실을 명심하십시오. 통지는 귀하가 최신 상태로 유지하는 데 도움이됩니다.

업데이트 된 토큰을받지 못하면 앱이 삭제되어 다시 설치되지 않아 토큰이 유효하지 않을 수 있습니다.