2012-09-21 8 views
0

저는 애플의 APN 서버에 푸시 알림을 보낼 작은 PHP 스크립트를 구현했습니다. 내 앱에서 푸시 알림을 위해 등록한 모든 장치 토큰이있는 데이터베이스가 있습니다. 내 스크립트는 데이터베이스에 토큰을 쿼리하여 Apple에 보냅니다. 모든 것이 큰 것으로 작동하지만 ... 수동으로 잘못된 토큰을 테이블에 삽입하고 스크립트를 다시 실행했습니다.잘못된 토큰을 보낸 후 iOS 푸시 알림 오류가 발생했습니다.

잘못된 토큰이 Apple에 전송 된 후에는 그 이후의 모든 알림이 해당 장치에 전달되지 않는다는 것을 알았습니다. Apple은 모든 것이 정상적으로 작동하면 아무런 문제가없는 것으로 보이지만 문제가 발생하면 KO 코드를 보냅니다. 나는 틀린 토큰 때문에 애플로부터 오류를 얻지 만, 나중에 다른 모든 통지에 대해서는 어떤 응답도 얻지 못한다.

데이터베이스 내의 모든 토큰에 대해 하나의 연결 만 엽니 다.

fwrite($this->hFile, $command); 

:

$this->hFile = stream_socket_client(self::$serverUrl[$environment], $err, $errstr, 60, STREAM_CLIENT_CONNECT, $streamContext); 

마지막으로 내가 메시지를 보내

$streamContext = stream_context_create(array(
  'ssl' => array(
   'local_cert' => $this->signFile 
 ) 
 )); 

는 그 다음 APN 서버와의 통신 채널을 시작합니다

나는이 라인 소켓 컨텍스트를 준비 나는 모든 통지에 대한 새로운 연결을 설정하는 줄 알았지 만, 먼저 의견을 물어보고 싶었습니다 ...

그건 그렇고, 나는 PHP가 최선의 선택이 아니라는 것을 알고 있지만 어딘가에서 요구 사항으로 왔고 우리는이 방법으로 시스템을 설정해야합니다.

감사합니다. 좋은 하루 보내십시오.

알렉스.

답변

0

마침내 해결책을 찾았습니다 : 토큰이 유효하지 않은 것을 감지하자마자 연결을 닫고 다시 열어 잘못 된 토큰을 보내기 시작합니다.