Trong Bluetooth lõi, sau khi kết nối với thiết bị, tôi tắt thiết bị và thiết bị bị ngắt kết nối. Nhưng khi tôi bật lại thiết bị, không còn gọi là didDiscoverPeripheral
nữa. Làm thế nào tôi có thể kết nối lại với thiết bị?Làm cách nào để kết nối lại với thiết bị sau khi ngắt kết nối trong Lõi Bluetooth
Trả lời
Khi bạn ngắt kết nối thiết bị với cancelPeripheralConnection
phương thức ủy nhiệm didDisconnectPeripheral
sẽ được gọi. Tuy nhiên, từ iOS 6.0 thiết bị vẫn được kết nối trong khoảng 40-50 giây (hoặc hơn), vì vậy không có didDiscoverPeripheral
sẽ được gọi trong khung thời gian đó. Nếu bạn muốn "khám phá" nó một lần nữa chỉ cần gọi phương thức retrieveConnectedPeripherals
và bạn sẽ nhận được tham chiếu trong didRetrieveConnectedPeripherals
.
Tuy nhiên, giải pháp tốt nhất là lưu UUID của thiết bị và sử dụng để kết nối lại với phương pháp retrievePeripherals
. Điều này sẽ gọi didRetrievePeripherals
và bạn có thể kết nối lại với connectPeripheral
. Đây là cách nhanh nhất để kết nối lại với thiết bị, không cần quét trong trường hợp này.
Khi bạn thực hiện quét với scanForPeripheralsWithServices
, thông thường sẽ chỉ thông báo cho bạn một lần cho địa chỉ thiết bị cụ thể. Bạn có thể thay đổi điều này để báo cáo các bản sao bằng cách chỉ định tùy chọn CBCentralManagerScanOptionAllowDuplicatesKey
. Hoặc bạn có thể yêu cầu ứng dụng phát hiện thiết bị khác đã ngắt kết nối bằng cách hết thời gian chờ và khởi động lại quá trình quét của bạn.
Trong CoreBluetooth tất cả quản lý được thực hiện bởi lớp ứng dụng. Trong trường hợp của bạn, những gì tôi sẽ làm là lắng nghe để ngắt kết nối sự kiện hơn trong cùng một sự kiện, kết nối lại thiết bị ngoại vi. Phương pháp kết nối là phương thức rẻ tiền và đảm bảo bạn kết nối lại với thiết bị của mình khi thiết bị trở lại phạm vi phủ sóng.
Lưu ý rằng nếu bạn ngắt kết nối thiết bị rõ ràng, bạn đã nhận được cùng một sự kiện ngắt kết nối, nhưng bạn không phải gọi phương thức kết nối lại.
Tôi đang tìm kiếm tương tự với Khung EAAccessory. Có thể không? Nếu có ai đó có thể hướng dẫn tôi "làm thế nào để"? Cảm ơn trước...:) –