Разбор облачного кода: дилемма множественных push-уведомлений

В моем приложении есть уведомления на основе почтового индекса и каналов.

Когда пользователь меняет почтовый индекс, приложение обновляет Installation новым почтовым индексом.

В моем beforeSave на Installation я беру новые почтовые индексы и подписанные каналы и ищу соответствующие уведомления.

Затем мне нужно отправить уведомления, поскольку они возвращаются к этой установке.

Два вопроса:

  1. Могу ли я просто нажать на объект установки, который попал в beforeSave как таковой:

    return Parse.Push.send({ where: request.object data: data })

или мне нужно сделать запрос на установку для этого objectId?

  1. Я не могу просто нажать на объект уведомления. Мне нужно настроить данные. Если есть несколько уведомлений (маловероятно, но возможно), как лучше всего отправить несколько уведомлений обратно в эту установку (при условии, что я не хочу помещать их все в одно нажатие)?

Я не могу отправлять push-уведомления из цикла for. Могу ли я сделать что-то вроде этого:

return notificationQuery.each().then( function(notification) { 
    //configure push from that notification
    return Parse.Push.send ... etc
})

Спасибо!


person MayNotBe    schedule 14.01.2016    source источник


Ответы (1)


Вы можете отправлять Push-уведомления в parse на основе channels или where(запрос), но не обоих.

Таким образом, вы можете выполнить запрос к Installation class с помощью channel и zipcode:

var query = new Parse.Query(Parse.Installation);
query.equalTo('channels', 'Indians');
query.equalTo('zipcode', "345678");

Parse.Push.send({
  where: query,
  data: {
    action: "com.example.UPDATE_STATUS"
    alert: "Ricky Vaughn was injured in last night's game!",
    name: "Vaughn",
    newsItem: "Man bites dog"
  }
}, {
  success: function() {
    // Push was successful
  },
  error: function(error) {
    // Handle error
  }
});

Надеюсь это поможет.

person Gautam    schedule 14.01.2016
comment
Спасибо. В первом вопросе я имел в виду, могу ли я просто выполнить {where : request.object} или даже {where : [request.object]}, поскольку запрос просто возвращает массив установок, а у меня уже есть нужная мне установка. - person MayNotBe; 14.01.2016
comment
Если у вас уже есть нужные установки, просто используйте каналы в этих установках и отправьте push на нужные. - person Gautam; 14.01.2016
comment
У меня есть установка, и мне нужно только нажать на эту установку. Нужно ли передавать запрос на пуш или можно пройти установку? Каналы не задействованы. - person MayNotBe; 14.01.2016
comment
См. в соответствии с документами, вы можете использовать либо каналы, либо запрос отправить толчок. Поэтому в вашем сценарии просто используйте запрос к zipcode, чтобы сделать это. - person Gautam; 14.01.2016