서버와의 MQTT 연결이있는 곳에서 응용 프로그램을 만들고 서버가 장치 및 UI 변경과 관련된 일부 값을 적절하게 전송하고 있습니다. 그러나 앱이 백그라운드에있을 때 특정 값이 변경된다는 로컬 알림을 받아야합니다. 배경 서비스는 iOS에서 허용되지 않지만 iOS에서는이를 달성 할 수있는 방법이 없다는 것을 알고 싶습니다.iOS 백그라운드에서 서비스를 실행하여 로컬 알림을받는 방법은 무엇입니까?
UIApplication.shared.beginBackgroundTask
으로 백그라운드에서 앱으로 로컬 알림을 성공적으로 추가했지만 사과가 앱을 종료 한 후 3 분 동안 만 작동합니다.
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
}
그리고 단지 self.registerBackgroundTask()
를 호출하는 세 분 동안 백그라운드에서 응용 프로그램이 실행 가능합니다.
다음으로 서비스를 실행하는 배경 가져 오기 및 위젯을 시도해 보겠습니다. 위의 두 가지 중 하나가 작동 할 수있는 몇 가지 제안을 원하십니까?
실제로 있습니다. 서버와 MQTT의 소켓 연결이 생성되고 연결이 생성 된 후 서버가 디바이스 상태를 일정 시간마다 보냅니다. 위의 모드에서 백그라운드 모드에서 사과가 제공하는 방법을 모르겠습니다. –
외부 액세서리가 외부 액세서리 프레임 워크를 지원해야합니다. . https://developer.apple.com/reference/externalaccessory를 참조하십시오. 일] MQTT 디 Y 이스에서는 이것이 가능하지 않습니다. iOS에서 해당 기기를 사용하려면 '외부 액세서리'로 설정하거나 원격 알림을 사용하여 iOS와 호환되도록 설정해야합니다. 디바이스를 변경할 수 없다면 MQTT를 수행하고 iOS/백그라운드 호환 트래픽으로 변환 할 사이에 작은 서버가 있어야합니다. – transistor
설명해 주셔서 감사합니다. 내 팀 –