解析云代码 GeoPoint
Posted
技术标签:
【中文标题】解析云代码 GeoPoint【英文标题】:Parse Cloud Code GeoPoint 【发布时间】:2016-06-01 07:34:44 【问题描述】:我有一个 Parse App,它有两个基本对象。第一个对象“User”有一个名为“location”的属性,它存储一个 GeoPoint。
第二个对象是“Sighting”,它有一个带有 GeoPoint 的“location”属性。
在我的云代码中,我成功地在“Sighting”对象上引入了 aftersave 功能,以便在保存目击后向所有人发送推送通知。
但是我想要实现的只是发送一定范围内的用户。
我找到了 query.withinKilometeres,但我不明白如何比较所有 User."Locations" 并将保存的对象 "Location" 作为基础。此后向所有返回的用户发送推送。
云代码对我来说完全陌生,因此感谢您的帮助。
谢谢
詹姆斯
【问题讨论】:
【参考方案1】:推送的目标是_Installation。 在您的问题中,您应该为设备的相关 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);
);
matchesQuery 有一个限制。在这种情况下,您不能发送超过 1000 个用户(以获取相关安装)。
所以我建议你把位置信息放在_Installation中,这样更有意义(你的用户可能有多个设备,但用户不能分成2个地方)
【讨论】:
哇,谢谢。解析云比我预期的要困难,所以这是否会有效地推送到目击位置 1 公里内的每个安装? 性能取决于您的设计和结果大小。查询性能是推送的重点之一。(但有时parse.com延迟可能1~30分钟才能推送)以上是关于解析云代码 GeoPoint的主要内容,如果未能解决你的问题,请参考以下文章