Android GCM - 在registration_ids数组中向每个用户发送不同的有效负载

时间:2013-07-17 06:10:23

标签: android push-notification google-cloud-messaging

在多播GCM触发器中,我想向每个用户发送不同的有效负载。 我的GCM json对应数组如下:

$fields = array(
'collapse_key' => 'demo',
'registration_ids' => $registration_ids,
'data' => array('myjson' => 'abc'),
);

请考虑registeration_ids数组,如下所示:

$registration_ids => array('id1','id2','id3');

使用上面提到的GCM json对应的数组,所有用户获得相同的'myjson'值。有没有办法可以设计json对应的数组,以便'id1'获得'abc'作为'myjson'的值,'id2'获得'def'作为'myjson'的值......等等?

2 个答案:

答案 0 :(得分:3)

这是不可能的。多播消息只允许您将相同的消息发送到多个注册ID。

  
      
  • 第三方应用程序服务器可以将消息发送到单个设备或多个设备。同时发送到多个设备的消息称为多播消息。
  •   
  • 要将单个邮件发送给单个用户拥有的多个设备,您可以使用notification_key,如用户通知中所述。
  •   
  • 您在构建请求和响应方面有两种选择:纯文本或JSON。
  •   
  • 但是,要发送多播消息,必须使用JSON。纯文本无效。
  •   
     

registration_ids 一个字符串数组,其中包含接收消息的设备列表(注册ID)。它必须包含至少1个且最多1000个注册ID。要发送多播消息,您必须使用JSON。要将单个消息发送到单个设备,您可以使用只有1个注册ID的JSON对象,或纯文本(见下文)。请求必须包含收件人 - 这可以是注册ID,注册ID数组或notification_key。

请注意,在多播消息中,您仍在发送单个消息。 JSON请求中唯一可以包含多个值的参数是registration_ids

要向不同的设备发送不同的消息,您必须为每个设备发送一个请求(带有单个注册ID或纯文本的JSON)。

答案 1 :(得分:-2)

将它设为这样的地图:

{
  regn: [{
          regn_id: id_1,
          data: abc
         },
         {
          regn_id: id_2,
          data: defg
         },
       ..]
}

JSONArray对象中调用它。