Bạn cũng có thể đăng ký ở chế độ nền để nhận Intent thay vì thông báo MessageListener. Quét nền là chức năng quét nguồn thấp vì vậy độ trễ có thể rất dài (thậm chí vài phút để phát hiện đèn hiệu). Quét được thực hiện trên sự kiện trên màn hình hoặc khi ứng dụng khác yêu cầu. Vì vậy, bạn nhận được kết quả từ các ứng dụng quét khác.
Bạn có thể tạo GoogleApiClient bằng ngữ cảnh ứng dụng thay vì ngữ cảnh hoạt động. Gọi đây là tức là từ một máy thu phát sóng phản ứng với chương trình phát sóng BOOT_COMPLETED.
GoogleApiClient client = new GoogleApiClient.Builder(appContext)
.addApi(Nearby.MESSAGES_API, new MessagesOptions.Builder()
.setPermissions(NearbyPermissions.BLE)
.build())
.build();
client.connect();
Khi khách hàng được kết nối (các onConnected phương pháp ConnectionCallbacks), bạn có thể sử dụng subscribe PendingIntent và tạo Broadcast receiver xử lý mục đích.
Trong bộ thu phát, bạn có thể xử lý ý định bằng phương thức Nearby.Messages.handleIntent đang sử dụng cùng một MessageListener làm tính năng quét trước.
Một trong những vấn đề với phương pháp này là quyền truy cập Lân cận. Để cho phép người dùng phê duyệt quyền truy cập vào Lân cận, bạn cần có giao diện người dùng. Giải pháp của tôi là đợi với chức năng quét nền cho đến khi người dùng lần đầu tiên mở ứng dụng và chấp nhận các quyền. Sau khi được chấp nhận, bạn có thể đăng ký ở chế độ nền.