سمات ما بعد إعداد الكاميرا

السمات التي يمكن استخدامها بعد إعداد الجهاز هي:

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)
}