Alarmierung im Hintergrund

skeee

Golden Delicious
Registriert
29.10.15
Beiträge
10
Hallo,
Ich möchte eine Alarmierung umsetzen und suche dafür noch entsprechende Ansätze.
Speziell geht es da um den Fall, dass das iPhone gerade nicht aktiv genutzt wird, sondern mit ausgeschaltetem Bildschirm irgendwo liegt.
Jetzt möchte ich gerne von meinem Server aus Daten an das Gerät schicken um es dazu zu bringen zu vibrieren oder Töne abzuspielen. Und das Ganze möglichst in Echtzeit
Ich denke, normale Push-Nachrichten scheiden aus, da diese ja die App erst triggern, wenn der Benutzer aktiv etwas tut.
Als Alternative hätte ich gedacht, ich baue eine Socketverbindung zu meinem Server auf, über die ich dann Daten ans Gerät pushe. Könnte ich so eine Verbindung über einen Background-Service aufrecht erhalten? Ist ungefähr abzusehen, wie sehr das den Akku belastet, wenn die App ständig im Hintergrund aktiv ist und alle x Sekunden ein Ping hin- und her geht?

Die zweite Alternative wäre, auch über einen Background-Service, alle x Sekunden einen HTTP Request abzusetzen um zu schauen, ob auf dem Server eine neue Alarmierung vorliegt. Da das Ganze aber doch recht zeitkritisch ist, müsste ich eigentlich alle 5-10 Sekunden einen Request absetzen. Ich gehe mal davon aus, dass das den Akku recht schnell leer macht. Sehe ich das richtig?

Mehr fällt mir an der Stelle leider nicht ein und ich wäre für jeden Input dankbar.

Einen zusätzlichen Punkt habe ich noch:
Soweit ich weiß, kann ich bei iOS die Lautstärke-Einstellungen nicht übergehen (wie zB bei Android).
Da die Alarmierung aber natürlich nicht funktioniert, wenn das Gerät lautlos geschaltet wurde, würde ich gerne im Hintergrund, bzw. zyklisch, auslesen ob das Gerät lautlos ist oder nicht, und, falls ja, dem Anwender eine Benachrichtigung ausgeben. Ist sowas technisch möglich?


Danke
Skee
 

Karift

Jonagold
Registriert
09.10.15
Beiträge
23
Also meinen Kenntnissen nach läuft ein Backgroundservice nur ca. 10 Minuten im Background, danach wird er von iOs gekillt.
Ich glaube schon, dass du auf Push-Nachrichten setzen musst.
 

.holger

Borowitzky
Registriert
13.09.04
Beiträge
8.970
Background fällt raus. Du kannst mit Background Fetch im Hintergrund Daten vom Server laden, aber die kannst Du (so weit ich das weiß) nicht 100%ig timen (das OS entscheidet, wann es sinnvoll ist). Pushnachrichten sind glaube ich 'the way to go'. Ab iOS 8 kannst Du mit content-available der App mitteilen, dass was neues zum runterladen vorhanden ist. Die App wird dann gestartet und kann den Download process auslösen. Das funktioniert aber nicht, wenn der User die App über den App Switcher geschmissen hat.(siehe auch hier)
Use this method to process incoming remote notifications for your app. Unlike the application:didReceiveRemoteNotification: method, which is called only when your app is running in the foreground, the system calls this method when your app is running in the foreground or background. In addition, if you enabled the remote notifications background mode, the system launches your app (or wakes it from the suspended state) and puts it in the background state when a remote notification arrives. However, the system does not automatically launch your app if the user has force-quit it. In that situation, the user must relaunch your app or restart the device before the system attempts to launch your app automatically again.

Was genau hast Du denn vor, bzw. warum ist es zeitkritisch?