Плагин Capacitor для iOS возвращает ошибку UNIMPLEMENTED при вызове собственного методаIOS

Программируем под IOS
Ответить
Anonymous
 Плагин Capacitor для iOS возвращает ошибку UNIMPLEMENTED при вызове собственного метода

Сообщение Anonymous »

Я разрабатываю приложение Angular + Capacitor для iOS и пытаюсь использовать простой собственный плагин (например, пример Echo), следуя официальной документации Capacitor:

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())
Во фронтенде (Angular) я использую:

Код: Выделить всё

const Echo = registerPlugin('Echo');

Код: Выделить всё

Echo.echo({ value: 'test' });
Однако я продолжаю получать эту ошибку:

Код: Выделить всё

{"code":"UNIMPLEMENTED"}
В журналах Xcode нет вывода, что заставляет меня думать, что собственный метод даже не вызывается.

Вещи, которые я уже проверял:
  • Плагин использует @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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»