Được triển khai trong Ứng dụng mẫu cho iOS
Sau khi thiết bị được uỷ quyền, bạn có thể sử dụng các đặc điểm sau:
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 uỷ quyền, camera sẽ bắt đầu cập nhật và báo cáo trạng thái cho ứng dụng. Sau khi ứng dụng nhận được trạng thái cho biết quá trình 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à nội dung 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 điểm thiết bị: Đăng ký đặc điểm của thiết bị, cụ thể là tìm
OtaSoftwareUpdateRequestorTraitđể nghe 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 thông tin cập nhật nào từ đặc điểm trong thời gian đó, thì gói thuê bao sẽ kết thúc.
Xử lý thông tin cập nhật trạng thái OTA (
receiveValue): KhiOtaSoftwareUpdateRequestorTraitcung cấp trạng thái mới, khối này sẽ được thực thi. Nó 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 đó, hàm này sẽ 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ý việc hoàn tất (
sink): Khối này được thực thi khi gói thuê bao kết thúc và ghi nhật ký việc 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 của gói thuê bao: Dòng
.store(in: &cancellables)đảm bảo rằng gói thuê bao được quản lý và huỷ đúng cách khi đối tượng sở hữu gói thuê bao đó bị huỷ phân bổ.
Để 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)
}