我想在我的ios應用程序中實現圖像同步。這就是我所做的是如何編寫在用戶按主頁按鈕時不會暫停的代碼
- 拍照
- 上傳照片火力
- 得到火力存儲網址,並將其發送到API服務器,使服務器存儲信息的數據庫
只要應用程序正在運行,它就可以正常工作,但是當我按下主屏幕按鈕退出應用程序時,所有事件都會暫停。
那麼如何運行一個代碼,不會暫停,如果應用程序進入主頁?
我想在我的ios應用程序中實現圖像同步。這就是我所做的是如何編寫在用戶按主頁按鈕時不會暫停的代碼
只要應用程序正在運行,它就可以正常工作,但是當我按下主屏幕按鈕退出應用程序時,所有事件都會暫停。
那麼如何運行一個代碼,不會暫停,如果應用程序進入主頁?
按照這個文件,
對於需要更多的執行時間來實現的任務,必須 要求特定權限在後臺運行它們,而不 他們被暫停。在iOS中,只有特定的應用程序類型允許 在後臺運行:
應用程式播放音頻內容給用戶,而在後臺, 如音樂播放器應用程序
應用該記錄的音頻內容,而在告訴用戶他們的位置在所有 倍,S的 後臺應用UCH作爲導航的應用程序,支持互聯網語音 協議(VoIP)
應用程序需要下載和處理新的內容 定期
Apps的應用來自外部配件
個應用實現這些服務必須申報服務,他們 支持和使用的系統框架,以執行的 相關方面的服務
聲明的服務讓系統知道你使用的 服務,但在某些情況下,實際上會阻止您的應用程序被掛起的系統框架。
這裏是如何實現(從this answer由Ashley Mills拍攝):
func doUpdate() { dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), { let taskID = beginBackgroundUpdateTask() var response: NSURLResponse?, error: NSError?, request: NSURLRequest? let data = NSURLConnection.sendSynchronousRequest(request, returningResponse: &response, error: &error) // Do something with the result endBackgroundUpdateTask(taskID) }) } func beginBackgroundUpdateTask() -> UIBackgroundTaskIdentifier { return UIApplication.sharedApplication().beginBackgroundTaskWithExpirationHandler({}) } func endBackgroundUpdateTask(taskID: UIBackgroundTaskIdentifier) { UIApplication.sharedApplication().endBackgroundTask(taskID) }
[Swift3]這是一種工作對我來說
func doUpdate() {
DispatchQueue.global(qos: .background).async {
let taskID = self.beginBackgroundUpdateTask()
DispatchQueue.main.asyncAfter(deadline: .now() + .seconds(5), execute: {
print("printing after 10 min")
})
DispatchQueue.main.async {
self.endBackgroundUpdateTask(taskID: taskID)
}
}
}
func beginBackgroundUpdateTask() -> UIBackgroundTaskIdentifier {
return UIApplication.shared.beginBackgroundTask(expirationHandler: {})
}
func endBackgroundUpdateTask(taskID: UIBackgroundTaskIdentifier) {
UIApplication.shared.endBackgroundTask(taskID)
}
不知道這是完成最大時間是什麼,因爲我看到有一個expirationHandler
根據本教程,https://www.raywenderlich.com/143128/background-modes-tutorial-getting-started,在過去,這種模式通常用於完成上傳或下載,並且慷慨(但不能保證)提供了10分鐘來完成這些任務。 –
得到錯誤與迅速3.可以ü請更新答案 – Mahabub
不幸的是,我沒有經驗與迅速編程。上面的代碼是從SO上的答案引用的。 –