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

   تم التنفيذ في تطبيق Sample App لنظام التشغيل iOS   

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

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