Ở cuối trung tâm, đại biểu CBPeripheral sẽ được gọi trong khi kết nối hoặc ngắt kết nối. Nhưng làm thế nào để một CBPeripheralManager biết rằng nó được kết nối hoặc bị ngắt kết nối bởi một thiết bị trung tâm? Ngoài ra, thiết bị ngoại vi có thể từ chối yêu cầu kết nối từ thiết bị trung tâm không?Làm thế nào để một CBPeripheralManager biết nó được kết nối hoặc ngắt kết nối bởi một thiết bị trung tâm trong Core Bluetooth?
Trả lời
Bạn không nhận được thông báo cụ thể khi trung tâm kết nối với dịch vụ ngoại vi do ứng dụng của bạn cung cấp. Bạn có thể suy ra một kết nối từ CBPeripheralManagerDelegate
phương pháp sau đây được gọi là -
didSubscribeToCharacteristic
didReceiveReadRequest
didReceiveWriteRequest
Nếu bạn đã nhận được một thuê bao thông qua didSubscribeToCharacteristic
sau đó bạn có thể suy ra một ngắt kết nối khi bạn nhận được một cuộc gọi tương ứng với didUnsubscribeFromCharacteristic
. Nếu trung tâm không sử dụng các mục đăng ký thì bạn không có dấu hiệu nào cho thấy chúng đã bị ngắt kết nối - bạn sẽ không nhận được bất kỳ yêu cầu đọc/ghi nào nữa.
Bạn không thể từ chối kết nối từ trung tâm. Bạn có thể đặt yêu cầu mã hóa trên một hoặc nhiều đặc điểm của mình. Điều này sau đó sẽ bắt đầu một quá trình ghép nối dựa trên pin khi một lần đầu tiên trung tâm cố gắng đọc/ghi/thông báo về đặc tính đó.
Bạn cũng có thể triển khai một số hình thức xác thực trong đó trung tâm cần phản hồi thử thách/viết mật khẩu cho một đặc tính, vv trước khi bạn trả lời các yêu cầu đọc/ghi khác của trung tâm đó.
- 1. SignalR kết nối/ngắt kết nối trung tâm thổi lên
- 2. Kết nối một thiết bị bluetooth với nhiều thiết bị
- 3. 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
- 4. Phát sóng nếu thiết bị bluetooth đang kết nối/ngắt kết nối?
- 5. Làm thế nào để biết khi nào một Ổ cắm đã bị ngắt kết nối
- 6. liệt kê các thiết bị bluetooth được kết nối?
- 7. Làm thế nào để ngắt kết nối một hàm lambda không lưu trữ kết nối
- 8. Lõi Bluetooth: CBPeripheral ngắt kết nối mỗi ~ 10 giây
- 9. Cách có nhiều kết nối với một thiết bị bluetooth Obd2 duy nhất được kết nối với ô tô
- 10. Cách kết nối thiết bị bluetooth trong windows 8
- 11. Kiểm tra trạng thái thiết bị bluetooth đã kết nối
- 12. CoreBluetooth liên tục ngắt kết nối
- 13. Ngoại lệ NHibernate: Giao dịch không được kết nối hoặc bị ngắt kết nối
- 14. Android Wear, kết nối với thiết bị bluetooth
- 15. Làm thế nào để biết khi nào một thiết bị lưu trữ USB mới được kết nối trong Qt?
- 16. Kết nối Bluetooth tự động với các thiết bị được ghép nối
- 17. Thiết bị bluetooth hiện đang kết nối android
- 18. Android phát hiện ngắt kết nối Bluetooth ngay lập tức
- 19. Kết nối với thiết bị Bluetooth nhúng từ thiết bị Android
- 20. Kết nối nhiều thiết bị qua Bluetooth trên Android (Kết nối nhiều BLE)
- 21. Thiết bị LogCat Android bị ngắt kết nối
- 22. Làm thế nào để loại bỏ hoặc ngắt kết nối một thành phần trong React Native?
- 23. Android 2.1 Phát hiện âm thanh Bluetooth kết nối/ngắt kết nối
- 24. Làm cách nào để kết nối thiết bị iOS với thiết bị không iOS (thiết bị Arduino) qua Bluetooth?
- 25. Làm cách nào để biết thiết bị ngoại vi có được kết nối với GPIO không?
- 26. Thiết bị USB được kết nối
- 27. không thể kết nối giữa 2 thiết bị bluetooth android
- 28. kết nối với thiết bị bluetooth không thể phát hiện
- 29. Khách hàng bị ngắt kết nối
- 30. Làm thế nào để kiểm tra xem một ví dụ twisted.internet.protocol đã bị ngắt kết nối
Xin chào Paulw11, cảm ơn câu trả lời của bạn. Nhưng tôi không chắc chắn về quá trình xây dựng kết nối được khởi tạo bởi trung tâm. Có nghĩa là trung tâm chỉ đọc tín hiệu phát sóng từ thiết bị ngoại vi trong khi kết nối, mà không thông báo cho thiết bị ngoại vi miễn là nó không làm bất cứ điều gì về các đặc tính? –
Không, ở lớp Bluetooth có thông báo cho thiết bị ngoại vi rằng kết nối đang được khởi tạo và một số giao tiếp diễn ra để thiết lập kết nối, nhưng khung Core Bluetooth không hiển thị phương thức ủy quyền để thông báo cho CBPeripheral rằng kết nối đã được thực hiện – Paulw11
@Paulw bạn có biết lý do đằng sau không tiết lộ thông tin này không? Ngoài ra, có cách nào để mô phỏng một liên kết BTLE "xấu" (như chúng ta có thể nói liên kết WiFi sẽ giảm 50% các gói bằng cách sử dụng Cài đặt -> Nhà phát triển)? –