ลักษณะหลังการเปิดใช้สำหรับการเริ่มต้นใช้งานกล้อง

คุณสมบัติที่ใช้ได้หลังจากเปิดใช้อุปกรณ์มีดังนี้

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