Я разрабатываю плагин флаттера для доступа к функциям Apple HomeKit внутри моего флаттера. Следующие настройки проекта и кода выполняются для проекта iOS внутри папки флаттера:
Настройка проекта : 1. Включен HomeKit в Возможностях 2. Добавлена конфиденциальность - Описание использования HomeKit Введите информацию. plist
Установка кода внутри плагина : 1. Создан экземпляр HMHomeManager
2. Установите делегат HMHomeManager
3. Реализованы методы делегата
Кроме того, перекрестная проверка доступ к HomeKit для моего приложения-флаттера в Настройках.
Проблема 1 : при той же самой настройке собственное приложение iOS работает нормально, и вызывается метод делегата homeManagerDidUpdateHomes
сразу после доступа к базе данных HomeKit, которая правильно предоставляет домашнюю информацию. Но в плагине флаттера метод делегата не вызывается, и счетчик всегда равен нулю.
Issue2 : я написал код для добавления нового HomeKit Home внутри плагина iOS и попытался вызвать метод от флаттера UI. Странно, но код внутри блока addHome(withName: )
не выполняется, но Home создается внутри базы данных HomeKit. Это подтверждается запуском приложения Apple «Home». В этом случае также не вызывается homeManager(didAdd home: )
метод делегата.
Сведения о версии: Xcode: 11.2, swift 4.2 Флаттер: 1.14.6, Dart: 2.8.0
Требуется ли какая-либо другая настройка в плагине флаттера для установки HomeKit Delegate?
В качестве альтернативного подхода также пробовал использовать cupertino_ffi_generated 0.1.1 (https://pub.dev/packages/cupertino_ffi_generated), что является недавним пакет от флаттера для доступа к API Apple. (Хотя прямо упоминается: « Большинство разработчиков Flutter не должны использовать этот пакет. Почти всегда лучше написать плагин Flutter, чем использовать этот пакет».). Но флаттер выдает ошибку «Целевой URI не существует:»
Сведения о версии : флаттер: 1.14.6, дротик: 2.8.0