KamoCRM

一个移动应用程序,在商店

React Native 使用原生模块,其中 JavaScript 不适用

用于该平台的跨平台移动客户端,以 React Native 和 native 编写 Android 模块,其中 JavaScript 层无法达到的 — 后台消息传递、浮动叠加窗口、设备注册和安全凭据存储。

这里的每个数字都有它的来源和测量时间。
措施价值资料来源已计量
与 React Native 代码库一起使用的原生 Android 模块Kotlin modules for overlays, background delivery and enrolmentandroid source tree in the mobile client repository
移动客户端中的 Kotlin 源代码24 filesfind . -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

这使我们有资格做什么

Mobile applicationsCross-platform where it makes sense, native where it does notReal-time systemsLive data, messaging, presence and media — the unforgiving end of the webCustom web applicationsThe system your business actually runs on, built properly

告诉我们您想要做什么

简短的交谈通常就足以判断我们是否是合适的人选,如果我们不是,我们会告诉你并指出更好的地方。

开始对话我已经使用 KamoCRM我们如何报价