2

私は現在、アラームアプリケーションに取り組んでおり、サーバーからデータを取得して、ユーザーを起こすのに適切な時期かどうかを判断する必要があるスマートアラーム機能を実装しています。

たとえば、ケースは次のとおりです。

  • アラームを午前 6 時 30 分に設定

  • スマート アラーム機能は 06:30 の 30 分前に設定され、データの取得は 06:00AM から 06:25AM まで 5 分間隔で 5 回行われます

  • たとえば、午前 6 時 15 分にサーバーがユーザーの起床に必要なデータを返した場合、スケジュールされたすべてのタスクはすぐにキャンセルされます。
  • 現在の時刻は午後 11 時 30 分です
  • 11:30PM から 06:00AM の間、スマート アラームのタスクは実行されません。
4

1 に答える 1

2

プッシュ通知/サイレント プッシュ通知を使用して、このタスクを実行できます。これを機能させるには、ユーザーがプッシュ通知をオプトインする必要があることに注意してください。これを達成する方法の概要は次のとおりです

  • ユーザーがアラームを設定すると、今度は Web サービス経由でサーバーに送信されます。
  • サーバーはプッシュ通知ペイロードを APNS に送信し、デバイス トークンに基づいてアプリにリダイレクトします。
  • デバイスが通知ペイロードを受信すると、デリゲートが呼び出されます。アラームに関連するこのペイロードのデータを処理したり、Web サービス呼び出しを呼び出したりできます。
  • beginBackgroundTaskWithExpirationHandler を使用して、5 分間隔のタスクを実行します。beginBackgroundTaskWithExpirationHandler は、タスクを実行するために OS から余分な時間を要求します。この余分な時間の長さは (意図的に) Apple によって指定されていませんが、実際には約 10 分です。

詳細については、プッシュ通知、サイレント プッシュ通知、およびバックグラウンド タスク ハンドラをお読みください。


バックグラウンド フェッチ API : iOS 7 で、Apple はバックグラウンド フェッチのサポートを追加しました。バックグラウンド フェッチは、日和見的なタイミングで起動する一種のスマートなアプリごとの crontab です。バックグラウンド フェッチを正確な間隔で強制的に実行する方法はありません。iOS は、将来のコールバックをスケジュールするときに、以前のバックグラウンド フェッチ中に使用されたデータとバッテリー電力の量をチェックします。サポートを追加するには、アプリケーションのプロパティ リストを編集し (UIBackgroundModes を参照)、アプリのライフサイクルの早い段階でフェッチ間隔を設定する必要があります。

詳細はこちら

于 2016-11-02T03:41:04.757 に答える