当特定对象的值已更新时,我需要向用户触发推送通知。
例如,在待办事项应用程序中,如果用户与时钟警报共享任务列表,如果为某些用户更新时钟警报的时间,则应通过推送通知通知其他每个人。
谢谢。
干杯
答案 0 :(得分:0)
答案 1 :(得分:0)
一旦对象更新,您就可以使用Cloud Code触发推送。您很可能希望查看afterSave
挂钩以向所有相关用户发送通知。
然而,有一个钩子的问题,他们被限制为3秒的挂钟时间,并且根据你需要查询的用户数量,它可能是不够的。所以我的建议是在一个特殊的表中创建一个条目(让我们称之为NotificationQueue),后台作业可以查询后台作业,后台作业最长可以运行15分钟。
因此,您将安排一个后台作业,“轮询”此表以发送新事件以发送通知,将通知发送给用户,然后从该表中删除该对象。
我的方法看起来像的一些伪代码
afterSave hook
Parse.Cloud.afterSave("YourObjectClass", function(req) {
// Logic to check if you should really send out a notification
// ...
var NotificationObject = Parse.Object.extend("NotificationQueue");
var notification = new NotificationObject();
notification.set("recipients", [..array of user objects/ids..]);
notification.save(null, {
success: function(savedObject) {
// New object saved, it should be picked up by the job then
},
error: function(object, error) {
// Handle the error
}
});
});
后台工作
Parse.Cloud.job("sendNotifications", function(req,res) {
// setup the query to fetch new notification jobs
var query = new Parse.Query("NotificationQueue");
query.equalTo("sent", false);
query.find({
success: function(results) {
// Send out the notifications, see [1] and mark them as sent for example
},
error: function(error) {
// Handle error
}
});
// ...
});
[1] https://www.parse.com/docs/push_guide#sending/JavaScript
[2] https://www.parse.com/docs/cloud_code_guide#functions-aftersave
[3] https://www.parse.com/docs/cloud_code_guide#jobs