2012-08-07 48 views
0

在iOS 5中當應用程序進入後臺的Wi-Fi連接丟失iPhone:在屏幕上的Wi-Fi斷開問題鎖定

但我希望設備睡覺前使用在接下來的4-5分鐘的Wi-Fi連接 一些任務可以4-5分鐘應用內進行輸入的背景

,我認爲這可以通過使用

beginBackgroundTaskWithExpirationHandler來完成:

,但我不能夠解決ŧ他的問題

+0

你試圖使用'beginBackgroundTaskWithExpirationHandler' – rckoenes 2012-08-07 10:19:20

+0

我不知道如何使用beginBackgroundTaskWithExpirationHandler 並在編寫代碼那 – 2012-08-07 10:22:57

+0

那你爲什麼不搜索它並實現它,看它是否有效?這裏是很好的例子:http://stackoverflow.com/questions/10319643/objective-c-proper-use-of-beginbackgroundtaskwithexpirationhandler和http://developer.apple.com/library/ios/#DOCUMENTATION/UIKit/Reference/ UIApplication_Class/Reference/Reference.html和https://www.google.nl/search?q = beginBackgroundTaskWithExpirationHandler&sugexp = chrome,mod = 14&sourceid = chrome&ie = UTF-8 – rckoenes 2012-08-07 10:34:29

回答

0

只是禁用iPhone進入睡眠模式

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

}

調用這個函數每10秒,這可能會幫助ü

0

我處理這個問題是使用beginBackgroundTaskWithExpirationHandler方式爲我發送的每個網絡請求。
這樣我確保即使我的應用程序移動到背景,我的所有網絡都會完成。

我通常使用一個單獨的對象來處理所有的網絡請求,因此請求被髮送之前,我打電話

- (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,否則即使您的應用程序正在運行,您的Wi-Fi將在30分鐘後關閉。

0

這裏沒有火箭科學,這是在iOS中的預期行爲,以節省電池的Wi - Fi時關閉手機如果你告訴iOS,你的應用程序需要一個持久的Wi-Fi,那麼它不會爲你關閉它當你的應用程序正在運行。

對於只需添加UIRequiresPersistentWiFi到您的info.plist並標記它YES

Documentation