-2

特定のオブジェクトの値が更新されたときに、ユーザーにプッシュ通知をトリガーする必要があります。

たとえば、To Do アプリで、ユーザーがクロック アラートを使用してタスクのリストを共有している場合、一部のユーザーのクロック アラートの時間が更新された場合、他のすべてのユーザーにプッシュ通知で通知する必要があります。

ありがとうございました。

乾杯

4

2 に答える 2

0

オブジェクトが更新されたら、Cloud Code を使用してプッシュをトリガーできます。afterSave関係するすべてのユーザーに通知を送信するためのフックを調べたいと思うでしょう。

ただし、フックには落とし穴があります。フックはウォール クロック時間の 3 秒に制限されており、クエリを実行する必要があるユーザーの数によっては、十分でない場合があります。したがって、私の提案は、バックグラウンド ジョブによってクエリされる特別なテーブル (NotificationQueue と呼びましょう) にエントリを作成することです。バックグラウンド ジョブは最大 15 分間実行できます。

したがって、このテーブルを「ポーリング」して通知を送信する新しいイベントを探すバックグラウンド ジョブをスケジュールし、通知をユーザーに送信してから、たとえばこのテーブルからオブジェクトを削除します。

私のアプローチがどのように見えるかのいくつかの擬似コード

afterSave フック

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

于 2014-11-20T16:07:14.083 に答える