簡體   English   中英

swift / ios在后台刷新應用數據

[英]swift/ios refreshing app data when in background

我正在編寫一個iOS / Swift應用程序,它每隔X分鍾從REST服務中讀取數據並相應地更新UI。

現在我希望當應用程序放在后台時,從REST服務讀取一個任務,每隔X分鍾讀取一次,如果剛讀取的數據滿足給定條件,則會顯示一條通知,提示用戶帶來應用程序回到前台。

在我的搜索中,我讀過在applicationDidEnterBackground事件期間,我應該用beginBackgroundTaskWithExpirationHandler開始一個任務。

問題是,如果我已經正確理解,如果任務沒有通過endBackgroundUpdateTask停止,這允許最多10/15分鍾,之后應用程序終止,同時我希望任務繼續無限期地輪詢服務(至少直到用戶從應用程序的設置中禁用它

我的問題是:

這種功能如何正常執行? 是否存在一些解決此類問題的常見解決方案或最佳實踐?

使用iOS背景提取功能,您可以在其中指定最小背景提取間隔。 但是,連續調用代碼之間的實際間隔將由iOS框架決定。 詳情請訪問此鏈接: http//code.tutsplus.com/tutorials/ios-7-sdk-working-with-background-fetch--mobile-20520

我在我的應用程序中使用這種方法,我認為這是一種首選方式。

  1. 您可以使用本地通知,以便在滿足您的條件時從后台顯示。

  2. 正確,iOS最終將關閉后台進程,無法強制執行連續的后台活動。 使用backgroundTimeRemaining屬性來檢查應用程序剩余的時間並嘗試通過調用endBackgroundTask盡可能優雅地處理它,以便iOS不會強制endBackgroundTask您的應用程序。

作為一種解決方案,您可以考慮使用帶有content-available : YES遠程通知content-available : YES ,它運行didReceiveRemoteNotification

看看Parse.com他們的本地數據存儲區是您想要實現的目標的抽象。 順便說一句,是否真的有必要在后台刷新。 如果呼叫相對較快,則在用戶打開應用程序之前無需刷新。 像這樣的后台進程,當用戶不在Wifi上時,使用網絡可能非常耗電。 所以仔細考慮用例!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM