0

iPad アプリケーションを作成しており、次の機能が必要です。

アプリケーションが (バックグラウンドまたはフォアグラウンドで) 実行されているときはいつでも、定期的に (たとえば、1 時間に 1 回) HTTP をチェックし、場合によってはデータをダウンロードして保存します。

この背後にある動機は、必要なときにオフラインで使用できるように、アプリケーションが一部のデータをキャッシュできるようにすることです。これによりバッテリーの寿命が短くなる可能性があることは承知していますが、現時点では問題ありません。

私が読んだことからApple iOS Programming Guide: Background Execution and Multitasking、アプリケーションがバックグラウンドタスクを実行することは可能です。私のニーズに合ったケースを見つけることができませんでした:

  • バックグラウンドでの有限長タスクの実行: これは、「フォアグラウンドからバックグラウンドに移行する」タスク専用です。
  • ローカル通知の配信をスケジュールする: 明らかにそうではありません。通知を作成しているので、データをダウンロードする必要があるだけです。
  • 長時間実行されるバックグラウンド タスクの実装: これは問題のように思えますが、調べてみると、いくつかのカテゴリがあり、私のユース ケースをカバーするものは見つかりませんでした (apple.com からコピー ペースト)。
    • audio—アプリは、バックグラウンドでユーザーに可聴コンテンツを再生します。(このコンテンツには、AirPlay を使用したスト​​リーミング オーディオまたはビデオ コンテンツが含まれます。)
    • location—アプリは、バックグラウンドで実行されている間でも、ユーザーに自分の位置を知らせ続けます。
    • voip— このアプリは、ユーザーがインターネット接続を使用して電話をかける機能を提供します。
    • newsstand-content—このアプリは、バックグラウンドで雑誌や新聞のコンテンツをダウンロードして処理する Newsstand アプリです。
    • external-accessory— アプリは、外部アクセサリ フレームワークを通じて定期的に更新を配信する必要があるハードウェア アクセサリと連携します。
    • bluetooth-central—このアプリは、Core Bluetooth フレームワークを介して定期的に更新を配信する必要がある Bluetooth アクセサリと連携します。
    • bluetooth-peripheral—アプリは、Core Bluetooth フレームワークを介して、ペリフェラル モードでの Bluetooth 通信をサポートします。

この機能を実装する場合、どのように進めればよいですか? iOSでも可能ですか?

6.0.1 または 6.1 iOS と 4.6 XCode を使用しています。

編集:私が最初に考えたのはニューススタンドのコンテンツでしたが、参照されたドキュメントのより深いところには次のものがあります:

サーバーがプッシュ通知を送信して新しい号が入手可能であることを示すと、システムはアプリに newsstand-content 値を持つ UIBackgroundModes キーがあるかどうかを確認します。

しかし、プッシュではなくプルリクエストが必要です(iPadはサーバーに問い合わせる必要があり、その逆ではありません)。

4

2 に答える 2

0

あなたはそうしません、これはバッテリーを非常に速く使い果たします、そしてそこでアップルはあなたがこれをすることを望んでいません。Appleは、サーバーへのPULL要求に頻繁に反対しています。必要もありません。

要約すると、アプリが該当する背景カテゴリは1つもありません。

ユーザーがアプリを開くことを決定した場合にのみ、アプリのデータを更新する必要があります。その場合にのみ、データを更新する良い機会になります。

本当に新しいデータをユーザーに通知する必要がある場合は、プッシュ通知を実装する必要があります。これは、アプリが注目を集めたいことをユーザーに通知する方法です。通知を介してアプリを開くと、データを更新したり、選択した通知データをユーザーに提示したりすることもできます。

ユーザーがアプリを一度開いた後、二度と見ないことを想像してみてください。アプリは引き続き更新されます。使用すべきバッテリーと帯域幅を使用してください。

于 2013-02-04T12:44:04.123 に答える
0

私は、アプリケーションがアクティブなときに頻繁にデータをポーリングし、アプリケーションが再びアクティブになったときにバックグラウンドで更新をトリガーします。アプリがアクティブなときに定期的にポーリングすると、アプリがアクティブになったときにダウンロードするデータが少なくなります。

個人的には、バッテリーを消耗していることがわかっているアプリケーションがあれば、すぐに削除します。それは私だけかもしれませんが、私はそのようなことを探しています。

もう 1 つの方法は、新しいコンテンツがあることをユーザーに警告する通知を使用することです。これにより、アプリケーションに新しいコンテンツがある場合に通知が送信され、ユーザーがこの通知を選択すると、コンテンツを更新する必要がある可能性があることがわかります。

それが理にかなっていることを願っており、その多くは独断的です

于 2013-02-04T12:49:27.357 に答える