Có nhiều câu hỏi liên quan nhưng (dường như) không có câu trả lời. SO ...iOS cách kết nối lại với thiết bị BLE ở chế độ nền?
Ứng dụng iOS của tôi không nhận nội dung cập nhật từ thiết bị BLE của tôi trong khi ứng dụng ở chế độ nền. Nếu tôi mất liên lạc với thiết bị BLE, sau đó trong centralManager:didDisconnectPeripheral:
Tôi gọi - [CBCentralManager cancelPeripheralConnection:]
- nếu không tôi sẽ không bao giờ kết nối lại với thiết bị ngoại vi bị mất. Sau đó, tôi gọi [(lại) gọi - [CBCentralManager scanForPeripheralsWithServices:options:]
.
Ghi nhật ký cho tôi biết rằng cuộc gọi didDisconnectPeripheral
và các cuộc gọi chứa trong số đó đều đang diễn ra trong khi ở chế độ nền. Tuy nhiên, kết nối lại chỉ xảy ra khi ứng dụng khởi động từ nền.
Vì vậy, tôi có thể giao tiếp với thiết bị BLE được kết nối trong khi ở chế độ nền (yay!) Nhưng không kết nối lại. Điều này khá quan trọng đối với ứng dụng của tôi và (một người sẽ nghĩ) đối với các ứng dụng khác. Đề nghị chào đón.
Thật không may cho tôi. Trong thực tế, bằng cách sử dụng connectPeripheral (thay vì gọi lại scanForPeripherals) ứng dụng của tôi không kết nối lại ngay cả khi nó vẫn còn ở phía trước. Kết nối không bao giờ được thiết lập lại.Trong khi nếu tôi gọi scanForPeripheral trong didDisconnectPeripheral, I * do * kết nối lại nếu ở nền trước, nhưng vẫn không ở chế độ nền. Grr. –
Thiết bị này là TI SensorTag, FWIW. –
Ok. Thẻ cảm biến gây phiền nhiễu - chúng bị tắt sau vài phút, vì vậy tôi không chắc liệu đây có phải là vấn đề của bạn hay không. Các thiết bị iOS cũng khó làm việc vì chúng thay đổi địa chỉ MAC cứ sau vài phút. Tôi có một thẻ cảm biến, vì vậy tôi sẽ có một cuộc chơi xung quanh và xem những gì sẽ xảy ra. Có thể mất một hoặc hai ngày ... – Paulw11