在多播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'的值......等等?
答案 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
对象中调用它。