여러 장치에 대한 알림을 보내려고합니다. 그래서 배열에 토큰을 받고, 연결을 열고, 루프 내에서 알림을 보내고, 연결을 닫습니다.여러 장치에 푸시 알림 보내기 : 잠시 후 APNS 응답이 음수입니다.
그러나 9-10 장치 이후에는 전송이 중지됩니다. 나는 애플이 어떻게 든 연결을 끊었다 고 생각한다. 내 코드에 문제가
$message = 'Push';
$passphrase = 'mypass';
$ctx = stream_context_create();
stream_context_set_option($ctx, 'ssl', 'local_cert', 'MyPemFile.pem');
stream_context_set_option($ctx, 'ssl', 'passphrase', $passphrase);
// Open a connection to the APNS server
$fp = stream_socket_client(
'ssl://gateway.push.apple.com:2195', $err,
$errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx);
if (!$fp)
exit("Failed to connect: $err $errstr" . PHP_EOL);
echo 'Connected to Apple service. ' . PHP_EOL;
// Encode the payload as JSON
$body['aps'] = array(
'alert' => $message,
'sound' => 'default'
);
$payload = json_encode($body);
$result = 'Start'.PHP_EOL;
$tokenArray = array('mytoken');
foreach ($tokenArray as $item)
{
// Build the binary notification
$msg = chr(0).pack('n', 32).pack('H*', $item).pack('n', strlen($payload)).$payload;
// Send it to the server
$result = fwrite($fp, $msg, strlen($msg));
if (!$result)
echo 'Failed message'.PHP_EOL;
else
echo 'Successful message'.PHP_EOL;
}
// Close the connection to the server
fclose($fp);
있습니까 :
여기 내 코드입니까? 연결을 한 번 열어야 알림을 보내고 닫아야한다고 생각합니다. 여러 토큰을 사용하여 fwrite()를 수행해야합니까? 나는 어떻게 모르겠다. 어떤 아이디어 나 해결책도 허용됩니다.
는 그런데 대답은 같다 :
Successful message
Successful message
Successful message
Successful message
Successful message
Successful message
Successful message
Successful message
Successful message
Successful message
Failed message
Failed message
Failed message
Failed message
Failed message
...
Failed message
P.S. 동일한 코드로 문자 문제가 있지만 another question으로 해결됩니다. 다른 문제이며 복제본이 아닙니다.
을 앱 위에 토큰 만 가져 가고있어. 나는 점검했다, 너무. 궁금한 점은 루프에 문제가 있으면 연결을 닫고 10 개의 토큰마다 다시 열면 변경됩니까? – kubilay
애플은 가능한 한 오랫동안 연결을 열어두기를 원합니다. (오류가 발생하면 닫히기 때문에 짜증납니다.) 사과가 연결을 끊는 원인이되는 알림에 문제가 있습니다. 향상된 형식의 프로토콜을 사용해보십시오. 또는 APNS-PHP http://code.google.com/p/apns-php/와 같은 기존 라이브러리를 사용해보고 문제가 무엇인지 확인하십시오. – Redth
내 데이터베이스에 첫 번째 항목으로 유효한 토큰을 넣으면 true라고 생각합니다. 그러나 토큰을 두 번째 위치 또는 다른 위치로 이동하면 첫 번째 항목으로 유효하지 않은 토큰을 사용하여 알림을받지 못합니다. – emotality