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):OtaSoftwareUpdateRequestorTraityeni 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)
}