解析云代码GeoPoint

时间:2016-06-01 07:34:44

标签: ios parse-platform parse-cloud

我有一个Parse App,它有两个基本对象。第一个对象“User”有一个名为“location”的属性,用于存储GeoPoint。

第二个对象是“Sighting”,它具有带GeoPoint的“location”属性。

在我的云代码中,我已经成功地在“瞄准”对象上引入了一个后退功能,以便在保存目击后向每个人发送推送通知。

然而,我想要实现的只是在一定范围内发送这些用户。

我找到了query.withinKilometeres,但我无法理解如何比较所有用户。“位置”并将保存的对象“位置”作为基础。此后发送所有返回的用户。

云代码对我来说完全陌生,所以任何帮助都会受到赞赏。

由于

詹姆斯

1 个答案:

答案 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中,它更有意义(你的用户可能有多个设备,但是用户不能分成两个地方)