使用 React Native 开发原生 IOS 应用

597 阅读6分钟

前言

账号、密码记在脑子里是最安全的,但需要记住但账号、密码实在太多,脑子不够用,所以我一直在寻找一款安全、好用的密码管理工具。

我对一款好的密码管理工具的评判标准是

  1. 不联网。账号、密码最安全的地方是自己的大脑,其次是写在纸上或是存储在断开网络的电子设备中,最后才是加密后放在网络中,当然随着安全性的降低,使用的方便性也会随着增高,安全还是方便是一个仁者见仁智者见智的问题,显然我选择了前者。
  2. 生物识别。大多数密码管理工具需要用户记住一个主密码来验证用户的身份,这种方式我不太喜欢,首先用户为了不用记住密码才选择了密码管理工具,而使用这些密码管理器有必须记住一个主密码,这本身就是一件很矛盾的事情,当然这也是无赖之举,因为这些密码管理器必须用一个凭证来标识用户,而最通用的标识手段就是密码。但是现在有大量的移动设备提供了生物识别技术,比如指纹识别、面容识别、瞳孔识别等,相较于密码,这些生物识别技术不经更安全,也更易用。
  3. 简单、灵活。大多数密码管理工具往往有自己的限制,比如提供了几套固定的模版,你必须安照模版填写,模版不合适的时候,你无法更改模版,有的软件虽然可以在模版上添加自定义的字段,但是缺无法保存模版,每次录入时都需要重新操作。而且这些密码管理工具往往功能复杂,操作繁琐。我理想中的密码管理工具应该像一张纸,想写什么就写什么,自由自在,没有任何限制。

基于以上三点,我在ios商店中下载使用了多款密码管理软件后,最终选择了系统自带的备忘录,它完全符合以上三点

  1. 不联网。关闭iCloud中的同步备忘录功能,然后在设置中把备忘录的联网权限关闭掉,备忘录就完全处于断网状态
  2. 生物识别。可以为每条备忘录加锁,配合iphone的指纹识别和面容id,可以在不需要记住主密码的情况下保证备忘录不被偷看
  3. 简单、灵活。备忘录本身就是想写什么就写什么,在加上备忘录中的表格功能,在足够灵活的同时,也不至于太凌乱

就这样,我选择 iphone 自带的备忘录作为密码管理器,使用了近2年的时间,直到上次不知道是备忘录出现了bug还是什么原因,导致我这两年来记录的账号全都不见了,只留下一个空表格时,我才下定决心决心寻找替代品。

两年过去了,这次结果比上次好些,很多应用已经实现了不联网和生物识别的功能,但是第三点目前还没有能让我满意的,于是想着既然市场上没有,干脆自己写一个,这就有了这篇文章。

技术选型

我的主力机一直都是 iphone ,不出意外的话,以后应该也是。因此 app 必须有 ios 版本,至于安卓版,对于我来说可有可无,毕竟这个 app 是写给自己用的,我对于一款好的密码管理工具评判标准,可能和其他人不一样,别人不一定喜欢。

既然必须要开发 ios 版本的app,那么能选用技术就不多了,原生开发语言有

  • ObjectC : 不建议,如果非要使用原生语言开发,Swift 会是更好的选择
  • Swift : 虽然很合适,但是我不会,从零开始成本太高,排除

跨平台的原生开发框架有

  • Flutter : 近几年较火的跨平台的原生开发框架,但是由于是使用 dart 语言,和 Swift 同样的问题,排除
  • React Native : 比较流行的的跨平台的原生开发框架,使用 js 作为开发语言,较为合适

最终我选择了 React Native 来开发这款app

硬件准备

想要开发 ios 应用最大的难关是,你得有一台 mac 操作系统的电脑,windows 上想开发 ios 应用,就必须使用虚拟机安装 mac 系统,然后在虚拟机中开发,除非你的电脑性能特别强劲,否则这种开发体验会很糟糕甚至根本无法好好开发。有条件的建议直接选择买苹果电脑,有能力会折腾的也可以选择黑苹果。

没办法,谁让游戏规则是别人定义的呢,人家不支持在 windows 上开发,你也没什么办法

环境准备

React Native 版本

截止目前为止 React Native 最新的版本为 0.63,从版本号上也可以看出,官方觉得目前 React Native 还不算完全版,但对于开发密码管理工具这种小型 app 来说,已经是绰绰有余了。

React Native 目前还没有一个长期稳定版,官方每过一段时间就会发布一个新版本,而且新版本经常与老版本产生兼容性问题,升级起来比较麻烦,因此建议选择最新版

开发语言

虽然 React Native 默认使用 javaScript 作为开发语言,但是通过一些配置也支持使用 TypeScript 开发,当然如果你只是想要使用静态类型的特性,也可以选择 javaScript 搭配 flow

这里我选择的是 javaScript 搭配 flow 的方式

IDE

一款好的 IDE 能让你事半功倍,我选择的是 jetbrains 公司的 WebStorm ,你也可以选择 vscode 等其他 IDE,如果你不知道选什么,那么强烈推荐 WebStorm ,功能强大且易用

搭建 React Native 开发环境

这一章内容比较多且有详细的中文官翻文档,而且不同的操作系统、不同的目标系统、不同的 React Native 版本有一定的差异,建议按照中文官翻文档一步一步操作。