ลักษณะที่ใช้ได้หลังจากมอบหมายงานให้อุปกรณ์แล้ว ได้แก่
OtaSoftwareUpdateRequestorTrait
ลักษณะนี้มีอินเทอร์เฟซสำหรับตรวจสอบการอัปเดตซอฟต์แวร์ OTA ในอุปกรณ์กล้อง เมื่อมอบหมายงานแล้ว กล้องจะเริ่มการอัปเดตและรายงานสถานะไปยังแอป เมื่อแอปได้รับสถานะว่าการอัปเดตซอฟต์แวร์เสร็จสมบูรณ์แล้ว กล้องจะเริ่มไลฟ์สดได้
โค้ดตัวอย่างและคำอธิบายต่อไปนี้แสดงวิธีใช้ลักษณะภาษา
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)
การสมัครใช้บริการลักษณะของอุปกรณ์: สมัครใช้บริการลักษณะของอุปกรณ์ โดยเฉพาะอย่างยิ่งการค้นหา
OtaSoftwareUpdateRequestorTraitเพื่อรับฟังข้อมูลการอัปเดต OTAการตั้งค่าการหมดเวลา: ตั้งค่าการหมดเวลา 30 วินาที หากไม่ได้รับข้อมูลการอัปเดตจากลักษณะภายในเวลาดังกล่าว การสมัครใช้บริการจะสิ้นสุดลง
การจัดการการอัปเดตสถานะ OTA (
receiveValue): เมื่อOtaSoftwareUpdateRequestorTraitให้สถานะใหม่ ระบบจะดำเนินการบล็อกนี้ โดยจะบันทึกสถานะปัจจุบันและความคืบหน้าของการอัปเดต OTA จากนั้นจะอัปเดตสถานะภายในของแอปพลิเคชัน (step) เพื่อแสดงข้อมูลใหม่นี้การจัดการการดำเนินการให้เสร็จสมบูรณ์ (
sink): ระบบจะดำเนินการบล็อกนี้เมื่อการสมัครใช้บริการสิ้นสุดลง และบันทึกการดำเนินการให้เสร็จสมบูรณ์ หากกระบวนการอยู่ในสถานะการดาวน์โหลด สถานะของแอปพลิเคชันจะเปลี่ยนไปเป็นขั้นตอนถัดไป (.settings)การจัดการวงจรการสมัครใช้บริการ: บรรทัด
.store(in: &cancellables)ช่วยให้มั่นใจได้ว่าระบบจะจัดการและยกเลิกการสมัครใช้บริการอย่างเหมาะสมเมื่อ ยกเลิกการจัดสรรออบเจ็กต์ที่เป็นเจ้าของการสมัครใช้บริการ
ดูข้อมูลเพิ่มเติมได้ที่ข้อมูลอ้างอิงลักษณะ
OtaSoftwareUpdateRequestorTrait
ConfigurationDoneTrait
ลักษณะนี้ไม่จำเป็นสำหรับการเปิดใช้งานกล้อง แต่ช่วยให้แอปติดตามได้เมื่ออุปกรณ์ได้รับการตั้งค่าอย่างสมบูรณ์และพร้อมใช้งานโดยตั้งค่าแอตทริบิวต์ AppConfigurationComplete เป็น true
ควรใช้ลักษณะนี้หลังจาก OtaSoftwareUpdateRequestorTrait
let configDoneTrait = try await device.types.get(OtaRequestorDeviceType.self)?.traits[Google.ConfigurationDoneTrait.self]
_ = try await configDoneTrait?.update {
$0.setAppConfigurationComplete(true)
}