2014-03-26 4 views
8

Ich schrieb Anwendung für Android, die eingehende Kalenderereignisse abgehört und löst meinen Fluss bei der Anwendung im Hintergrund.Wie man Kalenderereignisse bei Anwendung im Hintergrund iOS hört?

Jetzt versuche ich das gleiche für iOS zu tun.

Ich lese eine Menge Zeug und lief einige Demos, die EKEventStore und Hintergrund fetch verwenden.

Allerdings ist dieser Ansatz nicht zufrieden stellend.

Gibt es einen anderen Weg, das zu tun?

[EDIT]

Anwendung verwendet nur öffentliche API.

Danke,

Antwort

4

Im Allgemeinen ist das Android-Modell von Hintergrundausführung gilt nicht für iOS.

Sie können sich für Kalendertermine wie unten gezeigt anmelden, aber Ihre Anwendung wird nur benachrichtigt, wenn sie ausgeführt wird. Unter iOS bedeutet dies, dass es sich entweder im Vordergrund, vor kurzem im Hintergrund befindet und immer noch läuft oder vom System als Teil eines bestimmten Hintergrundmodus gestartet/geweckt wurde (z. B. Hintergrundabruf, Standortaktualisierungen, VoIP usw.).

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

Wenn Ihre Anwendung eine Notwendigkeit für eine der benannten Hintergrund Modi hat, werden Sie zumindest bekommen Meldungen von Zeit zu Zeit (wenn Sie aufgewacht). Ich habe gesehen, dass genehmigte Apps Standortaktualisierungen verwenden, um mehr Ausführungszeit zu erhalten, natürlich YMMV.

+0

Ja, ich dachte über den Standort und "auf Home-Taste drücken" Ereignisse. – snaggs

5

Die kurze Antwort ist, dass Sie nicht können. Apple lässt es nicht zu, dass eine App solche Vorgänge im Hintergrund ausführt, da es erfordert, dass die CPU eingeschaltet wird, wenn sie ansonsten ausgeschaltet wäre.

Wenn Ihre App läuft, können Sie alle Ereignisse in naher Zukunft (sagen wir zwei Wochen) lesen und eine "lokale" Push-Benachrichtigung für die Ereigniszeit einrichten.

Auch wenn der Benutzer Ihre App ziemlich oft startet, erlaubt Apple Ihrer App die Aktualisierung mit Hintergrund-App-Aktualisierung. Das Gerät führt dies normalerweise am Morgen vor jeder beliebigen Zeit durch, zu der der Benutzer normalerweise aufwacht, und schaltet sein Telefon zum ersten Mal jeden Tag ein und den ganzen Tag über auch entsprechend der Aktivität des Benutzers. Sie können während der Aktualisierung der Hintergrund-App alles tun, was Sie möchten.

Ein weiterer Schlüssel in der Arbeit ist, wie Apples vollständige Festplattenverschlüsselung funktioniert. Wenn das Telefon gesperrt ist, kann Ihre App nicht viel ausrichten. Die meisten Daten auf dem Telefon sind mit dem Passwort des Benutzers verschlüsselt. Bis der Benutzer seinen Passcode eingibt, kann nicht viel getan werden. In diesem Fall wird die Aktualisierung der Hintergrund-App ausgeführt, sobald sie ihren Passcode eingeben, aber bevor sie Ihre App starten.

Vielleicht könnte ein Remote-Server auch Push-Benachrichtigungen an das Telefon senden. Nicht sicher, ob dies für Sie eine Option ist oder nicht. Offensichtlich bedeutet dies, dass der Server Zugriff auf die Kalenderdaten des Benutzers benötigt.

Verwandte Themen