Я работаю над push-уведомлениями и хочу отправить push-уведомления чата в IOS с помощью php. Но когда я отправляю 5 push-уведомлений в apns (Apple Push Notification Server), apns сбрасывает старые push-уведомления и отправляет на устройство только самые последние push-уведомления, когда устройство подключается к сети.
Я ищу решение в Интернете, и одно решение, которое я нашел, - установить время истечения уведомления. Таким образом, я реализовал это решение, потому что моя реальная проблема не решена.
Есть ли способ решить мою проблему. Предложите любое полезное решение или справочный сайт.
push-уведомление IOS с PHP
Ниже приведен пример кода
public function sendIOSNotification($tokens, $data, $envoirement = 'production') {
try {
$payload = json_encode($this->setIosNotificationDataParameters($data));
$deviceTokens = str_replace(array(' ', '<', '>'), '', $tokens['ios']);
// FUNCTION NOTIFICATIONS
$ctx = stream_context_create();
stream_context_set_option($ctx, 'ssl', 'local_cert', config('push-notification.appNameIOS.certificate_' . $envoirement));
stream_context_set_option($ctx, 'ssl', 'passphrase', 'push');
//send notification
$fp = stream_socket_client(
config('push-notification.appNameIOS.ios_push_notification_' . $envoirement), $err, $errstr, 60, STREAM_CLIENT_CONNECT | STREAM_CLIENT_PERSISTENT, $ctx
);
$res = [];
foreach ($deviceTokens as $deviceToken) {
$msg = chr(0) . pack('n', 32) . pack('H*', $deviceToken)
. pack('n', strlen($payload)) . $payload
.pack('N', time()).pack('N', time() + 86400);
$res = json_encode($result);
}
fclose($fp);
\Log::info("=== IOS Notification Send Successfully ===");
return true;
} catch (\Exception $ex) {
$messages = $ex->getMessage() . '::' . $ex->getFile() . '( ' . $ex->getLine() . ' )';
\Log::ifno("===Push Notificaion Exception===");
\Log::ifno($messages);
return true;
}
}