Cihaz devreye alındıktan 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. Kamera devreye alındıktan sonra güncellemeyi başlatır ve durumunu uygulamaya bildirir. Uygulama, yazılım güncellemesinin tamamlandığı durumunu aldığında kamera canlı yayın yapmaya başlayabilir.
Aşağıdaki örnek kod ve açıklama, özelliğin nasıl kullanılabileceğini gösterir.
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
OtaSoftwareUpdateRequestorTraitözelliğini arar. Bu özellik, OTA güncelleme bilgilerini dinlemek için kullanılır.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. Mevcut durumu ve OTA güncellemesinin ilerleme durumunu kaydeder. Ardından, bu yeni bilgiyi yansıtmak için uygulamanın dahili durumunu (step) günceller.Tamamlanmayı işleme (
sink): Bu blok, abonelik sona erdiğinde yürütülür ve tamamlanmayı 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 şekilde yönetilmesini ve sahibi olan nesnenin tahsisi kaldırı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 AppConfigurationComplete özelliğini true olarak ayarlayarak uygulamanın cihazın tam olarak kurulduğu ve kullanılabilir olduğu zamanı 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)
}