Ciri-ciri pasca-penyiapan untuk orientasi kamera

   Diimplementasikan di Aplikasi Contoh untuk iOS   

Sifat yang dapat digunakan setelah perangkat diaktifkan adalah:

OtaSoftwareUpdateRequestorTrait

Karakteristik ini menyediakan antarmuka untuk memantau update software OTA di perangkat kamera. Setelah diaktifkan, kamera akan memulai update dan melaporkan statusnya ke aplikasi. Setelah aplikasi menerima status bahwa update software telah selesai, kamera dapat mulai melakukan livestream.

Kode contoh dan penjelasan berikut menunjukkan cara menggunakan karakteristik ini.

device.types.subscribe(OtaRequestorDeviceType.self)
  .receive(on: DispatchQueue.main)
  .compactMap { $0.traits[Matter.OtaSoftwareUpdateRequestorTrait.self] }
  .removeDuplicates()
  .timeout(.seconds(30), scheduler: DispatchQueue.main)
  .sink { [weak self] completion in
    guard let self else { return }
    Logger.debug("OTA trait subscription completed unexpectedly: \(completion).")
    if case .otaDownload = self.step {
      Logger.debug("Advancing to settings step due to OTA trait subscription completion")
      self.step = .settings
    }
  } receiveValue: { [weak self] otaTrait in
    Logger.debug(
      "OTA update is in progress, state: \(otaTrait.attributes.updateState), progress: \(otaTrait.attributes.updateStateProgress ?? 0)"
    )

    self.step = .otaDownload(
      state: otaTrait.attributes.updateState ?? .querying,
      progress: Double(otaTrait.attributes.updateStateProgress ?? 0) / 100.0)
    }
  }
  .store(in: &cancellables)
  • Berlangganan ke karakteristik perangkat: Berlangganan ke karakteristik perangkat, khususnya mencari OtaSoftwareUpdateRequestorTrait untuk memproses informasi update OTA.

  • Menetapkan waktu tunggu: Menetapkan waktu tunggu 30 detik. Jika tidak ada update yang diterima dari karakteristik dalam waktu tersebut, langganan akan berakhir.

  • Menangani update status OTA (receiveValue): Saat OtaSoftwareUpdateRequestorTrait memberikan status baru, blok ini akan dijalankan. Log ini mencatat status saat ini dan progres update OTA. Kemudian, ViewModel akan memperbarui status internal aplikasi (step) untuk mencerminkan informasi baru ini.

  • Menangani penyelesaian (sink): Blok ini dijalankan saat langganan berakhir, dan mencatat penyelesaiannya. Jika prosesnya dalam status mendownload, status aplikasi akan berlanjut ke langkah berikutnya (.settings).

  • Mengelola siklus proses langganan: Baris .store(in: &cancellables) memastikan bahwa langganan dikelola dan dibatalkan dengan benar saat objek yang memilikinya dibatalkan alokasinya.

Untuk mengetahui informasi selengkapnya, lihat referensi karakteristik OtaSoftwareUpdateRequestorTrait.

ConfigurationDoneTrait

Karakteristik ini tidak diperlukan untuk aktivasi kamera, tetapi memungkinkan aplikasi melacak kapan perangkat telah disiapkan sepenuhnya dan dapat digunakan dengan menetapkan atribut AppConfigurationComplete ke true. Karakteristik ini harus digunakan setelah OtaSoftwareUpdateRequestorTrait.

let configDoneTrait = try await device.types.get(OtaRequestorDeviceType.self)?.traits[Google.ConfigurationDoneTrait.self]
_ = try await configDoneTrait?.update {
  $0.setAppConfigurationComplete(true)
}