HomeKit Делегат API не работает внутри плагина iOS флаттера - PullRequest
1 голос
/ 11 февраля 2020

Я разрабатываю плагин флаттера для доступа к функциям 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

1 Ответ

0 голосов
/ 22 февраля 2020

Я столкнулся с подобной проблемой. iOS методы быстрого делегата не сработали. Похоже, что методы должны быть объявлены publi c.

Просто замените

func addHome...

на

public func addHome...

Возможно, это кому-то поможет ...

...