2014-10-04 3 views
0

scanForPeripheralsWithServices가 백그라운드에서 작동하지 않는 것으로 나타났습니다. iOS - 백그라운드에서 BLE devies 검사

내가 지속적으로 백그라운드에서 BLE 장치를 스캔해야 백그라운드 서비스를 원하는

  • 설정 UIBackgroundModes 블루투스 - 중앙 및 블루투스-주변의 Info.plist 전무

    1. 지정된 UUID 및 옵션 : 나는 다음과 같이 시도 . 도움 주셔서 감사합니다.

  • 답변

    0

    백그라운드 모드는 스캔을 위해 다르게 작동합니다.

    모든 주변 장치는 처음 관찰 된 단일 시간에만보고됩니다 (백그라운드 모드에서는 RSSI에 연결하지 않고 근접성을 추적 할 수 없음).

    범위 내에 있지 않은 주변 장치에 대한 연결 요청을 시작할 수 있으며 주변 장치를 사용할 수있게되면 연결이 완료됩니다. 이것을 적극적으로 검색 할 필요는 없습니다 (초기 검색을 제외하고 어떤 UUID를 연결해야하는지 알 수 있습니다).

    아마도 백그라운드에서 스캔하는 대신 연결 요청을 보내 문제를 해결할 수 있습니다. 이렇게하면 iOS는 사용자가 특정 주변 장치에 정말로 관심이 있다는 것을 알고 있으며 이것이 검색 시간에 영향을 미친다는 것을 알 수 있습니다.

    +0

    내 주변 장치의 RSSI 값이 변경되면 (백그라운드) 내 앱에 알림을 보내고 싶습니다. 어떻게해야합니까? – user1517635

    +0

    그냥'[peripheral readRSSI];를 호출하십시오. (http://stackoverflow.com/questions/14933688/scan-peripheral-on-background/19857901#19857901) – l0gg3r

    +0

    빠른 답장을 보내 주셔서 감사합니다. 나는 이것을 시도했다 NSTimer * rssiTimer; [rssiTimer invalidate]; rssiTimer = [NSTimer timerWithTimeInterval : 1.0 타겟 : 주변 셀렉터 : @selector (readRSSI) userInfo : nil repeats : YES]; [[NSRunLoop currentRunLoop] addTimer : rssiTimer forMode : NSRunLoopCommonModes]; 응용 프로그램이 포 그라운드에있을 때 제대로 작동하지만 응용 프로그램이 백그라운드로 들어갈 때 rssi 값을 읽지 않습니다. – user1517635

    관련 문제