Разбор облачного кода GeoPoint
У меня есть приложение Parse, которое имеет два основных объекта. Первый объект "Пользователь" имеет свойство "Местоположение", в котором хранится GeoPoint.
Вторым объектом является "Sighting", у которого есть свойство "location" с GeoPoint.
В своем облачном коде я успешно ввел функцию после сохранения на объекте "Sighting", чтобы пуш-уведомление отправлялось всем после сохранения визирования.
Однако то, что я пытаюсь достичь, это только отправлять этих пользователей в пределах определенного диапазона.
Я нашел query.withinKilometeres, но я не могу понять, как сравнить все пользовательские "местоположения" и взять сохраненный объект "Местоположение" в качестве основы. После этого отправьте всем возвращенным пользователям пуш.
Облачный код для меня совершенно чужд, поэтому любая помощь приветствуется.
Спасибо
Джеймс
1 ответ
Цель push - _Installation. В вашем вопросе вы должны сохранить указатель 'user' для соответствующего currentUser устройства.
//afterSave of Sighting
var sighting = request.object;
//means created, not update
if(!sight.existed()){
var location = sighting.get('location');
var userQuery = new Parse.Query(Parse.User);
//1 for example
userQuery.withinKilometeres('location', 1);
var query = new Parse.Query(Parse.Installation);
query.matchesQuery('user', userQuery);
Parse.Push.send({
where:query,
data:{
alert: "this is msg",
title: "this is title"
}
},{useMasterKey:true})
.then(function(){
console.log('push done');
}, function(error){
console.error(error);
});
}
Есть ограничение matchQuery. В этом случае вы не можете отправить более 1000 пользователей (для получения соответствующих установок).
Поэтому я предлагаю вам поместить информацию о местоположении в _Installation, и это имеет больше смысла (у вашего пользователя может быть несколько устройств, но пользователь не может разделиться на 2 места)