Это может быть дубликат вопроса.Однако я не видел правильного ответа во время поиска в Google.Вот вопрос.
У меня есть приложение чата.И хотите использовать push-уведомление для уведомления пользователя при получении нового сообщения.
Я где-то читал, что не должен открывать и закрывать соединение для каждого полученного сообщения и отправлять push-уведомление пользователю.Я должен открыть соединение и оставаться на связи с сервером Apple все время.когда есть сообщение, отправьте уведомление пользователю.
Если это так, есть ли какой-либо пример для того, чтобы оставаться на связи все время, и когда полученное сообщение отправляется на уведомление пользователя.
Я нашел в каком-то блоге.
function send_mobile_notification_request($user_mobile_info, $payload_info)
{
//Default result
$result = -1;
//Change depending on where to send notifications
$pem_preference = "production";
$user_device_type = $user_mobile_info['user_device_type'];
$user_device_key = $user_mobile_info['user_mobile_token'];
if ($user_device_type == "iOS") {
$apns_url = NULL;
$apns_cert = NULL;
//Apple server listening port
$apns_port = 2195;
if ($pem_preference == "production") {
$apns_url = 'gateway.push.apple.com';
$apns_cert = __DIR__.'/cert-prod.pem';
}
//develop .pem
else {
$apns_url = 'gateway.sandbox.push.apple.com';
$apns_cert = __DIR__.'/cert-dev.pem';
}
$stream_context = stream_context_create();
stream_context_set_option($stream_context, 'ssl', 'local_cert', $apns_cert);
$apns = stream_socket_client('ssl://' . $apns_url . ':' . $apns_port, $error, $error_string, 2, STREAM_CLIENT_CONNECT, $stream_context);
$apns_message = chr(0) . chr(0) . chr(32) . pack('H*', str_replace(' ', '', $user_device_key)) . chr(0) . chr(strlen($payload_info)) . $payload_info;
if ($apns) {
$result = fwrite($apns, $apns_message);
}
@socket_close($apns);
@fclose($apns);
}
return $result > 0;
}
function create_payload_json($message) {
//Badge icon to show at users ios app icon after receiving notification
$badge = "0";
$sound = 'default';
$payload = array();
$payload['aps'] = array('alert' => $message, 'badge' => intval($badge),'sound' => $sound);
return json_encode($payload);
}
Код источника: http://www.assafelovic.com Этот код открывает соединение и отправляет уведомление, а затем закрывает соединение.Когда я получаю 1000 сообщений в день, слишком много запросов на открытие / закрытие соединения.Есть ли мнение по этой теме?
Спасибо и извините, если дублировал вопрос ...