javascript - parse.com 具有高级定位功能的推送通知

标签 javascript push-notification apple-push-notifications parse-platform

我正在尝试使用 parse.com 从云代码(后台作业)实现高级推送定位服务。我已将日期添加为安装对象中的字段。

enter image description here

如果我只有一个条件,即天等于 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.");
   });

引用: Push Notification Java Script guide

我的下一步是向 20 个查询(0 <= 天 < 20)发送通知,并根据天数为每个查询发送消息。调用函数 20 次对我来说似乎很难看,我可以迭代,每次循环调用 Parse.Push.send 函数吗?

最佳答案

我使用 Parse.Promise.when(promises) 解决了我的问题

Promise 有点神奇,因为它们让您可以将它们链接起来而无需嵌套。如果 Promise 的回调返回一个新的 Promise,那么第一个 Promise 将不会得到解决,直到第二个 Promise 得到解决。这使您可以执行多个操作,而不会产生通过回调获得的金字塔代码。

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);
  });
});

关于javascript - parse.com 具有高级定位功能的推送通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23919290/

相关文章:

javascript - 在 Vue.js 模态中实现历史功能的最佳方法

javascript - Electron 需要模块 : due to diffrent working directory while runtime intellisense is not working

java - Android SharedPreferences 重置为默认值。重新启动应用程序后

ios - 在 iOS 中运行后台服务

ios - iOS 推送通知可以有选择地替换之前的通知吗?

javascript - 在 Jasmine 单元测试中模拟鼠标悬停?

javascript - 自动为表单中的数字添加粗体

node.js - 从nodejs服务器发送推送通知

ios - 删除应用程序后获取推送通知的设备 token

ios - 如何使用私有(private)框架捕获来自 iOS 上其他应用程序的所有推送通知?