0


3

iPhoneアプリ、アプリケーションがバックグラウンドでHTTPリクエストを実行

私のiPhoneアプリでは、アプリケーションがバックグラウンドにあるときにいくつかのクエリを実行したいと思います。 私はすでにASIHttpRequestを使用してクエリを作成していますが、これは正常に機能しますが、バックグラウンドでそれらをトリガーする方法を見つけようとしています。 アプリデリゲートで、リクエストを行うメソッドへの呼び出しを追加しました。

getItemsFromServerは非同期要求を実行します(シミュレーターでは、アプリケーションをフォアグラウンドに戻すと、このメソッドのログが表示されます)。 このメソッドを10分ごとに実行するために何らかのタイマーを使用するにはどうすればよいですか(フォアグラウンドに戻るまで10分ごとではなく4または5回実行する必要があります:-))?

どうもありがとう、

宜しくお願いします、

Luc

3 Answer


2


iOS4を使用すると、アプリをX時間実行できます。iOS4を使用すると、要求した時間が許可されます。 チェックアウト:http://developer.apple.com/iphone/library/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/BackgroundExecution/BackgroundExecution.html#//apple_ref/doc/uid/TP40007072-CH5-SW6 [長時間実行の完了]バックグラウンドでのタスク]。

具体的には、

_ 中断する前であればいつでも、アプリケーションはbeginBackgroundTaskWithExpirationHandler:メソッドを呼び出して、バックグラウンドで長時間実行されているタスクを完了するために余分な時間をシステムに要求できます。 要求が許可され、タスクの進行中にアプリケーションがバックグラウンドに移行した場合、システムはアプリケーションを中断するのではなく、追加の時間実行します _


0


おそらくタスクフィニッシングを使用してそれを行うことができます。 iOSでは、スレッドに完了のマークを付け、特定の時間を与えることができます。 これにより、Webサーバーに対してさらにいくつかの呼び出しを行うことができます。


-1


実際には、バックグラウンドで一般的なHTTP呼び出しを行うことは特に許可されていません。 バックグラウンドでアクティブにできるアプリは、音声を再生するアプリ、位置情報を取得するアプリ、またはVOIPコールを実行しているアプリのみです。 Appleのバックグラウンドを持つ哲学全体は、利用可能なリソースが限られているため、アプリがこれらの限られたケース以外の「作業」を行うべきではないと考えています。 これを回避するための推奨される方法は、(ugh)通知を使用するか、アプリケーションが起動したときに更新することです。 javaforfoodのリファレンスをコーディングするドキュメントでこれについて説明しています。