Introdução
Bem-vindo à infraestrutura definitiva de sincronização. O BeeZync é um motor duplo que inclui dois serviços de nível corporativo perfeitamente integrados ao seu plano:
Serviço 1
WEBSOCKETS
Mensagens bidirecionais ao vivo para navegadores e aplicativos. Latência em milissegundos para painéis, chats e ferramentas colaborativas enquanto o usuário mantém o aplicativo aberto.
Serviço 2
PUSH NOTIFICATIONS
Reconecte-se com seus usuários mesmo quando o aplicativo estiver fechado ou em segundo plano. Alertas nativos diretos para o sistema operacional (iOS, Android, macOS).
Conceitos-Chave e Sinergia Mágica
A vantagem injusta do BeeZync em relação aos serviços tradicionais está na combinação inteligente dos nossos motores. Você não está comprando dois serviços isolados; você está acessando um orquestrador de mensagens de última geração.
-
1
Projeto Híbrido (Dual Engine) Todo aplicativo que você cria engloba nativamente o motor WebSockets e o ecossistema de Push Notifications. Não é necessário configurar arquiteturas separadas.
-
2
Roteamento Inteligente (Smart Delivery)
Este é o verdadeiro superpoder do BeeZync para levar seu aplicativo ao próximo nível. Quando você envia uma notificação, nosso motor inteligente toma uma decisão em milissegundos:
Se o usuário estiver com o aplicativo aberto (Ativo): O BeeZync intercepta o envio e o entrega diretamente via WebSocket. Isso garante entrega instantânea (zero latência), economiza bateria, evita os limites/atrasos dos provedores (Apple/Google) e permite animações muito fluidas (in-app alerts) dentro do seu aplicativo.Se o usuário estiver com o aplicativo fechado (Inativo): O motor delega silenciosamente a carga útil para o Firebase (FCM) ou Apple (APNs). O sistema operacional do telefone encarrega-se de ativar a tela e mostrar o alerta nativo Push. Tudo isso automaticamente, sem você precisar escrever lógicas condicionais! -
3
Despacho Assíncrono Unificado Seja enviando um Push massivo para um milhão de usuários ou um único evento WebSocket, enfileiramos a solicitação e a distribuímos globalmente sem sobrecarregar os recursos do seu servidor backend.
Quick Start
Uma visão rápida de como interagir com os dois motores principais da plataforma em menos de um minuto.
// 1. Conexão do cliente com o motor WEBSOCKET
const wsUrl = `wss://api.beezync.com/v1/ws?app_id=SEU_APP_ID&api_key=SUA_APP_KEY`;
const socket = new WebSocket(wsUrl);
socket.onopen = () => {
// Inscrever-se num canal
socket.send(JSON.stringify({ action: "subscribe", channel: "geral" }));
};
socket.onmessage = (event) => {
console.log('Evento de Socket Recebido!', JSON.parse(event.data));
};
// 2. Despachar mensagem WEBSOCKET do Laravel
Http::withHeaders([
'Authorization' => 'Bearer SUA_APP_KEY',
])->post('https://api.beezync.com/v1/api/send-ws', [
'app_id' => 'SEU_APP_ID',
'channel' => 'geral',
'payload' => [
'message' => 'Olá mundo em tempo real!'
]
]);
curl -X POST https://api.beezync.com/v1/api/send-ws \
-H "Authorization: Bearer SUA_APP_KEY" \
-H "Content-Type: application/json" \
-d '{
"app_id": "SEU_APP_ID",
"channel": "geral",
"payload": { "message": "Olá do terminal" }
}'
// Despachar notificação PUSH massiva do Laravel
Http::withHeaders([
'Authorization' => 'Bearer SUA_APP_KEY',
])->post('https://api.beezync.com/v1/api/send-push', [
'app_id' => 'SEU_APP_ID',
'target_type' => 'all',
'title' => 'Grande Promoção!',
'body' => 'Descubra as novas funcionalidades do app.'
]);
curl -X POST https://api.beezync.com/v1/api/send-push \
-H "Authorization: Bearer SUA_APP_KEY" \
-H "Content-Type: application/json" \
-d '{
"app_id": "SEU_APP_ID",
"target_type": "all",
"title": "Grande Promoção!",
"body": "Descubra as novas funcionalidades do app."
}'
Seção 2
API REST (Backend)
Autenticação Global
Todas as solicitações para a API REST BeeZync (para envio de mensagens WebSocket ou Push) requerem autenticação segura.
Você deve enviar a sua App Key no cabeçalho HTTP Authorization usando o esquema Bearer.
.env). Nunca exponha a sua App Key no código do frontend dos clientes. O frontend a utiliza apenas temporariamente para iniciar a conexão segura com o WebSocket, e não para solicitações REST.
Despacho WebSocket WEBSOCKET
Este serviço transmite mensagens em tempo real para navegadores/aplicativos que têm uma conexão ativa com o socket do BeeZync.
Endpoint: POST /v1/api/send-ws
Corpo da Solicitação (JSON)
| Parâmetro | Tipo | Descrição |
|---|---|---|
| app_id | string (required) | O UUID do seu aplicativo. |
| channel | string (required) | O nome do canal WebSocket para o qual despachar (ex: chat.sala.12). |
| payload | object (required) | Objeto JSON com os dados que você deseja transmitir aos clientes conectados. |
Push Notifications PUSH NOTIFICATION
Use este serviço para despertar o dispositivo do usuário mesmo que o aplicativo esteja fechado. Nativamente interconectado com APNs e FCM.
Endpoint: POST /v1/api/send-push
{
"app_id": "SEU_APP_ID",
"target_type": "all", // "all", "device", "user" ou "segmented"
"title": "Nova atualização",
"body": "Descubra as novas funções do app.",
"data": {
// Carga útil silenciosa para o app processar em segundo plano
"screen": "home",
"id": 123
}
}
Filtros e Segmentação PUSH NOTIFICATION
Para campanhas massivas ou notificações transacionais em grupo, o motor BeeZync permite alcançar seu público usando o compilador dinâmico com target_type: "segmented".
1. Atributos do Dispositivo (Nativos)
Propriedades que identificam a assinatura do dispositivo e controlam a entrega. Registradas automaticamente.
| Atributo | Descrição |
|---|---|
| platform | Sistema operacional do cliente (ios, android, web). |
| device_id | Identificador de hardware exclusivo (UUID gerado pelo cliente). |
| external_user_id | O ID interno do seu próprio banco de dados, útil para vincular vários dispositivos (telefone e tablet) a um único usuário real. |
2. Metadados Personalizados (Tags)
Pares chave-valor personalizáveis que você envia no objeto metadata ao registrar o dispositivo. São essenciais para agrupar públicos.
| Campo (field) | Relação (relation) | Exemplo de Filtro JSON |
|---|---|---|
| platform | =, != |
{"field": "platform", "relation": "=", "value": "ios"} |
| tag | =, !=, >, < |
{"field": "tag", "key": "level", "relation": ">", "value": "10"} |
| tag | contains, array_contains |
{"field": "tag", "key": "preferences", "relation": "array_contains", "value": "sports"} |
Casos de Uso de Segmentação
Notícias Esportivas (Array Contains)
Enviar alerta apenas para usuários inscritos no canal de esportes.
{"field": "tag", "key": "topics", "relation": "array_contains", "value": "sports"}
Promoção Regional (Igualdade)
Oferta exclusiva para clientes em um país específico.
{"field": "tag", "key": "country", "relation": "=", "value": "BR"}
Gamificação (Maior que)
Notificar jogadores nível 50+ sobre um torneio.
{"field": "tag", "key": "level", "relation": ">", "value": "50"}
Segmentação de Plataforma
Lembrar apenas usuários de iOS de atualizar o aplicativo.
{"field": "platform", "relation": "=", "value": "ios"}
Seção 3
Integração do Cliente (SDK)
Conexão Web / JS WEBSOCKET
A integração do frontend para WebSockets é extremamente leve. Você só precisa usar a API nativa WebSocket dos navegadores, sem bibliotecas pesadas.
// Manter a conexão ativa na sessão do usuário
const socket = new WebSocket('wss://api.beezync.com/v1/ws?app_id=XYZ&api_key=XYZ');
socket.onmessage = (e) => {
const payload = JSON.parse(e.data);
if (payload.channel === 'meu_canal') {
// Atualizar interface, gráficos ou contadores
updateDashboard(payload.data);
}
};
Registro Móvel (iOS/Android) PUSH NOTIFICATION
O motor de Push precisa saber quem é o seu usuário. Para receber notificações Push, o aplicativo móvel deve capturar e enviar o seu Token físico (Google FCM ou Apple APNs) para o BeeZync.
Endpoint: POST /v1/api/register-device
metadata do dispositivo sem duplicá-lo com base no seu device_id.
{
"token": "c3a_XYZ_...", // Token gerado pelo OS (Firebase/APNs)
"platform": "android", // "ios", "android", ou "web"
"device_id": "uuid-unico-do-telefone",
"external_user_id": "user_555", // (Opcional) Vincular a um ID do seu backend
"metadata": {
// Tags personalizadas para usar com target_type: "segmented"
"language": "pt",
"plan": "pro",
"topics": ["sports", "news"],
"level": 12
}
}
Ciclo de Vida e Telemetria GLOBAL
Compreender o ciclo de vida dos dispositivos é vital para manter um banco de dados limpo e uma segmentação precisa.
WebSockets (Conexões Efêmeras)
As conexões WebSocket são em tempo real e não persistem. Quando um usuário fecha a guia ou o aplicativo, o socket é destruído. Para saber quem está "online", seu backend deve registrar os eventos onopen e onclose ou usar a futura API de Presença.
Push Notifications (Assinaturas Persistentes)
Os tokens Push (FCM/APNs) são persistentes. Se um usuário desinstalar o aplicativo, o BeeZync não saberá imediatamente. Quando você envia um Push e o provedor (ex: Google) responde que o token é inválido, o BeeZync marcará automaticamente o dispositivo como Unsubscribed (inativo) limpando o seu banco de dados.