В моем проекте есть функция push-уведомлений iOS.Я использую функцию fread для получения кода состояния.
Мой код:
$apns = stream_socket_client('ssl://gateway.push.apple.com:2195',
$err,
$errstr,
60,
STREAM_CLIENT_CONNECT | STREAM_CLIENT_PERSISTENT,
$ctx);
$deviceIds = array(
'deviceID1',
'deviceID2',
'deviceID3',
'deviceID4'
);
foreach ($deviceIds as $deviceId) {
$payload = array();
$payload['aps'] = array(
'alert' => $message_ios,
'badge' => (int) $badge,
'sound' => 'default',
'lang' => "$language_type",
);
$payload['c'] = array(
'section_type' => $section_type
);
$payload = json_encode($payload);
$message = chr(0) . pack('n', 32) . pack('H*', $deviceId) . pack('n', strlen($payload)) . $payload;
$result = fwrite($apns, $message, strlen($message));
$response = fread($apns, 6);
$statusCode = $response['status_code'];
}
fclose($apns);
Но для получения ответа fread требуется больше времени, когда я пытаюсь отправить уведомление на несколько устройств идля этого используется только одно соединение APN. Если я пытаюсь отправить уведомление на один идентификатор устройства, этот код работает правильно.как решить проблему?
Пожалуйста, помогите мне.