Các đặc điểm có thể được sử dụng sau khi thiết bị được đưa vào hoạt động là:
OtaSoftwareUpdateRequestorTrait
Đặc điểm này cung cấp một giao diện để theo dõi bản cập nhật phần mềm qua mạng không dây (OTA) trên thiết bị camera. Sau khi được đưa vào hoạt động, camera sẽ bắt đầu cập nhật và báo cáo trạng thái của bản cập nhật cho ứng dụng. Sau khi ứng dụng nhận được trạng thái cho biết bản cập nhật phần mềm đã hoàn tất, camera có thể bắt đầu phát trực tiếp.
Mã mẫu và giải thích sau đây minh hoạ cách sử dụng đặc điểm này.
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)
Đăng ký các đặc điểm của thiết bị: Đăng ký các đặc điểm của thiết bị, cụ thể là tìm
OtaSoftwareUpdateRequestorTraitđể theo dõi thông tin cập nhật qua mạng không dây.Đặt thời gian chờ: Đặt thời gian chờ là 30 giây. Nếu không nhận được bản cập nhật nào từ đặc điểm trong khoảng thời gian đó, thì quá trình đăng ký sẽ kết thúc.
Xử lý các bản cập nhật trạng thái qua mạng không dây (
receiveValue): KhiOtaSoftwareUpdateRequestorTraitcung cấp trạng thái mới, khối này sẽ được thực thi. Khối này ghi lại trạng thái hiện tại và tiến trình cập nhật qua mạng không dây. Sau đó, khối này cập nhật trạng thái nội bộ của ứng dụng (step) để phản ánh thông tin mới này.Xử lý quá trình hoàn tất (
sink): Khối này được thực thi khi quá trình đăng ký kết thúc và ghi lại quá trình hoàn tất. Nếu quá trình này đang ở trạng thái tải xuống, thì trạng thái ứng dụng sẽ chuyển sang bước tiếp theo (.settings).Quản lý vòng đời đăng ký: Dòng
.store(in: &cancellables)đảm bảo rằng quá trình đăng ký được quản lý và huỷ đúng cách khi đối tượng sở hữu quá trình đăng ký đó bị huỷ cấp phát.
Để biết thêm thông tin, hãy tham khảo tài liệu tham khảo về đặc điểm
OtaSoftwareUpdateRequestorTrait.
ConfigurationDoneTrait
Đặc điểm này không bắt buộc để kích hoạt camera, nhưng cho phép ứng dụng theo dõi thời điểm thiết bị được thiết lập đầy đủ và có thể sử dụng bằng cách đặt thuộc tính AppConfigurationComplete thành true.
Bạn nên sử dụng đặc điểm này sau OtaSoftwareUpdateRequestorTrait.
let configDoneTrait = try await device.types.get(OtaRequestorDeviceType.self)?.traits[Google.ConfigurationDoneTrait.self]
_ = try await configDoneTrait?.update {
$0.setAppConfigurationComplete(true)
}