用于该平台的跨平台移动客户端,以 React Native 和 native 编写 Android 模块,其中 JavaScript 层无法达到的 — 后台消息传递、浮动叠加窗口、设备注册和安全凭据存储。
| 措施 | 价值 | 资料来源 | 已计量 |
|---|---|---|---|
| 与 React Native 代码库一起使用的原生 Android 模块 | Kotlin modules for overlays, background delivery and enrolment | android source tree in the mobile client repository | |
| 移动客户端中的 Kotlin 源代码 | 24 files | find . -name '*.kt' across project repositories | |
| 经营的分销渠道 | 2 (store release and over-the-air update) | mobile release process |
它教会了我们什么建筑
跨平台框架的销售基础是承诺只需编写一次,而你可能已经完成了应用程序的 80% 的编写工作。 剩下的 5% 是工作的所在,而且这一部分总是让应用程序感觉原生而非包装:应用程序关闭时发送的通知、应用程序失去重点后仍然存在的覆盖、触及安全元素的注册流。
我们的覆盖工作是微妙的错误类别的一个很好的例子。 对于来自屏幕上对话以外的任何消息,浮动头会被提升 — — 很简单,直到你注意到未读标记被绘制了两次,一次在 JavaScript 中,一次在原生代码中,而且头位于两个不同的存储中,因此清除一个会让另一个存储被填充。 一个视觉元素的两个真理来源是移动应用程序中最常见的结构缺陷,在用户报告不可能的事情之前,它几乎从来不会被看到。
注册教会了我们如何排序。 一次性注册令牌在设备注册完成之前就被消耗掉了,因此流程中任何后续的失败都会向用户显示为"此代码已被使用 " — 这是一种向用户发送支持消息而不是重试的消息,并且描述的是症状而不是原因。
发布过程是故意无聊的:构建发生在一个具有工具链的计算机上,无线更新与商店发布分开处理,一天结束时都不会在笔记本电脑上完成。
建于
- React Native
- TypeScript
- Kotlin
- Android SDK
- push notifications
- WebSocket
