Портирование плагина Cordova от Android до iOS - PullRequest
4 голосов
/ 03 марта 2020

Я нахожусь в процессе создания iOS версии гибридного приложения Cordova, которое использует один единственный внутренний плагин. Плагин предоставляет приложению ряд услуг.

  • зашифрованная база данных SQLite через SQLCipher
  • отслеживание геолокации
  • наблюдение за сетями Wi-Fi (фактически не использующими их, Я забочусь только об их МА C идентификаторах)
  • асинхронный https POST для периодической передачи данных о состоянии приложения на мои серверы. Изначально я использовал OKHTTP для этой цели, но теперь полагаюсь исключительно на собственные API, предоставляемые Android.
  • Websockets (я использую эту реализацию в Android во многом потому, что он очень хорошо задокументирован)
  • Android CountDownTimer для регулярного обновления экрана приложения, когда он находится на переднем плане
  • Датчик акселерометра для отслеживания изменений линейного ускорения и количество шагов с момента последней перезагрузки.
  • Хранение некоторой информации в файлах
  • В основном с использованием Android SharedPreferences для отслеживания состояния приложения

Я бы оценил себя как довольно приличный программист и программировал на C / C # / Delphi / C ++ в разное время в прошлом, хотя большая часть моего текущего опыта была с Java / ES6 и PHP. Я ознакомился с инструкциями Cordova по созданию iOS плагинов . Что меня немного удивляет, так это то, что спустя 3 с лишним года после появления Swift народ Cordova все еще говорит:

Плагин iOS реализован как класс Objective- C, расширяющий класс CDVPlugin. Чтобы параметр службы метода exe c JavaScript отображался в класс Objective- C, каждый класс подключаемого модуля должен быть зарегистрирован как тег в файле конфигурации указанного каталога приложения. xml file.

Я использовал Отличное руководство Evothing , чтобы установить всю экосистему Cordova на моем Ma c Mini, и протестировал пример приложения "Echo" в документации Cordova. К моему большому удивлению, я смог протестировать приложение на своем локальном устройстве iOS со второй попытки. Однако это результат копирования и вставки примера кода приложения Cordova Echo. Большая часть синтаксиса Objective C не имеет для меня никакого смысла, и я отмечаю, что он использует указатели (множество * s), из которых я делаю вывод, что автоматическая сборка мусора отсутствует.

Мои вопросы

  • Существуют ли хорошо документированные iOS API для обработки геолокации, сканирования Wi-Fi, файлового ввода-вывода и т. Д. c, как я перечислил выше?
  • Обязан ли я делать все это в Objective C или теперь возможно создать плагины Cordova iOS в Swift (у которого, кажется, более плоская кривая обучения)
  • Можно ли использовать Websockets в этой среде? Если да, есть ли полная нативная реализация iOS?
  • Существуют ли какие-либо способы быстрого преобразования кода моего плагина Android / Java для использования на iOS?
  • Наконец, в Если посмотреть на возможности, которые мне нужны для портирования, есть ли какие-то явно очевидные ошибки, о которых мне нужно знать, прежде чем я начну

Я предполагаю, что веб-представление iOS основано на Safari и принимает большинство CSS3 / HTML5 / ES6 конструируют таким образом процесс портирования пользовательского интерфейса, который работает без помех в Android Webview, который разделяет его кодовую базу с Chrome.

Я был бы очень признателен всем, кто мог бы дать мне несколько советов здесь.

...