در برنامه نمونه برای 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 را دریافت کند.تنظیم زمان استراحت: زمان استراحت ۳۰ ثانیهای تنظیم میکند. اگر در این مدت بهروزرسانیای از ویژگی دریافت نشود، اشتراک پایان مییابد.
مدیریت بهروزرسانیهای وضعیت OTA (
receiveValue): وقتیOtaSoftwareUpdateRequestorTraitوضعیت جدیدی ارائه میدهد، این بلوک اجرا میشود. این فایل وضعیت فعلی و پیشرفت بهروزرسانی ازطریق هوا را ثبت میکند. سپس وضعیت داخلی برنامه (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)
}