KamoCRM

Uma aplicação móvel, nas lojas

React Native com módulos nativos onde JavaScript não funcionará

Um cliente móvel multiplataforma para a plataforma, escrito em React Native com módulos Android nativos onde a camada JavaScript não pode chegar — entrega de mensagens em segundo plano, janelas de sobreposição flutuantes, inscrição de dispositivos e armazenamento seguro de credenciais.

Cada número aqui nomeia de onde veio e quando foi medido.
MedidaValorFonteMedido
Módulos nativos Android ao lado da base de código React NativeKotlin modules for overlays, background delivery and enrolmentandroid source tree in the mobile client repository
Código-fonte Kotlin no cliente móvel24 filesfind . -name '*.kt' across project repositories
Canais de distribuição operados2 (store release and over-the-air update)mobile release process

Que edifício nos ensinou

As estruturas multiplataforma são vendidas com a promessa de que você escreve uma vez, talvez oitenta por cento de um aplicativo. O quinto restante é onde o trabalho está, e é invariavelmente a parte que faz o aplicativo parecer nativo em vez de envolto: notificações que chegam quando o aplicativo é fechado, sobreposições que sobrevivem ao aplicativo perdendo o foco, fluxos de inscrição que tocam o elemento seguro.

Nosso trabalho de sobreposição é uma boa ilustração de uma classe sutil de bug. Um cabeçalho flutuante é levantado para qualquer mensagem que chegue de uma conversa que não seja a que está na tela — simples o suficiente, até que você perceba que o emblema não lido é desenhado duas vezes, uma vez em JavaScript e uma vez no código nativo, e que os cabeçalhos vivem em dois armazéns separados, então limpar um deixa o outro preenchido. Duas fontes de verdade para um elemento visual é o defeito estrutural mais comum em aplicativos móveis e quase nunca é visível até que um usuário relate algo impossível.

O registro nos ensinou sobre ordenação. Um token de registro único era consumido antes do registro do dispositivo ser concluído, então qualquer falha posterior no fluxo era apresentada ao usuário como "este código já foi usado" - uma mensagem que envia o usuário para o suporte em vez de tentar novamente, e que descreve um sintoma em vez da causa.

O processo de lançamento é deliberadamente chato: as compilações acontecem em uma máquina que tem a cadeia de ferramentas, as atualizações over-the-air são tratadas separadamente das versões da loja, e nenhuma delas é feita a partir de um laptop no final do dia.

Construído com

  • React Native
  • TypeScript
  • Kotlin
  • Android SDK
  • push notifications
  • WebSocket

O que isso nos qualifica para

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

Diga-nos o que você está tentando fazer

Uma breve conversa geralmente é suficiente para dizer se somos as pessoas certas, se não formos, diremos isso e indicaremos um lugar melhor.

Iniciar uma conversaEu já uso KamoCRMComo citamos