푸시 알림을 여러 장치에 보내는 PHP 스크립트가 있습니다. 내용은 장치마다 다릅니다. 어떻게 든 첫 번째 요청 만 수신되므로 큐의 첫 번째 장치 만 푸시 알림을 수신하고 있습니다. 오류가 무엇입니까?첫 번째 푸시 알림 만받습니다 PHP
$sql = "SELECT * FROM pushdevices";
$query = mysql_query($sql);
$apnsHost = 'gateway.push.apple.com';
$apnsPort = 2195;
$apnsCert = ...;
$streamContext = stream_context_create();
stream_context_set_option($streamContext, 'ssl', 'local_cert', $apnsCert);
$apns = stream_socket_client('ssl://' . $apnsHost . ':' . $apnsPort, $error, $errorString, 2, STREAM_CLIENT_CONNECT, $streamContext);
while($result = mysql_fetch_assoc($query)) {
[...]
$deviceToken = $result["deviceToken"];
$alertBody = '...';
$payload['aps'] = array('alert' => $alertBody, 'badge' => $badge, 'sound' => 'default');
$payload = json_encode($payload);
if ($apns)
{
$apnsMessage = chr(0) . chr(0) . chr(32) . pack('H*', str_replace(' ', '', $deviceToken)) . chr(0) . chr(strlen($payload)) . $payload;
$is = fwrite($apns, $apnsMessage);
echo "sent: $deviceToken<br />";
}
else
{
echo "Fehler!";
var_dump($error);
var_dump($errorString);
}
}
}
fclose($apns);
?>
출력에는 모든 장치로 보내지 만 첫 번째 장치 만 수신합니다. $ (fwrite)의 반환 값을 취하는 것은 처음에는 140이고 155는 오류 코드일까요?
답변 해 주셔서 감사합니다.
fwrite 반환 값은 쓰여진 바이트 수입니다. 첫 번째 글쓰기에 140이 있고 다른 요청에 155가 있다면 ... $ apnsMessage의 값을 로그에 남기십시오. – LombaX
@LombaX 답을 주셔서 감사합니다. $ apnsMessage :'140 L "을 프린트하면 출력됩니다. "경고": "... 메시지 ...", "배지": 1, "소리": "기본값"}}이 경우 메시지는 다음과 같이 나타납니다. 및 155 ² '\t × \t ü "M"0 "]; üNî [êX"Bv "A \"aps \ ": \"경고 \ ": \"메시지 ... \ ", "012", "소리": \ "기본 \"}} "" – Dion
그래, 이미 문제를 발견 했어, 어쨌든 고마워! – Dion