iOS检测用户是否与本地通知交互

时间:2014-11-08 16:52:10

标签: ios parse-platform ios8 uilocalnotification cloud-code

我正在构建一个应用程序,用户必须在收到本地通知后的5分钟内完成任务。如果任务完成则没有任何反应,但如果任务没有完成,那么我需要运行解析云代码功能。

我的问题是,如果用户没有与本地通知进行交互,我需要执行解析云功能。但是由于iOS挑剔的背景模式和多任务处理规则,我在尝试这样做时遇到了很多困难。

到目前为止,我的应用效果很好,但如果操作没有完成且用户不在应用中,我就无法执行我的代码。

如果有人能指出我正确的方向,我会非常感激。如果您需要更多详情,请告诉我!

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

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

谢谢!

1 个答案:

答案 0 :(得分:1)

您是否考虑过使用Cloud Code运行作业?

假设您创建了一个名为" PushNotification"的新类。假设您将一个布尔列/属性添加到名为" handling"的类中。

当用户获取并查看PUSH通知时,您可以更新" PushNotification"对应于该PUSH通知并设置"处理"到是/是。

您可以编写一个每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...
    });
});

您可以找到有关Cloud Code(特别是后台工作)here的更多信息。