繁体   English   中英

向所有用户 phonegap 发送推送通知

[英]Send push notification to all user phonegap

我正在尝试向所有使用手机的用户发送通知。 我正在使用 GCM 和 phonegap 推送插件。 我在数据库中保存了一个 registrationId,然后我编写了这个 2 函数,并使用了soap web 服务。 不发送通知。 这是我的代码。 功能:

function sendPush($registrationId, $title, $message) {
    $registrationIds = array(
        $registrationId
    );
    $msg = array(
        'message' => $message,
        'title' => $title,
        'vibrate' => 1,
        'sound' => 1

        // you can also add images, additionalData

    );
    $fields = array(
        'registration_ids' => $registrationIds,
        'data' => $msg
    );
    $headers = array(
        'Authorization: key='.
        'AIzaSyD-sL8HiKyKRWdwxVMmTMYgkqOgVGOiNP8',
        'Content-Type: application/json'
    );
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, 'https://android.googleapis.com/gcm/send');
    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));
    $result = curl_exec($ch);
    if ($result === false) die('Curl failed '.curl_error());
    curl_close($ch);
    return $result;
}

function push() {
    $db = new PDO('mysql:host=localhost;dbname=testf', 'root', '');
    $sql = "select * from client";
    $texte = '<table>';

    // $texte=array();

    foreach($db - > query($sql) as $data) {
        $texte = $texte.
        '#'.$data["regId"];
    }

    $texte = $texte;
    return $texte;
}

电话是:

$client = new nusoap_client('http://localhost/fou/server.php');
$title = $_POST['title'];
$message = $_POST['message'];
$result = $client->call('push');
//echo $result;
$x = explode("#", $result);
$nb = count($x);


for ($i = 0; $i < $v; $i++) {
    $resp = $client->call('sendPush', array('registrationId' => $x[$i], 'titre' => $title, 'message' => $message));
    print_r($resp);
}

像这样尝试:

推送通知.php

<?php

    $message = $_REQUEST['msg'];
    $title = $_REQUEST['title'];

    $user = "root";
    $pass = "";

    // Connect
    $db = new PDO("mysql:host=localhost;dbname=pdo-me", $user, $pass);
    define('API_ACCESS_KEY', 'AIzaSyD-sL8HiKyKRWdwxVMmTMYgkqOgVGOiNP8');

    $msg = array(
        'message' => $message,
        'title' => $title,
        'vibrate' => 1,
        'sound' => 1
    );

    $query = "SELECT regId FROM client";
    $stmt = $db->prepare($query);
    $stmt->execute();
    // set array
    $registrationIds = array();


    // look through query
    while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
        // add each row returned into an array
        $registrationIds[] = $row;
    }

    $fields = array(
        'registration_ids' => $registrationIds,
        'data' => $msg,
    );

    $headers = array(
        'Authorization: key='.API_ACCESS_KEY,
        'Content-Type: application/json'
    );


    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, 'https://android.googleapis.com/gcm/send');
    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));
    $result = curl_exec($ch);
    curl_close($ch);
    print_r($result);
?>

并从cordova应用程序调用该php文件,例如:

http://yoururl.com/PushNotification.php?msg=test&title=LoremIpsum

因此,在这种情况下,它将从您的表中检索所有 registrationId 并将通知发送到所有设备。

编辑1:

在您的应用程序中使用此代码。

//Getting value of title textbox
var title = document.getElementById('title').value;
//Getting value of message textbox
var message = document.getElementById('message').value;
$.ajax({
    type:'POST',
    url: 'http://yoururl.com/PushNotification.php?title='+title+'&msg='+message,
    success: function(data){
        alert("Success: " + data);
    },
    error:function(jqXHR, textStatus, errorThrown){
        alert("Error");
    }
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM