Google云消息传递:向"所有"发送消息用户

时间:2014-11-29 13:03:57

标签: java php android google-cloud-messaging

我正在关注this tutorial以了解GCM系统。我对这部分有疑问:

可以向每个注册用户发送消息,但是如何更改该代码以便我可以向所有已注册的设备发送单个消息?

我已经找到了答案:

sending push notifications to multiple android devices using GCM

Sending Push Notification on multiple devices

(几乎相同的问题) - 但找不到解决我问题的任何答案。

<body>
        <?php
        include_once 'db_functions.php';
        $db = new DB_Functions();
        $users = $db->getAllUsers();
        if ($users != false)
            $no_of_users = mysql_num_rows($users);
        else
            $no_of_users = 0;
        ?>
        <div class="container">
            <h1>No of Devices Registered: <?php echo $no_of_users; ?></h1>
            <hr/>
            <ul class="devices">
                <?php
                if ($no_of_users > 0) {
                    ?>
                    <?php
                    while ($row = mysql_fetch_array($users)) {
                        ?>
                        <li>
                            <form id="<?php echo $row["id"] ?>" name="" method="post" onsubmit="return sendPushNotification('<?php echo $row["id"] ?>')">
                                <label>Name: </label> <span><?php echo $row["name"] ?></span>
                                <div class="clear"></div>
                                <label>Email:</label> <span><?php echo $row["email"] ?></span>
                                <div class="clear"></div>
                                <div class="send_container">                                
                                    <textarea rows="3" name="message" cols="25" class="txt_message" placeholder="Type message here"></textarea>
                                    <input type="hidden" name="regId" value="<?php echo $row["gcm_regid"] ?>"/>
                                    <input type="submit" class="send_btn" value="Send" onclick=""/>
                                </div>
                            </form>
                        </li>
                    <?php }
                } else { ?> 
                    <li>
                        No Users Registered Yet!
                    </li>
                <?php } ?>
            </ul>
        </div>
    </body>

我试图更改代码,但是我的更改不起作用..

我想将所有regID作为数组放入sendPushNofiy ...

    <body>
            <?php
            include_once 'db_functions.php';
            $db = new DB_Functions();
            $users = $db->getAllUsers();
            if ($users != false)
                $no_of_users = mysql_num_rows($users);
            else
                $no_of_users = 0;
            ?>
            <div class="container">
                <h1>No of Devices Registered: <?php echo $no_of_users; ?></h1>
                <hr/>
                <ul class="devices">
                    <?php
                    if ($no_of_users > 0) {
                        ?>
                        <?php

                            <li>      
$rows = array();

while(($row = mysql_fetch_array($users))) {
    $rows[] = $row['id'];

    }
                                    <form id="<?php echo $rows ?>" name="" method="post" onsubmit="return sendPushNotification('<?php echo $rows ?>')">
                                        <label>Name: </label> <span><?php echo $row["name"] ?></span>
                                        <div class="clear"></div>
                                        <label>Email:</label> <span><?php echo $row["email"] ?></span>
                                        <div class="clear"></div>
                                        <div class="send_container">                                
                                            <textarea rows="3" name="message" cols="25" class="txt_message" placeholder="Type message here"></textarea>
                                            <input type="hidden" name="regId" value="<?php echo $row["gcm_regid"] ?>"/>
                                            <input type="submit" class="send_btn" value="Send" onclick=""/>
                                        </div>
                                    </form>
                                </li>
                            <?php 
                        } else { ?> 
                            <li>
                                No Users Registered Yet!
                            </li>
                        <?php } ?>
                    </ul>
                </div>


    </body>

有了这个,我可以将所有的regid放入数组行......但是如何将数组转移到表单中呢?

   while ($row = mysql_fetch_array($users)) {
          $rows[] = $row["gcm_regid"];

          }

我的问题是如何发送我的数组&#34; row&#34;发送send_message.php?

$ registatoin_ids = array($ regId); &LT;&LT;它确实已经处理数组,但我的输入仅使用一个值,我想传输数组^^

编辑: send_message.php         

if (isset($_GET["regId"]) && isset($_GET["message"])) {
    $regId = $_GET["regId"];
    $message = $_GET["message"];

    include_once './GCM.php';

    $gcm = new GCM();

    $registatoin_ids = array($regId);
    $message = array("price" => $message);

    $result = $gcm->send_notification($registatoin_ids, $message);

    echo $result;
}
?>

2 个答案:

答案 0 :(得分:6)

您有责任维护所有注册用户的注册ID列表。没有API调用来向所有注册用户发送消息。您可以向GCM服务器发送最多1000个注册ID的请求。如果您拥有超过1000个注册用户,则必须将其拆分为多个请求。

答案 1 :(得分:2)

<?php
if (isset($_GET["message"])) {
  include_once 'db_functions.php';
  $db = new DB_Functions();
  $users = $db->getAllUsers();
  $regIds = array();
  if ($users != false){
    while ($row = mysqli_fetch_array($users)) {
        $regIds[] = $row["gcm_regid"];
    }
  }

  include_once './GCM.php';

  $gcm = new GCM();

  $registatoin_ids = $regIds;
  $message = "array("price" => $_GET["message"])";

  $result = $gcm->send_notification($registatoin_ids, $message);

  echo $result;
}
?>