2014-03-26 43 views
8

我爲Android編寫了應用程序,用於監聽傳入日曆事件,並在後臺應用程序中觸發我的流程。如何在後臺iOS應用程序中收聽日曆事件?

現在我試着對iOS做同樣的事情。

我讀了很多東西,並跑了一些演示,使用EKEventStore背景獲取

但是,這種方法不滿足我。

有沒有其他方法可以做到這一點?

[編輯]

應用僅使用公共API。

感謝,

回答

4

一般情況下,後臺執行的Android機型並不適用於iOS的。

您可以註冊日曆事件,如下所示,但您的應用程序只有在運行時纔會收到通知。在iOS上,這意味着它可能處於前景中,最近一直在後臺運行,或者作爲指定背景模式(例如後臺獲取,位置更新,VoIP等)的一部分被系統啓動/喚醒。

[[NSNotificationCenter defaultCenter] addObserver:self 
             selector:@selector(receiveEventStoreChangedNotification:) 
              name:EKEventStoreChangedNotification 
              object:eventStore]; 

如果你的應用程序需要指定背景模式中的一種,你至少獲得不時通知(當你被喚醒)。我見過批准的應用程序使用位置更新只是爲了獲得更多的執行時間,當然YMMV。

+0

是的,我想到了位置和「按下主頁按鈕」事件。 – snaggs

5

簡短的回答是你不能。 Apple不會允許任何應用程序在後臺執行此類操作,因爲它需要在CPU關閉時打開CPU。

當您的應用程序運行時,您可以在不久的將來閱讀所有事件(比如說兩週之內?)併爲事件時間設置「本地」推送通知。此外,如果用戶經常啓動您的應用程序,Apple會允許您的應用程序使用後臺應用程序刷新進行刷新。該設備通常會在用戶每次醒來之前的早晨進行此操作,並根據用戶的活動在每天的第一天以及全天開啓手機。您可以在後臺應用程序刷新期間執行任何操作。

作品中的另一個扳手是蘋果的全磁盤加密工作原理。如果手機處於鎖定狀態,那麼您的應用程序的功能就不多了。手機上的大部分數據都使用用戶的密碼加密。直到用戶輸入密碼才能完成。在這種情況下,後臺應用程序刷新將在他們輸入密碼後立即運行,但在他們啓動您的應用程序之前。

也許你可以讓遠程服務器向手機發送推送通知。不知道這是否是您的選擇。顯然這意味着服務器需要訪問用戶的日曆數據。

相關問題