0

iOS 5の場合、アプリケーションがバックグラウンドに入ると、Wi-Fi接続が失われます。

ただし、アプリケーションがバックグラウンドに入ってから4〜5分以内に一部のタスクを実行できるため、デバイスがスリープする前の次の4〜5分間はWi-Fi接続を使用したいと思います。

これはを使用して達成できると思いますがbeginBackgroundTaskWithExpirationHandler:、問題を解決することはできません

4

3 に答える 3

0

beginBackgroundTaskWithExpirationHandlerこれを処理する方法は、送信するすべてのネットワーク リクエストに対してを使用することです。
このようにして、アプリがバックグラウンドに移動した場合でも、すべてのネットワークが完了するようにします。

私は通常、すべてのネットワーク リクエストを処理するために 1 つのシングルトン オブジェクトを使用しているので、リクエストが送信される前に呼び出します。

- (void)startBackgroundTask
{
    // ask for extra time if this is called when app go to suspended
    UIApplication *application = [UIApplication sharedApplication];

    _bgTask = [application beginBackgroundTaskWithExpirationHandler:^{
        // Clean up any unfinished task business by marking where you.
        // stopped or ending the task outright.
        [application endBackgroundTask:_bgTask];
        _bgTask = UIBackgroundTaskInvalid;
    }];
}  

そして、応答(成功/失敗)を受け取った後、またはリクエストをキャンセルした場合は、電話します

- (void)stopBackgroudTask
{    
    UIApplication *app = [UIApplication sharedApplication];

    if (_bgTask != UIBackgroundTaskInvalid) {
        [app endBackgroundTask:_bgTask]; 
        _bgTask = UIBackgroundTaskInvalid;
    }
}  

*定義することを忘れないでくださいUIBackgroundTaskIdentifier *_bgTask;

また、Wi-Fi を大量に使用する予定がある場合はApplication uses Wi-Fi、plist ファイルのキーを YES に設定する必要があります。そうしないと、アプリが実行されていても、30 分後に Wi-Fi がシャットダウンされます。

于 2012-08-07T11:52:09.723 に答える
0

iPhoneを無効にしてスリープモードにするだけです

-(void) sleepModeDisable{
[[UIApplication sharedApplication] setIdleTimerDisabled:NO];
[[UIApplication sharedApplication] setIdleTimerDisabled:YES];

}

この関数を 10 秒ごとに呼び出してください。

于 2012-08-07T09:59:00.247 に答える