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

   ติดตั้งใช้งานในแอปตัวอย่างสำหรับ iOS   

ลักษณะที่ใช้ได้หลังจากคอมมิชชันอุปกรณ์แล้วมีดังนี้

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