تم التنفيذ في نموذج التطبيق لنظام التشغيل 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للاستماع إلى معلومات التحديث عبر اتصال لاسلكي.ضبط مهلة: يتم ضبط مهلة مدتها 30 ثانية. إذا لم يتم تلقّي أي تعديل من السمة خلال هذه الفترة، ينتهي الاشتراك.
التعامل مع تعديلات حالة OTA (
receiveValue): عندما يوفّرOtaSoftwareUpdateRequestorTraitحالة جديدة، يتم تنفيذ هذه الكتلة. ويسجّل الحالة الحالية ومستوى تقدّم التحديث عبر اتصال لاسلكي بعد ذلك، يتم تعديل الحالة الداخلية للتطبيق (step) لتعكس هذه المعلومات الجديدة.Handling completion (
sink): This block is executed when the subscription ends, and logs the completion. إذا كانت العملية في حالة تنزيل، تنتقل حالة التطبيق إلى الخطوة التالية (.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)
}