Sổ đăng ký nhà xuất bản có thể định cấu hình

Dịch vụ đo từ xa cung cấp Sổ đăng ký nhà xuất bản có thể định cấu hình làm phương tiện thu thập dữ liệu thứ yếu. Các ứng dụng và dịch vụ có thể tự đăng ký làm nhà xuất bản dữ liệu đo từ xa trong sổ đăng ký. Nhờ đó, các ứng dụng và dịch vụ này có thể sử dụng Dịch vụ đo từ xa. Hãy xem Nguồn dữ liệu để biết thêm thông tin về các loại nguồn dữ liệu mà chúng tôi hỗ trợ.

Thư viện

Dữ liệu đo từ xa giao tiếp với các nhà xuất bản trong Sổ đăng ký nhà xuất bản có thể định cấu hình thông qua Binder. Thay vì triển khai giao diện AIDL theo cách thủ công, bạn nên sử dụng thư viện Sổ đăng ký nhà xuất bản có thể định cấu hình đang trong giai đoạn thử nghiệm (thuộc SDK đo từ xa của chúng tôi). Thư viện này sẽ loại bỏ các giao diện AIDL và cung cấp một API rõ ràng, an toàn theo kiểu để xác định nhà xuất bản, xuất bản dữ liệu đo từ xa và quản lý việc chuyển đổi thông báo protobuf sang định dạng truyền tải.

Để biết thêm thông tin về cách sử dụng thư viện này, hãy xem bài viết Sổ đăng ký nhà xuất bản có thể định cấu hình thư viện.

Triển khai và đăng ký nhà xuất bản theo cách thủ công

Nếu không muốn sử dụng thư viện được cung cấp, bạn có thể triển khai các giao diện Binder cần thiết theo cách thủ công. Các phần sau đây cung cấp thông tin tổng quan về các bước cần thiết để triển khai nhà xuất bản và đăng ký nhà xuất bản đó trong Sổ đăng ký nhà xuất bản có thể định cấu hình.

Đăng ký

Không giống như các dịch vụ SDV (có siêu dữ liệu, chẳng hạn như cấu trúc thông báo, được xác định trong VSIDL và có sẵn cho hệ thống), các nhà xuất bản sử dụng Sổ đăng ký nhà xuất bản có thể định cấu hình phải cung cấp siêu dữ liệu một cách rõ ràng. Bạn cung cấp siêu dữ liệu này thông qua đối tượng PublisherInfo trong quá trình đăng ký.

Bạn đăng ký các nhà xuất bản này bằng giao diện IConfigurablePublisherRegistry AIDL. Do đó, bạn có thể viết các nhà xuất bản bằng mọi ngôn ngữ mà AIDL hỗ trợ, bao gồm Java, C++ và Rust. Giao diện này cung cấp 2 phương thức:

  • Sử dụng phương thức registerPublisher để đăng ký nhà xuất bản mới vào Dịch vụ đo từ xa:

    void registerPublisher(in PublisherInfo publisherInfo, in IConfigurablePublisher publisher)
    
  • Sử dụng phương thức unregisterPublisher để huỷ đăng ký nhà xuất bản đã đăng ký trước đó khỏi Dịch vụ đo từ xa:

    void unregisterPublisher(in @utf8InCpp String serviceName)
    

Đối tượng PublisherInfo chỉ định thông tin cơ bản của nhà xuất bản:

Trường Mô tả
serviceName Tên do người dùng xác định của nhà xuất bản. Sử dụng tên này để tham chiếu đến nhà xuất bản đó từ các cấu hình chỉ số.
fileDescriptorSet Một google.protobuf.FileDescriptorSet được tuần tự hoá (xem bài viết Thông báo tự mô tả để biết thêm thông tin) chứa bộ mô tả thông báo (được đặt tên theo trường messageTypeName) của thông báo mà nhà xuất bản này xuất bản và tất cả các phần phụ thuộc cần thiết của thông báo đó. Dịch vụ đo từ xa sử dụng bộ mô tả thông báo để giải tuần tự hoá dữ liệu do nhà xuất bản gửi. Để biết thêm thông tin về cách tạo bộ mô tả này tại thời điểm xây dựng, hãy xem bài viết Công cụ tạo bộ mô tả protobuf Java.
messageTypeName Tên đầy đủ của các thông báo protobuf mà nhà xuất bản của bạn xuất bản. Bộ mô tả thông báo của thông báo này phải được khai báo trong fileDescriptorSet.
supportsGet Cho biết liệu nhà xuất bản có thể cung cấp thông báo mới nhất mà không cần đăng ký thông báo đó hay không.

Triển khai

Nhà xuất bản tuỳ chỉnh của bạn phải triển khai giao diện IConfigurablePublisher bằng cách cung cấp các phương thức sau:

  • Dịch vụ đo từ xa gọi createSubscription để đăng ký nhà xuất bản nếu connection_type của nguồn dữ liệu cho nhà xuất bản này trong cấu hình chỉ số được đặt thành SUBSCRIPTION. Đối số ISubscriber được truyền đến nhà xuất bản của bạn cung cấp phương thức sendData(in byte[] data). Bạn có thể sử dụng phương thức này để truyền trực tuyến thông báo protobuf đến Dịch vụ đo từ xa.

    IConfigurablePublisherSubscription createSubscription(in ISubscriber subscriber, in @nullable byte[] configuration)
    
  • Dịch vụ đo từ xa gọi getLatestMessage để tìm nạp thông báo mới nhất của nhà xuất bản nếu connection_type của nguồn dữ liệu cho nhà xuất bản này trong cấu hình chỉ số được đặt thành ON_DEMAND. Dịch vụ đo từ xa chỉ sử dụng phương thức này nếu PublisherInfo của nhà xuất bản cho biết supportsGet = true.

    @nullable byte[] getLatestMessage(in @nullable byte[] configuration)
    

Dịch vụ đo từ xa đặt đối số configuration thành tuỳ chọn configuration của nguồn dữ liệu trong cấu hình chỉ số.