1

我正在为我的应用程序开发 android GCM 以向用户发送推送通知。我正在关注本教程

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

但在本教程中,它显示我们可以向单个设备发送推送通知。但我想一次向所有用户发送推送通知。那么我该如何实现这种技术。

4

4 回答 4

5

我已经面临同样的问题并解决了。要一次向所有用户发送推送通知,您必须完成您提到的教程中列出的所有事情。但是您必须更改两个文件:index.phpsend_message.php

  1. index.php

    一个。将 JavaScript 代码替换为以下内容:

    $(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;
    }
    

    湾。将 body 标记内的代码替换为以下内容(跳过前五行):

    <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. send_message.php

    换行:

    $registatoin_ids = array($regId);
    

    $registatoin_ids = $regId; 
    
于 2013-09-03T12:01:05.667 回答
1

您还可以采用集成推送模块的“后端即服务”。因此,您可以从后端通知所有参与者。我有一段时间使用“ apiomat ”并且很满意

于 2013-05-29T07:38:08.817 回答
0

的,您可以使用 GCM 发送,因为它也允许多播消息服务。

使用以下甲酸盐:

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

这里键registration_ids的值应该如下:

带有接收消息的设备列表(注册 ID)的字符串数组。它必须包含至少 1 个且最多 1000 个注册 ID。要发送多播消息,您必须使用 JSON。要将单个消息发送到单个设备,您可以使用仅具有 1 个注册 ID 或纯文本的 JSON 对象(见下文)。必需的。

希望它会帮助你。

于 2013-04-27T13:42:57.433 回答
0

GCM 主题消息传递允许您的应用服务器向已选择加入特定主题的多个设备发送消息。基于发布/订阅模型,主题消息传递支持每个应用最多一百万个订阅。应用服务器向主题发送有效负载高达 2KB 的消息,GCM 处理消息路由并将消息可靠地传递到正确的设备。例如,天气预报应用程序的用户可以选择加入“恶劣天气警报”主题并接收风暴威胁指定区域的通知。要向所有用户发送消息,您可以使用主题。
来源:谷歌开发者网站

如果您看一下,您会看到所有用户都在注册一个主题。通过主题,您可以将主题发送给所有用户。

要发送到主题,您必须使用此页面 https://developers.google.com/cloud-messaging/topic-messaging

并且为了测试推送通知,您可以在 chrome 扩展中使用“高级休息客户端”。 推送通知测试

于 2015-11-11T12:50:53.150 回答