2016-10-02 2 views
0

전화를 재부팅 한 후 주변 장치를 다시 연결하려고합니다.재부팅 후 블루투스 주변 장치에 연결하십시오.

위치 업데이트 콜백을 사용하여 백그라운드에서 BLE 연결 프로세스를 시작합니다. BLE 스택이 제대로 배경에 초기화

어떤 생각

는 재부팅 후 장치를 다시 연결 ... 시작 주변에

은 "연결"(CBCentralManagerStatePoweredOn 이벤트가 전송)하지만 연결이 설정되지 않습니다?

답변

0

주변 장치의 "연결"이 시작되었다고 말하면 connectPeripheral을 사용하여 수동으로 연결한다는 의미입니까? 나는 과거에 iOS와의 연결에 어려움을 겪었으며 CoreBluetooth에는 피할 수없는 내부 경쟁 조건이 많이 있음을 알았습니다. 일반적으로 CoreBluetooth 콜백 후에 발생하는 20ms 이상의 모든 연결 요청에 대해 항상 디스패치 지연을 수행하는 것이 좋습니다. 이것은 대부분의 경쟁 조건을 피할 것입니다. 보류중인 연결을 설정 한 다음 나중에 주변 장치가 연결되기 전에 cancelPeripheralConnection :을 호출하여이를 직접 테스트 할 수 있습니다. didFailToConnect 콜백을 받으면 즉시 connectPeripheral :을 다시 호출하십시오. 이제 연결 상태는 "연결"인 "limbo"모드에 있어야하지만 사실 주변 장치는 연결되지 않습니다. connect를 다시 호출하면이 시점에서 아무 작업도 수행하지 않습니다.

문제의 원인인지는 모르겠지만 그럴 수는 있습니다. 또한 CentralManager 상태를 복원 할 때 프레임 워크가 상호 작용하기 전에 약 1 초 동안 프레임 워크를 "고정"하도록 권장합니다.

또 다른 중요한 점은 AppDelegate의 applicationDidFinishLaunchingWithOptions : 콜백을받은 후에야 관리자를 다시 시작한다는 것입니다. 이렇게하면 이상한 행동이 발생할 수 있습니다.

조사를 더 진행하고 문제가 계속되는 경우 알려 주시기 바랍니다. 나는 몇몇 더 끝을 가지고 있을지도 모른다./안톤

관련 문제