Я нахожусь в процессе создания 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.
Я был бы очень признателен всем, кто мог бы дать мне несколько советов здесь.