加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

如何使用php curl在Firefox中发送推送消息

发布时间:2020-12-13 16:59:30 所属栏目:PHP教程 来源:网络整理
导读:我已经为Chrome实现了推送通知,当我需要向GCM发送推送消息时,我使用了以下 PHP函数: function send_push_message($subscription_ids){ // Set GCM endpoint $url = 'https://android.googleapis.com/gcm/send'; $fields = array( 'registration_ids' = $sub
我已经为Chrome实现了推送通知,当我需要向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);
}

(我以前存储过订阅)

我想我可以使用这个url:https://updates.push.services.mozilla.com/push为Firefox做这样的事情

但我不知道自己要做什么.

我需要在Mozilla注册我的网站才能做到这一点,就像谷歌一样吗?

请帮忙!

解决方法

我自己的解决方案,(一位同事帮助解决了我对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 ],"https://updates.push.services.mozilla.com/push/".$subscription["id"] );
            curl_setopt($chs[ $i ],CURLOPT_PUT,TRUE);
            curl_setopt($chs[ $i ],array( "TTL: 86400" ) );
            curl_setopt($chs[ $i ],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 ],"https://android.googleapis.com/gcm/send" );
    curl_setopt($chs[ $i ],TRUE);
    curl_setopt($chs[ $i ],array( "Authorization: key=MY_KEY","Content-Type: application/json" ) );
    curl_setopt($chs[ $i ],FALSE);
    curl_setopt($chs[ $i ],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是一个包含2个键的数组数组:id和browser)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读