Ich habe eine Anwendung für Android geschrieben, die eingehende Kalenderereignisse abgehört und meinen Fluss bei einer Anwendung im Hintergrund auslöst.
Jetzt versuche ich das gleiche für iOS zu tun.
Ich habe viel gelesen und einige Demos ausgeführt, die EKEventStore
und background fetch verwenden.
Aber dieser Ansatz befriedigt mich nicht.
Gibt es einen anderen Weg, das zu tun?
[EDIT]
Anwendung verwendet nur öffentliche API.
Danke,
Die kurze Antwort lautet: Können Sie nicht? 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 (z. B. zwei Wochen lang) lesen und eine "lokale" Push-Benachrichtigung für die Ereigniszeit einrichten.
Auch wenn der Nutzer Ihre App ziemlich oft startet, erlaubt Apple Ihrer App die Aktualisierung mithilfe der 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 das Telefon jeden Tag zum ersten Mal 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 wichtiger Punkt 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.
Im Allgemeinen gilt das Android-Modell der Hintergrundausführung nicht für iOS.
Sie können sich für Kalendertermine anmelden, wie unten gezeigt, 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.).
%Vor%Wenn Ihre Anwendung einen bestimmten Hintergrundmodus benötigt, erhalten Sie von Zeit zu Zeit Benachrichtigungen (wenn Sie aufgewacht sind). Ich habe gesehen, dass genehmigte Apps Standortaktualisierungen verwenden, um mehr Ausführungszeit zu erhalten, natürlich YMMV.
Tags und Links ios ekeventstore