簡體   English   中英

具有高級定位功能的parse.com推送通知

[英]parse.com Push Notifications with advanced Targeting

我正在嘗試使用parse.com服務從雲代碼(后台作業)實施高級推送定位。 我已將“日期”添加為“安裝”對象中的字段。

在此處輸入圖片說明

如果我只有一個條件(即天等於1),則使用以下代碼段使它起作用

var pushQuery = new Parse.Query(Parse.Installation);
pushQuery.equalTo("day",1);

Parse.Push.send({
      where: pushQuery,
      data: {
      "content-available" : "1",
      alert : "Message day 1!",
      sound : "default"
   }}, {
       success: function() {
   // Push was successful
   },
       error: function(error) {
       // Handle error
   }}).then(function() {
       // Set the job's success status
       status.success("Job finished successfully.");
   }, function(error) {
       // Set the job's error status
       status.error("Uh oh, something went wrong.");
   });

參考: 推送通知Java腳本指南

我的下一步是向20個查詢(0 <= day <20)發送通知,並根據天數為每個查詢發送消息。 在我看來,調用函數20次似乎很丑,無論如何我都可以迭代,每次循環調用Parse.Push.send函數?

我使用Parse.Promise.when(promises)解決了我的問題

承諾有些神奇,因為它們使您無需嵌套即可將它們鏈接起來。 如果對諾言的回調返回了新的諾言,則第一個諾言將直到第二個諾言被解決。 這使您可以執行多個操作,而不會產生您將通過回調獲得的金字塔代碼。

function scheduleWordsForDay(day)
{
    var pushQuery = new Parse.Query(Parse.Installation);
    pushQuery.equalTo("day",day);
    pushQuery.exists("deviceToken");

    var promise = new Parse.Promise();

    Parse.Push.send({
          where: pushQuery,
          data: {
          alert : "word" + day
    }}, { success: function() {
          // Push was successful
        },
          error: function(error) {

        }}).then (function(result){
          //Marks this promise as fulfilled, 
          //firing any callbacks waiting on it.
          promise.resolve(result);
        }, function(error) {
          //Marks this promise as fulfilled, 
          //firing any callbacks waiting on it.
          promise.reject(error);
        });
    return promise;
}

Parse.Cloud.job("scheduleWordNotification", function(request, status)
{
  var promiseArray = [];

    for (var i = 0; i < 100; i++) {
        var promise = scheduleWordsForDay(i);
        promiseArray.push(promise);
  }
  //Returns a new promise that is 
  //fulfilled when all of the input promises are resolved.          
  Parse.Promise.when(promiseArray).then(function(result) {
     console.log("success promise!!")
     status.success("success promise!!");
  }, function(error) {
     console.error("Promise Error: " + error.message);
     status.error(error);
  });
});

暫無
暫無

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

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