如何使用 XHR (Ajax) 通过 GCM 发送推送通知

Posted

技术标签:

【中文标题】如何使用 XHR (Ajax) 通过 GCM 发送推送通知【英文标题】:How to Send a push notification through GCM using XHR (Ajax) 【发布时间】:2016-04-14 05:42:47 【问题描述】:

这是我通过终端发送通知的 curl 命令。它可以正常工作,但是如何在按钮单击时发送通知(使用 XHR 请求)

curl --header "Authorization: key=AIzaSyCjrU5SqotSg2ybDLK0dMusvY" --header Content-Type:"application/json" https://android.googleapis.com/gcm/send -d "\"registration_ids\":[\"f5xzshqcfDE2qiKGJu858nFhqGCuk0uuUC6vm\"]"

【问题讨论】:

【参考方案1】:

您可以编写一个 php 脚本来达到此目的,只需使用客户端发出 XHR 请求,例如 javascript 或您选择的任何其他请求。 这是我几个月前做的 php 脚本,它正在工作。

    <?php
    $message = "\": 3,\"title\": \"High score alert!\",\"\": true,\"custom_field\":  \"score\": 51,\"headlines\": \"And now for something completely different...\" ";
    $apiKey = "Your Key";
    $registrationIDs = array("Registration id");
    $url = 'https://android.googleapis.com/gcm/send';
    // Set POST variables
    $notify = array(
       "alert"=> "great match!",
      "title"=> "Portugal vs. Denmark",
      "icon" => "myicon",
      "badge"=>3,
      "vibrate"=>true,
    "notification"=>"message"
    );

    $fields = array(
    'registration_ids' => $registrationIDs,
    'data' => array( "payload"  => $notify,
    "notification"=>json_encode($notify)));
    $headers = array(
    'Authorization: key=' . $apiKey,
    'Content-Type: application/json'
    );
    $ch = curl_init(); // Open connection
    curl_setopt($ch, CURLOPT_URL, $url );
    // Set the url, number of POST vars, POST data
    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 ));
    var_dump( $url );
    var_dump($headers);
    var_dump(json_encode( $fields ));
    $result = curl_exec($ch);   // Execute post
    if($result === false)
    die('Curl failed ' . curl_error());
$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);
    $response = json_decode($result);
    print_r($response);
    ?>

【讨论】:

感谢您的回答,但我不想使用 php。有没有办法用 javascript 做到这一点 是javascript适合还是你? 是的,我也可以使用 ajax .....有没有办法用 ajax,jquery @Asim Khan 来做到这一点 请阅读this thread

以上是关于如何使用 XHR (Ajax) 通过 GCM 发送推送通知的主要内容,如果未能解决你的问题,请参考以下文章

ajax

Ajax与Comet

AJAX中使用post,get接收发送数据的区别

Springboot ajax xhr 加载失败 404 错误

默认选择一行并使用 jQuery DataTables 发送 XHR 请求

如何通过 GCM 向 iOS 设备发送推送通知?