如何在不使用日期的情况下在特定时间发送Parse推送通知?

时间:2014-10-04 21:11:14

标签: javascript push-notification parse-platform

Parse用于从云代码发送推送通知的文档说明格式如下:

Parse.Push.send({
    where: query,
    push_time: new Date("2013-08-26T12:00:00"),
    data: {
       alert: "Local push notification"
    }
}, {
    success: function() {
        console.log("Successful push");
    },
    error: function(error) {
        console.log(error);
    }
});

我可能会误解这一点,但看起来这会告诉Parse不仅在 12:00:00 当地时间为所有用户发送推送通知,而且在下一个日期也是如此: 2013-08-26

当函数运行时我想要做的是在当地时间发送通知,无论函数运行的日期是什么。我不确定如何正确设置语法来执行此操作,因为push_time: new Date("T12:00:00");似乎无法正常运行。

1 个答案:

答案 0 :(得分:0)

我有两个答案,你可以试试。它们都要求您指定日期和时间,但是您可以使用明天(或任何一天)快速设置的日期方面。

首先,使用原生JavaScript SDK:

var tomorrow = new Date();
tomorrow.setDate(tomorrow.getDate() + 1);
tomorrow.setHours(getRandomArbitrary(0,23),getRandomArbitrary(0,59),getRandomArbitrary(0,59));
var dayAfterTomorrow = new Date();
dayAfterTomorrow.setDate(tomorrow.getDate() + 1);

Parse.Push.send({
    channels: [ "my channel" ],
    data: {
        alert: "push content here"
    },    
    push_time: tomorrow,
    expiration_time: dayAfterTomorrow
    }, {    
    success: function() {
        // Push was successful
        console.log("successfully sent push out");
        status.success("Push away!");
    },
    error: function(error) {
        // Handle error
        console.log("got an error");
        console.log("Error: " + error.code + " " + error.message);
    }
});

function getRandomArbitrary(min, max) {
  return Math.random() * (max - min) + min;    
}

其次,根据this Parse post from a year ago,他们的SDK for JavaScript中存在一个错误,它不会执行本地时区推送。您需要使用他们的REST API:

Parse.Cloud.httpRequest({
  method: "POST",
  headers: {
    "X-Parse-Application-Id": YOUR_APP_ID,
    "X-Parse-REST-API-Key": REST_API_KEY,
    "Content-Type": "application/json"
  },
  body: {
    "where": query,
    "push_time": "2013-08-26T12:00:00", // format this as a STRING, not a Date Object
    "data": {    
      "alert": "Local push notification" 
    }
  },
  url: "https://api.parse.com/1/push"
}).then(function() {
  console.log("Successful push");
}, function(error) {
  console.log(error);
});

我还没有尝试过REST API代码,但我确实知道JavaScript SDK代码的工作原理,因为我在我的项目中使用它。我不确定它是否向用户发送本地时间,但这不是我写的项目的要求。