Я хочу отправить те же сообщения всем устройствам, которые зарегистрированы в приложении, но как отправить их, не делая несколько подключений …
Мой текущий код PHP:
ctx = stream_context_create(); stream_context_set_option($ctx, 'ssl', 'local_cert', 'ck.pem'); $fp = stream_socket_client('ssl://gateway.sandbox.push.apple.com:2195', $err, $errstr, 60, STREAM_CLIENT_CONNECT, $ctx); if (!$fp) { print "Failed to connect $err $errstr\n"; return; } $msg = chr(0) . pack("n",32) . pack('H*', str_replace(' ', '', $deviceToken)) . pack("n",strlen($payload)) . $payload; fwrite($fp, $msg);
Нижняя линия, вы не можете . Вам нужно отправить сообщение каждому токену.
Он не работает как электронная почта, где у вас может быть несколько получателей.
После того, как соединение открыто, вы можете отправить кучу сообщений, что также является предпочтительным способом (на основе SDK Apple).
из SDK:
Вы также должны сохранять соединения с APN через несколько уведомлений. APN могут рассматривать соединения, которые быстро и неоднократно устанавливаются и срываются как атака отказа в обслуживании. После ошибки APN закрывает соединение, в котором произошла ошибка.
Вы можете использовать одно соединение для отправки нескольких сообщений, поэтому вам не нужно открывать несколько подключений. Вы не можете использовать одно сообщение для нескольких устройств.