Я применил push-уведомления для Chrome, и в тот момент, когда мне нужно отправить push-сообщение в GCM, я использовал следующую функцию PHP:
function send_push_message($subscription_ids){ // Set GCM endpoint $url = 'https://android.googleapis.com/gcm/send'; $fields = array( 'registration_ids' => $subscription_ids, ); $headers = array( 'Authorization: key=API_KEY', 'Content-Type: application/json' ); $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_VERIFYPEER, false); curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields)); // Execute post $result = curl_exec($ch); if ($result === FALSE) { die('Push msg send failed in curl: ' . curl_error($ch)); } // Close connection curl_close($ch); }
(Я ранее сохранил подписки)
Я думаю, что я могу сделать что-то подобное для Firefox, используя этот url: https://updates.push.services.mozilla.com/push
Но я не знаю, что мне делать.
Мне нужно зарегистрировать мой сайт с Mozilla, чтобы сделать это, как в Google?
Пожалуйста помоги!
Мое собственное решение (коллега помог с моей ошибкой в запросе curl to mozilla), сейчас работает
function send_push_message($subscriptionIDs){ if (empty($subscriptionIDs)) return FALSE; $chs = $sChrome = array(); $mh = curl_multi_init(); foreach ($subscriptionIDs as $subscription){ $i = count($chs); switch ($subscription["browser"]){ case "firefox": $chs[ $i ] = curl_init(); curl_setopt($chs[ $i ], CURLOPT_URL, "https://updates.push.services.mozilla.com/push/".$subscription["id"] ); curl_setopt($chs[ $i ], CURLOPT_PUT, TRUE); curl_setopt($chs[ $i ], CURLOPT_HTTPHEADER, array( "TTL: 86400" ) ); curl_setopt($chs[ $i ], CURLOPT_RETURNTRANSFER, TRUE); curl_setopt($chs[ $i ], CURLOPT_SSL_VERIFYPEER, FALSE); curl_multi_add_handle($mh, $chs[ $i ]); break; case "chrome": $sChrome[] = $subscription["id"]; break; } } if (!empty($sChrome)){ $i = count($chs); $chs[ $i ] = curl_init(); curl_setopt($chs[ $i ], CURLOPT_URL, "https://android.googleapis.com/gcm/send" ); curl_setopt($chs[ $i ], CURLOPT_POST, TRUE); curl_setopt($chs[ $i ], CURLOPT_HTTPHEADER, array( "Authorization: key=MY_KEY", "Content-Type: application/json" ) ); curl_setopt($chs[ $i ], CURLOPT_RETURNTRANSFER, TRUE); curl_setopt($chs[ $i ], CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($chs[ $i ], CURLOPT_POSTFIELDS, json_encode( array( "registration_ids" => $sChrome ) ) ); curl_multi_add_handle($mh, $chs[ $i ]); } do { curl_multi_exec($mh, $running); curl_multi_select($mh); } while ($running > 0); for ($i = 0; $i < count($chs); $i++){ curl_multi_remove_handle($mh, $chs[ $i ]); } curl_multi_close($mh); }
($ subscriptionIDs – массив массивов с двумя ключами: id и браузером)
Я думаю, что приведенный ниже URL-адрес может помочь вам https://developer.mozilla.org/en-US/docs/Web/API/Simple_Push_API