Я следую этому руководству, чтобы понять систему GCM. У меня есть вопрос относительно этой части:
Можно отправлять сообщения каждому зарегистрированному пользователю, но как изменить этот код, чтобы я мог отправить одно сообщение всем зарегистрированным устройствам?
Я уже искал ответы:
отправка push-уведомлений на несколько устройств Android с использованием GCM
а также
Отправка Push-уведомления на нескольких устройствах
(почти такой же вопрос) – но не смог найти ответа, решая мой вопрос.
<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>
с этим я могу получить все региды в строки массива … но как я могу передать массив в форму?
while ($row = mysql_fetch_array($users)) { $rows[] = $row["gcm_regid"]; }
моя проблема в том, как отправить массив «row» в send_message.php?
$ registatoin_ids = array ($ regId); << он уже обрабатывает массив, но мой вход работает только с одним значением, я хочу передать массив ^^
EDIT: 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; } ?>
Вы несете ответственность за ведение списка идентификаторов регистрации всех зарегистрированных пользователей. Нет вызова API для отправки сообщения всем зарегистрированным пользователям. Вы можете отправить серверу GCM запрос с числом регистраций до 1000. Если у вас более 1000 зарегистрированных пользователей, вам придется разделить их на несколько запросов.
<?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; } ?>