[英]Swift FCM Data Message not received when App is in background (iOS 10)
[英]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
我在我的應用程序中使用這種方法,我認為這是一種首選方式。
您可以使用本地通知,以便在滿足您的條件時從后台顯示。
正確,iOS最終將關閉后台進程,無法強制執行連續的后台活動。 使用backgroundTimeRemaining
屬性來檢查應用程序剩余的時間並嘗試通過調用endBackgroundTask
盡可能優雅地處理它,以便iOS不會強制endBackgroundTask
您的應用程序。
作為一種解決方案,您可以考慮使用帶有content-available : YES
遠程通知content-available : YES
,它運行didReceiveRemoteNotification
看看Parse.com他們的本地數據存儲區是您想要實現的目標的抽象。 順便說一句,是否真的有必要在后台刷新。 如果呼叫相對較快,則在用戶打開應用程序之前無需刷新。 像這樣的后台進程,當用戶不在Wifi上時,使用網絡可能非常耗電。 所以仔細考慮用例!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.