Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/426.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript parse.com推送通知与高级目标_Javascript_Push Notification_Apple Push Notifications_Parse Platform - Fatal编程技术网

Javascript parse.com推送通知与高级目标

Javascript parse.com推送通知与高级目标,javascript,push-notification,apple-push-notifications,parse-platform,Javascript,Push Notification,Apple Push Notifications,Parse Platform,我正在尝试使用服务从云代码(后台作业)实现高级推送目标。我在安装对象中添加了日期作为字段 如果我只有一个条件,也就是说,天等于1,我就用下面的代码片段来实现它 var pushQuery = new Parse.Query(Parse.Installation); pushQuery.equalTo("day",1); Parse.Push.send({ where: pushQuery, data: { "content-available" : "1"

我正在尝试使用服务从云代码(后台作业)实现高级推送目标。我在安装对象中添加了日期作为字段

如果我只有一个条件,也就是说,天等于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.");
   });
参考资料:


我的下一步是向20个查询发送通知(0我使用

承诺有点神奇,因为它们可以让您在不嵌套的情况下链接它们。如果对承诺的回调返回一个新承诺,那么第一个承诺将在第二个承诺返回之前无法解析。这使您可以执行多个操作,而不会产生回调时产生的金字塔代码

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);
  });
});
功能计划WordsForDay(天)
{
var pushQuery=newparse.Query(Parse.Installation);
pushQuery.equalTo(“日”,日);
pushQuery.exists(“deviceToken”);
var promise=new Parse.promise();
Parse.Push.send({
其中:pushQuery,
数据:{
警告:“单词”+天
}},{成功:函数(){
//推送成功
},
错误:函数(错误){
}}).然后(函数(结果){
//标志着这一承诺的实现,
//启动任何等待它的回调。
承诺、决心(结果);
},函数(错误){
//标志着这一承诺的实现,
//启动任何等待它的回调。
承诺。拒绝(错误);
});
回报承诺;
}
作业(“scheduleWordNotification”,函数(请求、状态)
{
var promiseArray=[];
对于(变量i=0;i<100;i++){
var promise=scheduleWordsForDay(i);
允诺;推动(承诺);
}
//返回一个新的承诺,即
//当所有输入承诺都得到解决时,将得到满足。
Parse.Promise.when(promiseArray).then(函数(结果){
log(“成功承诺!!”)
状态。成功(“成功承诺!!”);
},函数(错误){
console.error(“承诺错误:+error.message”);
状态错误(error);
});
});

我使用

承诺有点神奇,因为它们可以让您在不嵌套的情况下链接它们。如果对承诺的回调返回一个新承诺,那么第一个承诺将在第二个承诺返回之前无法解析。这使您可以执行多个操作,而不会产生回调时产生的金字塔代码

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);
  });
});
功能计划WordsForDay(天)
{
var pushQuery=newparse.Query(Parse.Installation);
pushQuery.equalTo(“日”,日);
pushQuery.exists(“deviceToken”);
var promise=new Parse.promise();
Parse.Push.send({
其中:pushQuery,
数据:{
警告:“单词”+天
}},{成功:函数(){
//推送成功
},
错误:函数(错误){
}}).然后(函数(结果){
//标志着这一承诺的实现,
//启动任何等待它的回调。
承诺、决心(结果);
},函数(错误){
//标志着这一承诺的实现,
//启动任何等待它的回调。
承诺。拒绝(错误);
});
回报承诺;
}
作业(“scheduleWordNotification”,函数(请求、状态)
{
var promiseArray=[];
对于(变量i=0;i<100;i++){
var promise=scheduleWordsForDay(i);
允诺;推动(承诺);
}
//返回一个新的承诺,即
//当所有输入承诺都得到解决时,将得到满足。
Parse.Promise.when(promiseArray).then(函数(结果){
log(“成功承诺!!”)
状态。成功(“成功承诺!!”);
},函数(错误){
console.error(“承诺错误:+error.message”);
状态错误(error);
});
});