я должен оставаться на связи с сервером Apple Push Notification для отправки уведомления

Это может быть дубликат вопроса. Однако я не видел правильного ответа во время поиска в 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 сообщений в день, слишком много запросов на открытие / закрытие соединения. Есть ли мнение по этой теме?

Спасибо и извините если дублировал вопрос …

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector