android - 将 Cordova 插件从 Android 移植到 iOS
问题描述
我正在创建使用一个内部插件的混合 Cordova 应用程序的 iOS 版本。该插件为应用程序提供了一系列服务。
- 通过 SQLCipher 加密的 SQLite 数据库
- 地理位置追踪
- 关注 Wifi 网络(实际上并没有使用它们,我只关心它们的 MAC id)
- 异步 https POST 定期将应用程序状态数据传输到我的服务器。我最初使用OKHTTP来达到这个目的,但现在完全依赖于 Android 提供的原生 API。
- Websockets(我在 Android 中使用这个实现主要是因为它有很好的文档记录)
- Android 的 CountDownTimer 在前台时定期更新应用程序屏幕
- 加速度计传感器用于跟踪线性加速度变化和自上次重启以来的步数。
- 在文件中存储一些信息
- 主要使用 Android SharedPreferences 来跟踪应用状态
我认为自己是一个相当不错的程序员,过去曾多次使用 C/C#/Delphi/C++ 编写代码,尽管我目前的大部分经验都是使用 Java/ES6 和 PHP。我查看了Cordova 的有关创建 iOS 插件的说明。让我有点吃惊的是,在 Swift 被介绍了 3 年多之后,Cordova 的人仍然说
iOS 插件实现为扩展 CDVPlugin 类的 Objective-C 类。要将 JavaScript 的 exec 方法的服务参数映射到 Objective-C 类,每个插件类必须在命名应用程序目录的 config.xml 文件中注册为标记。
我已经使用Evothing 的优秀指南在我的 Mac Mini 上安装了整个 Cordova 生态系统,并在 Cordova 文档中测试了“Echo”示例应用程序。令我惊讶的是,我第二次尝试就能够在本地 iOS 设备上测试该应用程序。但是,这纯粹是复制和粘贴示例 Cordova Echo 应用程序代码的结果。大部分 Objective C 语法对我来说意义不大,我注意到它似乎使用了指针(很多 *s),我从中推断没有自动垃圾收集。
我的问题
- 上面列出的处理地理位置、wifi 扫描、文件 i/o 等的 iOS API 是否有据可查?
- 我是否有义务在 Objective C 中完成所有这些工作,还是现在可以在 Swift 中创建 Cordova iOS 插件(这似乎有更平坦的学习曲线)
- 是否可以在这种环境中使用 Websockets?如果有,是否有全面的原生 iOS 实现?
- 是否有任何捷径可以将我的 Android/Java 插件代码转换为在 iOS 上使用?
- 最后,鉴于我需要移植的功能,在开始之前我需要注意哪些明显的问题
我假设 iOS webview 基于 Safari 并接受大多数 CSS3/HTML5/ES6 构造,因此移植 UI 的过程 - 这在与 Chrome 共享代码库的 Android Webview 中工作顺利。
我非常感谢任何可能在这里给我一些指示的人。
解决方案
推荐阅读
- python - Recompile Python 3.8 with statically linked OpenSSL on Windows
- c# - 从 ASP.NET Core 3 应用程序执行 Linux Shell 命令
- mongodb - MongoDB: Is it possible to combine 2 requests into one?
- python-3.x - how to capture a child pattern in a parent pattern
- mysql - How to count concurrently bookings in sql in time interval per minute by booking type?
- javascript - What is the way to isolate HTML/CSS/Javascript without an iframe?
- javascript - 如何使用 nuxt.js 访问mounted() 中的数据
- python - AttributeError: 'numpy.bool_' object has no attribute 'keys'
- python - 需要帮助将数据框列转换为列表
- css - 更改复选框背景颜色