是否可以将消息推送到所有使用应用程序ID注册的设备


Is that possible to push message to all the devices registered with a Application ID?

我需要用PHP代码将消息推送到GCM服务器,该代码在服务器上运行并触发。

可用的代码仅用于以数组的形式推送到特定的注册ID。我试图避免存储设备的注册ID,并将其推送到应用程序ID/Sender ID下的所有已注册设备。

有没有可能把所有的设备都广为传播。

我使用的PHP代码是

<?php
$regID=$_GET['regID'];
$registatoin_ids=array($regID);
$msg=array("message"=>'HI Testing');
$url='https://android.googleapis.com/gcm/send';
$fields=array(
    'registration_ids' => $registatoin_ids,
    'data' => $msg
);
$headers=array(
    'Authorization: key=AIzaSyDioLlUNZYx0qxXzB92x8kJHcKvz4PGArM',
    'Content-Type: application/json'
);
$ch=curl_init();
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_POST,true);
curl_setopt($ch,CURLOPT_HTTPHEADER,$headers);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);
curl_setopt($ch,CURLOPT_POSTFIELDS,json_encode($fields));
$result=curl_exec($ch);
curl_close($ch);
echo $result;
?>

从文档

在一个HTTP请求中,最多可以向1000设备发送推送消息。

如果不说明所有注册设备的注册ID,就不可能向这些设备广播GCM消息。您无法避免将注册ID发送到服务器并存储在那里。

您可以使用新的GCM PubSub功能为设备订阅GCM主题:https://developers.google.com/cloud-messaging/topic-messaging

GCM主题消息允许您的应用服务器向选择了特定主题的多个设备发送消息。基于发布/订阅模式,主题消息支持每个应用程序最多100万次订阅。应用服务器向主题发送有效负载高达2KB的消息,GCM处理消息路由并将消息可靠地传递到正确的设备。例如,天气预报应用程序的用户可以选择"恶劣天气警报"主题,并接收威胁特定地区的风暴通知。

然后,您将能够向GCM发送一个微小的HTTP请求,只指定主题名称。

https://gcm-http.googleapis.com/gcm/send
Content-Type:application/json
Authorization:key=AIzaSyZ-1u...0GBYzPu7Udno5aA
{
  "to": "/topics/foo-bar",
  "data": {
    "message": "This is a GCM Topic Message!",
   }
}