簡體   English   中英

兩次解析雲代碼發送推送通知

[英]Parse Cloud Code Sending Push Notification Twice

我正在嘗試使用雲代碼向目標渠道發送推送通知。 該對象稱為祈禱。 當某人保存“祈禱”時,如果“祈禱”中的新數據不是匿名制作的,則應該將推送通知發送到某些渠道。 祈禱中的布爾值是“匿名”鍵。 因此,我設置了這樣的雲代碼,以確保如果布爾值為false,則發送該值,但是,如果值為true,則不會發送該推送。 現在的問題是,有時它會在非匿名帖子上發送兩次“推送”。

Parse.Cloud.afterSave("Prayers", function(request) {

    var firstName = request.object.get('FirstName');
    var lastName = request.object.get('LastName');
    var userId = request.object.get('UserId');
    var anonymous = request.object.get('Anonymous');
    var anonymousString = anonymous.toString

    var pushQuery = new Parse.Query(Parse.Installation);
    pushQuery.equalTo('channels', userId);
    if (anonymous == false) {
        Parse.Push.send({
            where: pushQuery, // Set our Installation query
            data: {
                alert: firstName + " " + lastName + " " + "just added a prayer request."
            }
        }, {
            success: function() {
                // Push was successful
            },
            error: function(error) {
                throw "Got an error " + error.code + " : " + error.message;
            }
        });
    }

});

乍看之下,您的功能似乎沒有任何問題,但是由於您總是在保存祈禱后嘗試發送推送通知,因此您確定不會兩次保存該對象嗎? 這可能是afterSave被調用兩次的原因。

我曾經碰到過的一件事是,我有兩段雲代碼

當我嘗試保存對象時,第一個對象將被修改。 第二個是保存對象后我將進行一次推送。

在保存過程中修改對象的代碼中,保存了修改后的對象,這導致對同一對象觸發兩次Parse.Cloud.afterSave

服務器端

  1. 在服務器上注冊設備時,通過UUID更新reg_id。
  2. 發送推送后,在響應中返回canonical_id的reg_id刪除。
  3. 定期使用dry_run發送虛假推送,並執行與2相同的操作。

客戶端

  1. 在有效負載中發送message_id,並將其保存在sqlite DB中。 並且設備將知道它是否已收到。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM