0

ユーザーがローカル通知を受信して​​から 5 分以内にタスクを完了する必要があるアプリケーションを構築しています。タスクが完了した場合は何も起こりませんが、タスクが完了していない場合は、クラウド コードの解析関数を実行する必要があります。

私の問題は、ユーザーがローカル通知を操作しない場合、解析クラウド関数を実行する必要があることです。しかし、iOS の選り好みの多いバックグラウンド モードとマルチタスク ルールのために、これを行うのは非常に困難です。

これまでのところ、私のアプリはうまく機能していますが、アクションが完了しておらず、ユーザーがアプリにいない場合、コードを実行できません。

誰かが私を正しい方向に向けることができれば、本当に感謝しています。詳細が必要な場合は、お知らせください。

クラウド コード -これは、ユーザーがローカル通知を受信して​​から 5 分以内にタスクを完了しなかった場合に実行したいクラウド コードです。

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

Cloud Code (特にバックグラウンド ジョブ) の詳細については、こちらをご覧ください。

于 2014-11-08T17:55:39.680 に答える