簡體   English   中英

iOS上的后台任務計時器

[英]Background task timers on iOS

我有一個android / winphone應用程序。 應用程序的一小部分(后台廣播接收器/任務)會不時地(大約10-15分鍾)檢查帶有時間戳的本地文件,並且如果其中一個時間戳與當前時間之間的時差超過-例如-30分鍾,則會顯示一條通知用戶。

在Android中,我使用AlarmManager.setRepeating(...)設置定期檢查,並運行此設置代碼,我在清單中的動作“ android.intent.action.BOOT_COMPLETED”上注冊了BroadcastReceiver。 或在每次啟動時調用AlarmManager.cancel(...)和AlarmManager.setRepeating(...)。 這樣,我可以確定我的計時器可以工作。

在Windows Universal中,我使用觸發器和后台任務。 這樣做有一些局限性。

現在,我將應用程序移植到iOS,而快速瀏覽並沒有給我提供一種注冊函數或類的方法,該方法或類在應用程序本身未啟動時每10分鍾執行一次快速檢查(通常少於一秒鍾),並且我想在設備啟動事件上注冊一個功能。 可能嗎? 還是應該讓我的應用程序在后台運行? 我寧願不這樣做,因為我的支票是輕巧且稀有的。

您可以使用后台獲取來快速執行。 但是有幾個缺點:

  1. 在睡眠模式下不起作用。

  2. 您無法捕獲設備啟動事件。

  3. 它將在30秒內刪除。

我認為在通常情況下,這對於AlarmManager不是模擬的。 忘掉它。

https://www.raywenderlich.com/92428/background-modes-ios-swift-tutorial

https://developer.apple.com/library/content/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/BackgroundExecution/BackgroundExecution.html

推送通知可以用作觸發器。 但是,盡管如此,這是服務器端的實現。

在以上指南中:

  1. 在應用程序功能的“后台模式”中選中“后台獲取”框。

  2. 使用setMinimumBackgroundFetchInterval(_:)設置適合您的應用的時間間隔。

  3. 在您的應用程序委托中實現application(_:performFetchWithCompletionHandler:)以處理后台獲取。

您的回調事件是performFetchWithCompletionHandler

暫無
暫無

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

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