السمات التي يمكن استخدامها بعد إعداد الجهاز هي:
OtaSoftwareUpdateRequestorTrait
توفّر هذه السمة واجهة لمراقبة تحديث البرنامج عبر الهواء على جهاز الكاميرا. بعد إعداد الكاميرا، تبدأ عملية التحديث وتُبلغ التطبيق بحالتها. وعندما يتلقّى التطبيق إشعارًا باكتمال تحديث البرنامج، يمكن للكاميرا بدء البث المباشر.
يوضّح نموذج الرمز البرمجي والشرح التاليان كيفية استخدام السمة.
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 ثانية. إذا لم يتم تلقّي أي تحديث من السمة خلال هذه الفترة، ينتهي الاشتراك.
التعامل مع تعديلات حالة التحديث عبر اتصال لاسلكي (
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)
}