Kamera ekleme için devreye alma sonrası özellikler

   iOS için örnek uygulamada uygulandı   

Cihaz yetkilendirildikten sonra kullanılabilecek özellikler şunlardır:

OtaSoftwareUpdateRequestorTrait

Bu özellik, kamera cihazında OTA yazılım güncellemesini izlemek için bir arayüz sağlar. Devreye alındıktan sonra kamera, güncellemeyi başlatır ve durumunu uygulamaya bildirir. Uygulama, yazılım güncellemesinin tamamlandığına dair durum bilgisini aldıktan sonra kamera canlı yayına başlayabilir.

Aşağıdaki örnek kod ve açıklama, özelliğin nasıl kullanılabileceğini göstermektedir.

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)
  • Cihaz özelliklerine abone olma: Cihazın özelliklerine abone olur ve özellikle OTA güncelleme bilgilerini dinlemek için OtaSoftwareUpdateRequestorTrait özelliğini arar.

  • Zaman aşımı ayarlama: 30 saniyelik bir zaman aşımı ayarlar. Bu süre içinde özellikten güncelleme alınmazsa abonelik sona erer.

  • OTA durum güncellemelerini işleme (receiveValue): OtaSoftwareUpdateRequestorTrait yeni bir durum sağladığında bu blok yürütülür. OTA güncellemesinin mevcut durumunu ve ilerleme durumunu günlüğe kaydeder. Ardından, uygulamanın dahili durumunu (step) bu yeni bilgileri yansıtacak şekilde günceller.

  • Tamamlanma işlemini gerçekleştirme (sink): Bu blok, abonelik sona erdiğinde yürütülür ve tamamlanma işlemini günlüğe kaydeder. İşlem indirme durumundaysa uygulama durumu bir sonraki adıma (.settings) geçer.

  • Abonelik yaşam döngüsünü yönetme: .store(in: &cancellables) satırı, aboneliğin düzgün bir şekilde yönetilmesini ve aboneliğin sahibi olan nesne serbest bırakıldığında iptal edilmesini sağlar.

Daha fazla bilgi için OtaSoftwareUpdateRequestorTrait özellik referansına bakın.

ConfigurationDoneTrait

Bu özellik, kamera etkinleştirme için gerekli değildir ancak uygulamanın, AppConfigurationComplete özelliğini true olarak ayarlayarak cihazın ne zaman tam olarak kurulduğunu ve kullanılabilir olduğunu izlemesine olanak tanır. Bu özellik, OtaSoftwareUpdateRequestorTrait sonrasında kullanılmalıdır.

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