Ich arbeite an einer App, bei der eine MQTT-Verbindung mit dem Server besteht und der Server einige Werte bezüglich der Änderungen an Gerät und Benutzeroberfläche sendet. Wenn sich die App jedoch im Hintergrund befindet, sollte der Benutzer eine lokale Benachrichtigung erhalten, dass bestimmte Werte geändert werden. Ich weiß, Hintergrund-Service ist in iOS nicht erlaubt, aber ich möchte sicherstellen, dass es keine Möglichkeit gibt, dies zu erreichen.Wie führe ich einen Dienst im iOS-Hintergrund aus, um lokale Benachrichtigungen zu erhalten?
Ich habe erfolgreich lokale Benachrichtigung mit App im Hintergrund von UIApplication.shared.beginBackgroundTask
hinzugefügt, aber es funktioniert nur für 3 Minuten genau danach Apple beendet die App.
func registerBackgroundTask() {
backgroundTask = UIApplication.shared.beginBackgroundTask { [weak self] in
self?.endBackgroundTask()
}
assert(backgroundTask != UIBackgroundTaskInvalid)
}
func endBackgroundTask() {
print("Background task ended.")
UIApplication.shared.endBackgroundTask(backgroundTask)
backgroundTask = UIBackgroundTaskInvalid
}
Und self.registerBackgroundTask()
Aufruf macht den App runnable im Hintergrund für drei Minuten.
Als nächstes werde ich versuchen, dass Hintergrund Fetch und Widget Service zu laufen, Hier möchte ich nur einige Vorschläge, die gibt es eine Chance, dass einer der beiden oben funktioniert?
Eigentlich gibt es Socket-Verbindung in MQTT mit dem Server und nach der Verbindung erstellt Server sendet Gerätestatus über ein Zeitintervall und ich weiß nicht, wie dies im Hintergrund-Modus mit jedem oben genannten Modus, dass Apple bietet –
External Accessories müssen das externe Zubehör-Framework unterstützen . Siehe https://developer.apple.com/reference/externalaccessory. Bei einem generischen MQTT-Gerät ist dies nicht möglich. Um dieses Gerät mit iOS verwenden zu können, müssen Sie es mit iOS kompatibel machen, indem Sie es zu einem "externen Zubehörteil" machen oder indem Sie Remote-Benachrichtigungen verwenden. Wenn Sie das Gerät nicht ändern können, benötigen Sie einen eigenen kleinen Server dazwischen, der das MQTT ausführt und es in iOS/Hintergrund-kompatiblen Datenverkehr übersetzt. – transistor
Danke für die Erklärung Ich werde darüber mit meinem Team –