简体   繁体   中英

Android push notification GCM

I am working on android GCM for my application to send push notification to users. And I am following this tutorial

http://www.androidhive.info/2012/10/android-push-notifications-using-google-cloud-messaging-gcm-php-and-mysql/

But in This tutorial its shown that we can send push notification to individual device. But I want to send push notification to all the users at once. So how can I implement this technique.

I have already faced the same problem and solved it. To send push notification to all the users at once, you have to do all the things listed on the tutorial you've mentioned. But you have to change two files: index.php and send_message.php

  1. In index.php :

    a. Replace the JavaScript code with the following:

     $(document).ready(function(){ }); function sendToAll(){ var data = $("#sendtoall").serialize(); $("#sendtoall").unbind('submit'); $.ajax({ url: "send_message.php", type: 'GET', data: data, beforeSend: function() { }, success: function(data, textStatus, xhr) { $('.txt_message').val(""); }, error: function(xhr, textStatus, errorThrown) { } }); return false; } 

    b. Replace the code inside body tag with the following (skipping first five lines):

     <div class="container"> <h1>No of Devices Registered: <?php echo $no_of_users; ?></h1> <hr/> <ul class="devices"> <?php if ($no_of_users > 0) { ?> <li> <form id="sendtoall" name="" method="post" onsubmit="return sendToAll()"> <div class="send_container"> <textarea rows="3" name="message" cols="25" class="txt_message" placeholder="Type message here"></textarea> <?php while ($row = mysql_fetch_array($users)) { ?> <input type="hidden" name="regId[]" value="<?php echo $row["gcm_regid"]; ?>"/> <?php } ?> <input type="submit" class="send_btn" value="Send To All" onclick=""/> </div> </form> </li> <?php } else { ?> <li> No Users Registered Yet! </li> <?php } ?> </ul> </div> <div class="clear"></div> 
  2. In send_message.php :

    Replace the line:

     $registatoin_ids = array($regId); 

    with

     $registatoin_ids = $regId; 

You can also take a "backend as a service" where the push module is integrated. So you can notify all participants from the backend. I have some time used " apiomat " and was satisfied

Yes you can Send With GCM as it allows Multicast Messagin service also.

with Using Below Formate:

{
  "registration_ids" : ["APA91bHun4MxP5egoKMwt2KZFBaFUH-1RYqx..."],
  "data" : {
    ...
  },
}

Here value of key registration_ids should be as follow :

A string array with the list of devices (registration IDs) receiving the message. It must contain at least 1 and at most 1000 registration IDs. To send a multicast message, you must use JSON. For sending a single message to a single device, you could use a JSON object with just 1 registration id, or plain text (see below). Required.

Hope it Will help you.

GCM topic messaging allows your app server to send a message to multiple devices that have opted in to a particular topic. Based on the publish/subscribe model, topic messaging supports up to one million subscriptions per app. The app server sends messages with payloads up to 2KB to the topic, and GCM handles the message routing and delivers the message reliably to the right devices. For example, users of a weather forecasting app could opt in to a "severe weather alerts" topic and receive notifications of storms threatening specified areas. for sending a message to all user, you can use Topics.
Source: Google Developer website

and if you take a look you can see all users are registering to a topic. by the topics you can send to all users with a topic.

for sending to topic you have to use this page https://developers.google.com/cloud-messaging/topic-messaging

and for testing the push notifications, you can use "advanced rest client" in chrome extensions. 推送通知测试

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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