웹 서버에서 원격 알림을 보내려면 앱을 만들었습니다. 개발 모드의 앱을 테스트했을 때 모든 알림이 휴대 전화에 올바르게 도착했습니다. AppStore가 출시 된 후 앱에서 더 이상 알림을받지 못했습니다.APNS 푸시 알림이 프로덕션에서 작동하지 않습니다.
여기에 내가 무슨 짓을했는지입니다 :
- 는 생산 및 개발을위한 하나에 대한 개인 키를 만들었습니다.
- Generate 된 이전 CertFile 생성자를 전달하여 내 App ID에 두 개의 SSL 인증서 생성. 나는 정확하게 2 키를 생성하고 AppID에 따라 Dev Center에서 SSL 인증서를 올바르게 전달하기 위해 100 % 확실하게 전달했습니다.
- 내 키 체인 등에서 추출한 .p12 파일을 변환하여 개발 용 파일과 제작 용 파일을 생성했습니다. 단계의 AppID가 연결
- 만든 2 개의 다른 프로비저닝 프로파일 개발을위한 하나 생산 한 1
- 는에 만든 4 단계
- 에서 만든 올바른 프로비저닝 프로파일과 웹 응용 프로그램을 빌드 설정에서 응용 프로그램을 서명 사용자 토큰을 잡아서 저장합니다.
- 푸시 알림 보내기를 테스트하는 PHP 페이지를 만들었습니다.
은 여기 내가 테스트 한 것입니다 :
- 는 테스트 개발이 .PEM이 succesfull 대답 샌드 박스의 링크를 텔넷으로 파일을 생성합니다.
- 생산 링크를 테스트하여 성공적으로 생산 링크에서 텔넷으로 .pem 파일을 생성했습니다.
- 저는 제 웹 애플 리케이션에 내 iPhone의 개발 토큰을 저장했는지 100 % 확신합니다.
- 나는 내 웹 응용 프로그램 서버에 내 iPhone의 생산 토큰을 저장했는지 100 % 확신합니다.
- 저는 Apple 서버 (개발 및 프로덕션 용)에 올바른 메시지를 내 PHP 페이지와 함께 전달할 것입니다.
- PHP 페이지는 항상 Apple 서버 (개발 및 프로덕션 모두)에서 성공적인 메시지를 반환합니다.
$ctx = stream_context_create(); //stream_context_set_option($ctx, 'ssl', 'passphrase', 'development_pwd'); //stream_context_set_option($ctx, 'ssl', 'local_cert', 'ck_development.pem'); //$fp = stream_socket_client('ssl://gateway.sandbox.push.apple.com:2195', $err, $errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx); //test stream_context_set_option($ctx, 'ssl', 'passphrase', 'production_pwd'); stream_context_set_option($ctx, 'ssl', 'local_cert', 'ck_production.pem'); $fp = stream_socket_client('ssl://gateway.push.apple.com:2195', $err, $errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx); //production echo "<p>Connection Open</p>"; if(!$fp){ echo "<p>Failed to connect!<br />Error Number: " . $err . " <br />Code: " . $errstrn . "</p>"; return; } else { echo "<p>Sending notification!</p>"; } $i = 0; foreach ($deviceToken as $dt) { $dt = str_replace(' ' , '' , $dt); $msg = chr(0) . pack('n',32) . pack('H*', $dt) . pack('n',strlen($payload)) . $payload; echo "<p>" . $i . " - Message sent: " . $payload . "<br />Token: ". $dt . "<br />***" . $msg . "***</p>"; $result = fwrite($fp, $msg, strlen($msg)); $i++; if (!$result) echo '<p>Message not delivered ' . PHP_EOL . '!</p>'; else echo '<p>Message successfully delivered ' . PHP_EOL . '!</p>'; } fclose($fp); echo "<p>Total Notifications Sent: " . $i . "</p>"; echo "<p>Connection Closed!</p>"; } ?>
:
여기
알림을 보낼 수있는 PHP 페이지의 코드입니다 : 여기
내가 엑스 코드에 응용 프로그램을 등록하는 방법입니다 결론 : 나는 Test Ap를 가지고있다. PC에서 APN 푸시 알림을받는 p. APNS 푸시 알림을받지 않는 앱 스토어에서 정확히 동일한 앱을 출시했습니다.
저는이 문제를 해결하고 포럼, 스택 오버 플로우 및 Apple Documentations에 대한 약 천 페이지를 읽는 데 필요한 모든 것을 저의 힘으로 만들었습니다.
내 문제에 대한 해결책을 찾는 데 도움이되는 여러분 모두를 기쁘게 생각합니다.
귀하의 정보를 위해서, PHP 스크립트는 토큰이 잘못되었거나 만료 되더라도 "Message successfully delivered"를 반환합니다. – rjobidon