触发推送通知 - 实现特定对象

时间:2014-11-20 12:43:49

标签: ios triggers parse-platform push-notification cloud-code

当特定对象的值已更新时,我需要向用户触发推送通知。

例如,在待办事项应用程序中,如果用户与时钟警报共享任务列表,如果为某些用户更新时钟警报的时间,则应通过推送通知通知其他每个人。

谢谢。

干杯

2 个答案:

答案 0 :(得分:0)

使用本地推送通知服务,请关注reference

可以检查此tutorial

答案 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