Я новый разработчик приложения для Android. Я отправляю уведомления с PHP-кода на устройства Android с использованием GCM. Я сделал массив всех идентификаторов устройств и отправил, но проблема в том, что я отправляю более тысячи устройств. Я обнаружил ошибку внутреннего сервера. Мой код ниже
function _send_notification($registatoin_ids = '', $message = '') { $url = 'https://android.googleapis.com/gcm/send'; $fields = array( 'registration_ids' => $registatoin_ids, 'data' => $message, ); //pr($fields); $headers = array( 'Authorization: key=' . $this->GOOGLE_API_KEY, 'Content-Type: application/json', 'Connection: keep-alive', 'Keep-Alive: 300' ); $ch = curl_init(); // Set the url, number of POST vars, POST data curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); //curl_setopt($ch, CURLOPT_CONNECT_ONLY, 1); curl_setopt($ch, CURLOPT_TIMEOUT, 10000); // drop connection after 10000 seconds // Disabling SSL Certificate support temporarly curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields)); // Execute post $result = curl_exec($ch); if ($result === FALSE) { die('Curl failed: ' . curl_error($ch)); } // Close connection curl_close($ch); return $result; //exit; }
Пожалуйста, помогите мне
Максимальное количество идентификационных номеров регистрации, которые вы можете отправить, – 1000. Вам нужно будет разбить его на несколько вызовов с завихрением с группировками из 1k регистрационных идентификаторов.
function _send_notification($registration_ids = '', $message = '') { $url = 'https://android.googleapis.com/gcm/send'; $groups = array_chunk($registration_ids, 1000); foreach($groups as $group) { $fields = array( 'registration_ids' => $group, 'data' => $message, ); // ... // rest of your curl code } }