3

在多播 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'的值......等等?

4

2 回答 2

3

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

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

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

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

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

于 2013-07-17T14:41:49.850 回答
-2

把它做成这样的地图:

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

JSONArray在对象中调用它。

于 2013-07-17T06:53:39.757 回答