2017-03-10 5 views
0

BLE 장치에 숨겨진 서비스/특성이 있습니다.이 특성은 다른 특성에 "올바른"명령을 보내는 경우에만 표시됩니다. 그러나 연결 상태를 유지하고 "discoverServices : nil"또는 "discoverServices : service-i-care-about"를 호출하면 활성화 된 서비스를 찾지 못합니다.연결된 장치에서 서비스 재발견 하시겠습니까?

연결을 끊을 때 장치가 서비스를 숨기지 않게하기 위해 펌웨어를 변경했지만 (장치를 다시 연결할 수 있기 때문에) 서비스가 활성화되는 것을 알고 있습니다. 서비스가 나타납니다.

서비스를 숨길 때마다 서비스를 활성화하기 위해 올바른 명령을 보내야하기 때문에이 작업을 수행하고 싶지 않습니다 (레코드의 경우 MCU 공급 업체가 제공 한 펌웨어 업데이트 서비스이며, 서비스를 "광산"으로 변경하거나 서비스 자체를 둘러싼 보안을 바꿀 수는 없습니다.

의도 한 블루투스 동작입니까? 아니면 iOS가 아마도 뭔가를 캐싱하고 캐시 된 값을 가져 오지 못하게하기 위해 뭔가를해야합니까?

+0

gatt db를 변경 한 후 "서비스 변경"특성 표시를 보내시겠습니까? – Emil

답변

0

iOS는 성능상의 이유로 발견 된 주변 장치와 해당 서비스 및 특성을 캐시합니다.

  1. 이 (특성
  2. 변화 당신 주변의 MAC 주소를 변경 서비스를 통해 중앙을하지 말 : 당신이 어떤 주어진 시간에 주변의 GATT 테이블을 변경해야하는 경우에는 Central을 말할 수있는 두 가지 옵션이 있습니다 권장하지만 우리는 우리가 부트 로더로 이동할 때까지 우리의 임베디드 디바이스의 펌웨어 업데이트 서비스를 숨길 필요가 있기 때문에 일부 칩셋 업체

우리는뿐만 아니라이 문제를 건너 왔어요)을 BLE 부트 로더에서 예를 들어,이 해결 방법, NordicSemi를 사용합니다.