0

我正在創建一個應用程序,需要每天爲日出和日落啓動本地通知。如何解決一個應用程序,觸發重複本地通知,但在不斷變化的時間表?

  • 的日出和日落時間每天都在改變。
  • 我想要的本地通知的報名參加,即使用戶沒有打開的應用程序(即後臺任務)的地方。因此,用戶安裝應用程序,設置他的位置(因爲日出和susnet計算是基於位置的),然後他知道他會得到日出和每天設置的通知,而不需要打開應用程序或連接到互聯網。
  • 理想情況下,我需要超過它運行至少每隔一段給定的時間段註冊本地通知後臺任務。 「例如在下週註冊本地通知,在這種情況下,我需要它每週至少運行一次」。
  • 沒有當前的背景模式適合我的情況下,我嘗試了背景獲取,但因爲是沒有下載的數據的iOS停了幾天
  • 我知道我可以使用推送通知的運行後我的後臺任務,但我不想,除非這是我的最後一個選擇,因爲即使手機沒有連接到互聯網,我也希望通知發生。

那麼你覺得我該怎麼解決呢?有什麼我失蹤?

回答

0

取得地點爲背景的每個「N」分鐘。通過使用beginBackgroundTaskWithExpirationHandler和NSTimer。它保持應用程序在後臺生活。 所以,你可以在後檯安排一個localnotification。 對於後臺獲取位置更新參考鏈接 How do I get a background location update every n minutes in my iOS application?

(從iOS7有限長度的後臺任務時間縮短到180秒。所以你必須獲取下一個180秒內的位置。) 如果用戶強制退出應用程序。該應用程序銷燬了所有的任務。使用重要的位置更改或區域監視來重新啓動後臺任務並獲取每n分鐘的位置。

+0

我以爲不是這種情況了。我認爲一旦你達到門檻,iOS會暫停NSTimer。而在後臺觸發應用程序的唯一方法是通過使用其中一種背景模式執行後臺執行。 – Abd4llA

+0

如果你在180秒內得到位置。應用程序的壽命延長到180秒。你每180秒獲得一個位置。你可以通過NSLog檢查背景剩餘時間(@「backgroundTimeRemaining:%.0f」,[[UIApplication sharedApplication] backgroundTimeRemaining]); – Prabha

相關問題