Ir para o conteúdo
Apps nativos

O mesmo suporte, dentro do seu aplicativo

Nove pacotes nativos levam o widget para dentro do seu app — selo de não lidos, chat, agente de IA e novidades, com push no celular — inclusive em stacks que costumam ficar de fora, como Delphi 7 e Lazarus.

  • Uma chave para todas as plataformas
  • Conteúdo pelo servidor, sem republicar na loja
  • Identidade verificada
Onde roda

Escolha a sua stack

Os nove pacotes nativos estão publicados, cada um no gerenciador de pacotes da sua plataforma. Onde não há pacote, o widget web funciona em qualquer app com WebView.

Móvel

  • Flutter 0.1.0 Android, iOS, macOS e Windows pub.dev · bfocus_widget Código no GitHub No ar
  • iOS 0.1.2 UIKit e SwiftUI, iOS 15+ Swift Package Manager · BFocusWidget Código no GitHub No ar
  • Android 0.1.0 Views e Compose, minSdk 24 Maven Central · bfocus-widget-android Código no GitHub No ar
  • React Native 0.1.0 compatível com Expo npm · @bfocus/react-native-widget Código no GitHub No ar

Desktop

Web e empacotados

  • Web o snippet de dez linhas CDN · widget.bfocus.com.br/v1 No ar
  • Electron · Tauri · Capacitor · Ionic usam o widget web, sem pacote extra No ar
  • VB6 · Harbour · Visual FoxPro · PowerBuilder modo navegador, com sessão assinada No ar

O Delphi instala pelo Boss. O Lazarus vem direto do repositório: clone e abra o pacote bfocus_widget_lcl.lpk. Os demais saem do registro de cada plataforma.

Todos os repositórios em github.com/bernisoftware

No seu código

Poucas linhas em qualquer linguagem

Os trechos abaixo são os mesmos do README de cada pacote.

WebNativo
<!-- antes do </body> -->
<script>
  (function (w, d) {
    w.bFocusQueue = w.bFocusQueue || [];
    w.bFocus = w.bFocus || { init: function(o){ w.bFocusQueue.push(['init', o]); } };
    var s = d.createElement('script');
    s.async = true; s.src = 'https://widget.bfocus.com.br/v1/widget.js';
    s.setAttribute('data-bf-key', 'bf_pk_…');
    d.head.appendChild(s);
  })(window, document);
  bFocus.init({
    user:     { externalId: 'USR-123', name: 'João Silva' },
    customer: { externalId: 'EMP-456', name: 'Empresa Ltda' },
    userHash: '…'   // assinado no SEU servidor
  });
</script>

Widget web — no ar, servido pela CDN

Nos pacotes

O que cada pacote entrega

O essencial vale em todos. Onde a plataforma muda o jeito, o texto diz qual.

Selo de não lidos

Um contador reativo que você pendura no ícone que já existe na sua interface.

Novidades e ciência

Pílula de versão e banner da última nota, com confirmação de leitura quando você exigir.

Push com a sua credencial

No Flutter, iOS, Android, React Native e .NET MAUI, a notificação sai pelo seu projeto Firebase, com o nome e o ícone do seu app. No desktop, o selo e a notificação do sistema vêm de consulta periódica.

Deep link

Abre direto no chamado ou na novidade; no celular, também pelo toque na notificação com o app fechado.

Anexos e downloads

Enviar foto, documento e baixar o que o atendente mandou, com as permissões certas de cada sistema.

Sem conexão

Nos pacotes com WebView, tela própria de rede indisponível, com nova tentativa automática quando ela volta.

Perguntas sobre os pacotes

Onde eu instalo os pacotes?

No gerenciador de pacotes de cada plataforma: pub.dev, Swift Package Manager, Maven Central, npm, NuGet e PyPI. O Delphi instala pelo Boss e o Lazarus vem direto do GitHub. O código de todos está em github.com/bernisoftware.

Preciso republicar o app quando mudo algo no bFocus?

Não. Nos pacotes com WebView, a interface vem da CDN. Em todos, textos, cores, base de conhecimento e agente vêm do servidor, sem republicar o app.

E se o meu sistema é antigo demais para WebView?

Existe o modo navegador: o seu sistema abre o widget no navegador padrão já com a sessão assinada, e o usuário continua identificado. É assim que VB6, Harbour e Visual FoxPro funcionam.

Qual a diferença entre a chave pública e a assinatura?

A chave pública identifica a sua conta e pode ficar visível no app. A assinatura HMAC, calculada no seu servidor, é o que prova que aquele usuário é quem diz ser — com a identidade verificada ligada, o bFocus recusa quem não a traz. Ela vale 7 dias: o seu servidor gera outra quando vence.

Preciso cadastrar alguma origem para o pacote nativo?

Precisa. A origem do pacote nativo é app:// seguido do id do aplicativo, e ela entra na mesma lista de domínios autorizados do widget. Ali o id é conferido inteiro: app://com.cliente não libera app://com.cliente.outro, porque o host é um identificador de aplicativo e não um domínio. Cadastre um por app. Na web vale o contrário: o domínio raiz já cobre os subdomínios.

Coloque o suporte dentro do seu app

Instale o pacote da sua stack ou comece pelo widget web. A chave é a mesma.