https://capacitorjs.com/docs/plugins/ios
Я не создавал плагин как отдельный пакет, используя npx @capacitor/plugingenerate. Вместо этого я вручную создал файлы Swift и добавил их непосредственно в проект iOS в Xcode, рядом с AppDelegate.swift.
Мой класс плагина EchoPlugin реализует CAPPlugin и CAPBridgedPlugin и правильно определяет метод echo. У меня также есть файл Echo.swift с базовой реализацией, которая возвращает переданную ему строку.
В AppDelegate.swift я вручную регистрирую плагин, используя:
Код: Выделить всё
bridge?.registerPluginInstance(EchoPlugin())Код: Выделить всё
const Echo = registerPlugin('Echo');Код: Выделить всё
Echo.echo({ value: 'test' });Код: Выделить всё
{"code":"UNIMPLEMENTED"}Вещи, которые я уже проверял:
- Плагин использует @objc(EchoPlugin), реализует CAPBridgedPlugin и определяет pluginMethods правильно.
- Имя js – "Echo" и соответствует тому, что я использую во внешнем интерфейсе с помощью RegisterPlugin("Echo").
- Я запустил npx cap sync ios и открыл проект с помощью npx cap open ios.
- Файлы Swift включены в цель приложения в Xcode.
- Я попробовал как ручную регистрацию в AppDelegate.swift, так и позволить Capacitor обнаружить их автоматически.
- Я очистил папку сборки и пересобрал приложение несколько раз.
- Я также зарегистрировал плагин в конденсатор.config.ts как:
Код: Выделить всё
plugins: { EchoPlugin: {} }
Вызов Echo.echo({ value: 'test' }) из Angular должен вернуть то же значение, и я должен увидеть вывод журнала метода Swift в консоли Xcode.
Что на самом деле произошло:
Я получил {"code":"UNIMPLEMENTED" и в Xcode не появилось никаких журналов, что указывает на то, что собственный метод плагина вообще не запускается.
Мой вопрос:
Что я делаю неправильно?
Должен ли я делать что-то конкретное, если добавляю файлы плагина Swift непосредственно в проект Xcode iOS, а не генерирую пакет плагина Capacitor?
Заранее благодарим за любую помощь или разъяснения!
Подробнее здесь: https://stackoverflow.com/questions/796 ... ive-method
Мобильная версия