我有一个Parse App,它有两个基本对象。第一个对象“User”有一个名为“location”的属性,用于存储GeoPoint。
第二个对象是“Sighting”,它具有带GeoPoint的“location”属性。
在我的云代码中,我已经成功地在“瞄准”对象上引入了一个后退功能,以便在保存目击后向每个人发送推送通知。
然而,我想要实现的只是在一定范围内发送这些用户。
我找到了query.withinKilometeres,但我无法理解如何比较所有用户。“位置”并将保存的对象“位置”作为基础。此后发送所有返回的用户。
云代码对我来说完全陌生,所以任何帮助都会受到赞赏。
由于
詹姆斯
答案 0 :(得分:0)
推送的目标是_Installation。 在您的问题中,您应该为设备的相关currentUser维护指针“user”。
//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);
});
}
matchesQuery有一个限制。在这种情况下,您不能发送超过1000个用户(以获取相关安装)。
所以我建议你把位置信息放在_Installation中,它更有意义(你的用户可能有多个设备,但是用户不能分成两个地方)