iOS के लिए सैंपल के तौर पर मिले ऐप्लिकेशन में लागू किया गया
डिवाइस को चालू करने के बाद, इन विशेषताओं का इस्तेमाल किया जा सकता है:
OtaSoftwareUpdateRequestorTrait
इस trait की मदद से, कैमरा डिवाइस पर ओटीए सॉफ़्टवेयर अपडेट को मॉनिटर करने के लिए एक इंटरफ़ेस मिलता है. कमीशन होने के बाद, कैमरा अपडेट शुरू करता है और ऐप्लिकेशन को अपनी स्थिति की जानकारी देता है. ऐप्लिकेशन को सॉफ़्टवेयर अपडेट पूरा होने की स्थिति मिलने के बाद, कैमरा लाइव स्ट्रीम शुरू कर सकता है.
यहां दिए गए सैंपल कोड और जानकारी से पता चलता है कि इस trait का इस्तेमाल कैसे किया जा सकता है.
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 trait reference देखें.
ConfigurationDoneTrait
कैमरा चालू करने के लिए, इस ट्रेट की ज़रूरत नहीं होती. हालांकि, इसकी मदद से ऐप्लिकेशन यह ट्रैक कर सकता है कि डिवाइस पूरी तरह से सेट अप हो गया है और इस्तेमाल के लिए तैयार है. इसके लिए, AppConfigurationComplete एट्रिब्यूट को true पर सेट करना होगा.
इस ट्रेट का इस्तेमाल, OtaSoftwareUpdateRequestorTrait के बाद किया जाना चाहिए.
let configDoneTrait = try await device.types.get(OtaRequestorDeviceType.self)?.traits[Google.ConfigurationDoneTrait.self]
_ = try await configDoneTrait?.update {
$0.setAppConfigurationComplete(true)
}