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