2012-11-08 4 views

답변

12

cancelPeripheralConnection으로 장치의 연결을 끊으면 didDisconnectPeripheral 대리자 메서드가 호출됩니다. 그러나 iOS 6.0에서 기기는 약 40 ~ 50 초 이상 연결되어 있으므로 해당 시간대에 didDiscoverPeripheral이 호출되지 않습니다. 다시 "발견"하려면 retrieveConnectedPeripherals 방법으로 전화하면 didRetrieveConnectedPeripherals에 참조 정보가 표시됩니다.

그러나 가장 좋은 해결책은 장치의 UUID를 저장하고이를 사용하여 retrievePeripherals 방법으로 다시 연결하는 것입니다. 그러면 didRetrievePeripherals이 호출되며 connectPeripheral으로 다시 연결할 수 있습니다. 이것은 장치에 다시 연결하는 가장 빠른 방법이며,이 경우 스캐닝이 필요하지 않습니다.

+0

나는 EAAccessory Framework에서 같은 것을 찾고있다. 가능한가? 그렇다면 누군가가 내게 "어떻게"지시 할 수 있습니까? 미리 감사드립니다 ... :) –

2

scanForPeripheralsWithServices으로 스캔을 수행하면 일반적으로 특정 장치 주소에 대해서만 한 번 알려줍니다. CBCentralManagerScanOptionAllowDuplicatesKey 옵션을 지정하여이 값을 변경하여 중복을보고 할 수 있습니다. 또는 앱에서 시간 초과를 사용하여 다른 기기의 연결이 끊어 졌음을 감지하고 스캔을 다시 시작할 수 있습니다.

2

CoreBluetooth에서 모든 관리는 응용 프로그램 계층에서 수행됩니다. 당신의 경우에, 나는 그것을 할 것입니다 동일한 이벤트에서보다는 연결 끊기 이벤트를 수신 대기, 주변 기기를 다시 연결하는 것입니다. 연결 방법은 저렴한 방법이며 다시 범위에있을 때 장치에 다시 연결하는 것이 좋습니다.

장치를 명시 적으로 연결 해제해도 동일한 연결 끊김 이벤트가 수신되었지만 다시 연결 방법을 호출하지 않았 음을 참고하십시오.

관련 문제