3

15分ごとにデータを処理するアプリを開発しました。そこで、plist ファイルに voip フラグを追加しました。そして、setKeepAliveTimeout を 900 秒 (15 分) で使用します。一部のデータを処理するバックグラウンド タスク機能も追加されました。データの処理には最大 10 秒かかります。

問題は、アプリが時間内に起動しないことです。12分後、16分後などの場合もありますが、15分後に正確に必要です。

次の問題を解決するにはどうすればよいですか?

iOSバージョンは5.0以上

iOS固有の場合は、これが言及されているAppleのAPIドキュメントへの公式リファレンスを提供してください。

4

1 に答える 1

2

setKeepAliveTimeout:handler:汎用のインターバル スケジューラではありません。提供されたハンドラーの呼び出し間の最大間隔を設定できます。この機能の目的は、接続がタイムアウトしたり、VOIP アプリケーションの標準 (オンライン/不在ステータスなど) に遅れたりするのを防ぐことです。

したがって、最初のパラメーター ( ) は 15 分以内timeoutにハンドラーを呼び出すように iOS に指示します。OS は、12 分で余裕があると判断した場合、ハンドラーを呼び出す可能性があります。または7分または15分で。

間隔を細かく制御する必要がある場合は、タイムアウト ウィンドウを小さく設定し、重要でない呼び出しを無視する必要があります。しかし、呼び出しはまだかなり不規則になります。

http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIApplication_Class/Reference/Reference.html#//apple_ref/occ/instm/UIApplication/setKeepAliveTimeout:handler :

一般に、正確なスケジュールでアプリを起動させる方法は現在のところありません。iOS の制限されたバックグラウンド処理オプションを順守する必要があります。これらはすべて、OS がすべてのプロセスにわたって全体的な優先順位とリソースのニーズを管理するための余裕を与えるように設計されています。

于 2013-07-29T22:08:41.003 に答える