scanForPeripheralsWithServices가 백그라운드에서 작동하지 않는 것으로 나타났습니다. iOS - 백그라운드에서 BLE devies 검사
내가 지속적으로 백그라운드에서 BLE 장치를 스캔해야 백그라운드 서비스를 원하는
- 지정된 UUID 및 옵션 : 나는 다음과 같이 시도 . 도움 주셔서 감사합니다.
scanForPeripheralsWithServices가 백그라운드에서 작동하지 않는 것으로 나타났습니다. iOS - 백그라운드에서 BLE devies 검사
내가 지속적으로 백그라운드에서 BLE 장치를 스캔해야 백그라운드 서비스를 원하는
백그라운드 모드는 스캔을 위해 다르게 작동합니다.
모든 주변 장치는 처음 관찰 된 단일 시간에만보고됩니다 (백그라운드 모드에서는 RSSI에 연결하지 않고 근접성을 추적 할 수 없음).
범위 내에 있지 않은 주변 장치에 대한 연결 요청을 시작할 수 있으며 주변 장치를 사용할 수있게되면 연결이 완료됩니다. 이것을 적극적으로 검색 할 필요는 없습니다 (초기 검색을 제외하고 어떤 UUID를 연결해야하는지 알 수 있습니다).
아마도 백그라운드에서 스캔하는 대신 연결 요청을 보내 문제를 해결할 수 있습니다. 이렇게하면 iOS는 사용자가 특정 주변 장치에 정말로 관심이 있다는 것을 알고 있으며 이것이 검색 시간에 영향을 미친다는 것을 알 수 있습니다.
내 주변 장치의 RSSI 값이 변경되면 (백그라운드) 내 앱에 알림을 보내고 싶습니다. 어떻게해야합니까? – user1517635
그냥'[peripheral readRSSI];를 호출하십시오. (http://stackoverflow.com/questions/14933688/scan-peripheral-on-background/19857901#19857901) – l0gg3r
빠른 답장을 보내 주셔서 감사합니다. 나는 이것을 시도했다 NSTimer * rssiTimer; [rssiTimer invalidate]; rssiTimer = [NSTimer timerWithTimeInterval : 1.0 타겟 : 주변 셀렉터 : @selector (readRSSI) userInfo : nil repeats : YES]; [[NSRunLoop currentRunLoop] addTimer : rssiTimer forMode : NSRunLoopCommonModes]; 응용 프로그램이 포 그라운드에있을 때 제대로 작동하지만 응용 프로그램이 백그라운드로 들어갈 때 rssi 값을 읽지 않습니다. – user1517635