0

我正在构建一个应用程序,用户必须在收到本地通知后 5 分钟内完成任务。如果任务已完成,则什么也不会发生,但如果任务未完成,则我需要运行解析云代码功能。

我的问题是,如果用户不与本地通知交互,我需要执行解析云功能。但由于 iOS 挑剔的背景模式和多任务处理规则,我很难做到这一点。

到目前为止,我的应用程序运行良好,但如果操作未完成且用户不在应用程序中,我将无法执行我的代码。

如果有人能指出我正确的方向,我将不胜感激。如果您需要更多详细信息,请告诉我!

云代码- 如果用户在收到本地通知后五分钟内未完成任务,这是我想要执行的云代码:

Parse.Cloud.define("chargeCustomer", function(request, response) {
  Stripe.Charges.create({
    amount: request.params['amount'],
    currency: "usd",
    customer: request.params['customerId']
  }, {
    success: function(customer) {
      response.success(charge.id);
    },
    error: function(error) {
      response.error("Error:" +error); 
    }
  })
});

谢谢!

4

1 回答 1

1

您是否考虑过在 Cloud Code 中运行作业?

假设您创建了一个名为“PushNotification”的新类。假设您向名为“handled”的类添加了一个布尔列/属性。

当用户获取并查看 PUSH 通知时,您可以更新与该 PUSH 通知对应的“PushNotification”对象并将“handled”设置为 YES/true。

您可以编写一个每 X 分钟运行一次的简单作业。它可能看起来像这样:

Parse.Cloud.job("checkPushes", function (request, status) {
    var PushNotification = Parse.Object.extend("pushNotification");
    var query = new Parse.Query(PushNotification);
    // Limit the query to objects created more than 5 minutes ago
    query.lessThan("createdAt", new Date(new Date().getTime() - (1000 * 60 * 5)));
    // Limit the query to objects where "actionPerformed" not equal to "true"
    query.notEqualTo("handled", true);
    query.each(function (pushNotification) {
        // Don't forget to set "handled" to true so
        // the same items don't keep popping up...
    });
});

您可以在此处找到有关云代码(特别是后台作业)的更多信息。

于 2014-11-08T17:55:39.680 回答