Problem mit der Hintergrundzeit für die Bluetooth LE-App für das iPhone 4s

Ich verwende das Core-Bluetooth-Framework für meine App in Iphone-4s.
Dies muss in der Regel eine Hintergrund-App sein, die so lange wie möglich ausgeführt werden kann.

Jetzt läuft es nur noch 40 min - 1 Stunde max.

Ich hoffe auf mindestens 1 Tag oder so.

Dazu wird in der .plist-Datei unter "Erforderliche Hintergrundmodi" der Wert "Bluetooth-Zentral" hinzugefügt.

Es scheint, als würde meine App am Ende den Modus "aussetzen". Wenn ich die App erneut öffne (Hintergrund in den Vordergrund), wird die Benachrichtigung erneut gesendet. Dies bedeutet, dass die Bluetooth-Verbindung weiterhin besteht und das BLE-Gerät weiterhin Benachrichtigungen sendet. Wenn ich die Home-Taste drücke und die App in den Hintergrund wechselt, wird sie NICHT erneut benachrichtigt.

Kann mir jemand sagen, warum meine App nur für maximal 1 Stunde im Hintergrundmodus läuft. Es sollte wie eine normale Musik-App für immer im Hintergrund laufen.

Gibt Apple an, unter welchen Umständen eine Hintergrund-App (eine der Hintergrund-Apps mit Dauerbetrieb in den 5 Kategorien) nicht in den Suspend-Modus versetzt werden kann?

Bezugnahme "iPhoneAppProgrammingGuide", auf "Communicating with a Bluetooth Accessory"Abschnitt, ich weiß, dass für lange laufende Hintergrundaufgaben für Bluetooth LE-Anwendung 2 Implementierungen notwendig sind:

1) UIBackgroundModes-Schlüssel sollte "Bluetooth-Zentral" seinInfo.plist Datei. 2) Jede App, die die Hintergrundverarbeitung von Bluetooth-Daten unterstützt, muss sitzungsbasiert sein.

Für meine App wurde also die FIRST-Implementierung integriert, mit der die Anwendung im Hintergrund ausgeführt werden kann und alle Aufgaben für maximal 1 Stunde ausgeführt werden können.

Jetzt muss ich die 2. Implementierung implementieren. d.h. sitzungsbasiert. Damit können die Ereignisse auch dann abgerufen werden, wenn sich die App laut Dokumentation im Status "Suspend" befindet. Ich habe versucht, eine geeignete Sitzung für Bluetooth LE (Core Bluetooth Framework) zu erstellen, z.EASession"vorhanden für Classic Bluetooth (External Accessory Framework). Aber ich habe es nicht gefunden.

Grundsätzlich bin ich mir nicht sicher, welche Session-Klasse ich für BLE-Zwecke verwenden muss. Für Audio / Video, Networking und Internet, externes Zubehör, stehen individuelle Sitzungsklassen zur Verfügung. Für das Core Bluetooth-Framework gibt es keine.

Könnte mir jemand helfen, welche Sessionklasse für BLE geeignet ist.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage