2016-11-02 195 views
1

我目前正在開發一個報警應用程序,並且我正在實施智能報警功能,我必須從服務器獲取數據以確定它是否是喚醒用戶的正確時間。計劃後臺任務

比方說,此案是:

  • 鬧鐘設置爲06:30上午

  • 智能報警功能06:30之前設定爲30分鐘,其中數據的讀取將發生5次5分鐘時間間隔,從早上6點到上午6點25分

  • 如果我們假設在早上6點15分服務器返回了喚醒用戶所需的數據,所有安排的任務將立即取消
  • 當前時間是11:30 PM
  • 沒有智能報警器的任務將在下午11:30期間被執行到06:00 am
+0

無法調度後臺操作在iOS特定的時間間隔早。對於您的情況,您需要服務器在需要時向設備發送推送通知。 – Paulw11

+0

保羅講真話。保羅,你應該發表你的評論作爲答案,讓OP可以接受它。 –

+0

@ Paulw11請發表您的評論作爲回答 – Orange

回答

1

您可以使用推送通知/無聲推送通知來實現這一任務。 請注意,用戶必須選擇啓用推送通知才能使其工作。 這裏是如何可以實現的總覽,

  • 每當用戶設定的告警通過Web服務發送此時服務器。
  • 服務器將向APNS發送推送通知有效載荷,並且它將根據設備令牌重定向到應用程序。
  • 一旦設備收到通知有效負載,代表將被調用。您可以處理與此警報有關的負載中的數據或調用Web服務調用。
  • 使用beginBackgroundTaskWithExpirationHandler執行您的5分鐘間隔任務。 beginBackgroundTaskWithExpirationHandler請求操作系統執行任務的額外時間。 Apple沒有明確說明這個額外時間需要多長時間,但實際上大約需要10分鐘。

請詳細閱讀:推送通知,無聲推送通知&後臺任務處理程序。


背景提取API:在iOS系統7,蘋果增加了對後臺支持抓取,是一種聰明,每個應用的crontab,在機會的時間醒來。沒有辦法強制後臺提取以確切的時間間隔執行。在調度未來的回調時,iOS會檢查在之前的後臺提取過程中使用了多少數據和電池電量。 添加支持涉及編輯應用程序的屬性列表(見UIBackgroundModes),並設置取在應用程序生命週期

More Details Here

+0

之前已經說過,服務器不會進行任何推送通知,因爲服務器不是由我們處理的。所以我別無選擇,只能做一個重複的計劃後臺檢查。但感謝您的詳細解釋。 – Orange