3

私のアプリケーションでは、サーバーからダウンロードするコンテンツがいくつかあり、ユーザーがダウンロードを開始してアプリが非アクティブ状態になると、アプリはバックグラウンド状態になり、ダウンロードが停止して失敗します。これを回避するために、 「 beginBackgroundTaskWithExpirationHandler 」を使用してバックグラウンドでダウンロード継続を実装しようとしました。これは一定期間のみ機能し、デバイスがバックグラウンド状態/スリープモードに長時間ある場合、ダウンロードは失敗します。

ダウンロードの失敗を回避するために、アプリケーションがコンテンツをダウンロードして同じように実装しているときに、デバイスがスリープモードになるのを回避することを考えました。

ダウンロードが開始されるとすぐにsetIdleTimerDisabledをYESに設定し、ダウンロードの完了またはダウンロードの失敗後にプロパティをNOに戻しました。

[[UIApplication sharedApplication] setIdleTimerDisabled:Yes];

ダウンロードが開始された後、アプリケーションはスリープモードになるように制限されていますが、ダウンロードの完了後も、アプリケーションはスリープモードになりません。

ダウンロードが開始された後、アプリケーションはスリープモードになりません。

誰かが、dowmloadが発生している間だけデバイスをスリープ状態に制限するのを手伝ってくれますか?

TNQ

4

1 に答える 1

1

画面の明るさをリセットする際にも同様の問題がありました。私の調査から、ホームボタンを押した後、OSがコントロールを引き継ぎ、明るさ、タイマーなどをリセットできないことがわかりました.

この問題は別の方法で解決できます。ダウンロードが完了したときにローカル通知を提供し、アプリケーションでWillEnterForegroundにタイマーを有効にするコードを記述します

- (void)applicationWillEnterForeground:(UIApplication *)application {
     [[UIApplication sharedApplication] setIdleTimerDisabled:YES];
}

これは StackOverflow から取得しましたが、リンクを忘れてしまいました。ごめん。

于 2012-07-12T12:34:24.000 に答える