背景:我已经实现了GCM启用Android应用程序,用于收到通知,并且通知是由php开发的网站发送的,我们已经创建了一个html for m进入annoncement和按钮提交。我们提交这到php文件调用哪个获取所有注册用户并运行代码将消息发送给所有用户。
<?php
include_once 'db_functions.php';
include_once 'gcm.php';
$gcm = new GCM();
$db_functions = new DB_Functions();
$alluser = $db_functions->getAllUsers();
$message = array("price" => $message);
ob_start();
while ($row = mysqli_fetch_assoc($alluser)) {
echo "\n" . $row["name"] . "--";
$result = $gcm->send_notification(
array($row["gcm_regid"]),
$message);
echo $result;
}//End of while statement
?>
问题:当我通过使用GCM提交表单向Android应用程序发送消息时,调用相同的php网页运行多次,导致客户端Android应用程序中出现重复消息。
任何人都可以帮助我理解或提供我讨论此问题的链接。 可能的问题可能是用户数量增加,并且每次使用需要很长时间运行此代码。 任何优化方面的帮助都将受到高度赞赏。
答案 0 :(得分:1)
我不知道您使用的GCM库,但请注意,您也可以使用ID列表(最多1000个)调用GCM以发送相同的消息。因此,如果您有1000个用户,那么您不需要拨打1000个电话。除非您的信息对每个用户而言都不同,但它看起来并不像。
除此之外,我不认为你的代码有问题。可能需要很长时间才能提交表格两次。或者您在按钮上有一些javascript来提交表单,使其提交两次?
答案 1 :(得分:0)
感谢您的评论。
基本上我发现这个问题是由于浏览器刷新了网络上的发送消息php页面(棒棒糖网络问题)所以它导致同一个消息被发送多次没时间。
为了解决这个问题,我重新设计了PHP页面,即表单接受消息并使用请求重定向获取概念的概念发送消息。 链接供您参考。 https://en.wikipedia.org/wiki/Post/Redirect/Get 所以这个问题不会因刷新而发生。
还要感谢Jorgen指出向gcm服务器发送请求以获取所有gcm注册ID的概念,它提高了性能。