push_service_client 1.0.0
push_service_client: ^1.0.0 copied to clipboard
Cliente Flutter para o Push Service — regista devices sozinho (estilo OneSignal) e recebe push notifications (FCM/APNs).
1.0.0 #
- BREAKING — modelo OneSignal: o construtor deixa de exigir
apiToken(token secreto) — passou aPushService(appId: ...), em queappIdé o App ID público (UUID) da app (painel → Aplicações → API). O token já não vai dentro da app móvel. - Captura automática de tudo: o
initialize()recolhe sozinho o token FCM/APNs, plataforma, modelo, versão do SO, versão da app, idioma e fuso horário (IANA) e regista tudo no servidor — sem o developer ter de saber qual é o token correto. subscriptionId(UUID estável) é devolvido no registo — é o identificador público que o teu backend deve guardar para enviar pushes a esse device.- Registo e estado do device em endpoints públicos (
/api/v1/public), sem token.subscribe(),unsubscribe(),trackActivity(),trackOpened()edeleteDevice()deixam de receber odeviceIdnumérico — usam o device registado e o seusubscriptionIdinternamente. sendPush()ganhadevices:— lista de subscription ids para enviar a devices concretos (estilo OneSignalinclude_subscription_ids).segmentedevicessão mutuamente exclusivos. Enviar/listar pushes continua a exigirapiToken(REST key) porque são operações de servidor.
0.1.5 #
- Login/logout do device (estilo OneSignal): novos métodos
setExternalId()eclearExternalId()para associar o device ao utilizador autenticado depois do login, e desassociar no logout. Oexternal_idé preservado noinitializee no re-registo automático quando o token é atualizado. - Novo campo
timezoneIdno device (enviado no registo e lido nas respostas). - Registo merge-safe:
registerDevice()só enviatagsquando não énull(omite em vez de enviar{}), e oinitializejá não apaga oexternal_idde um device com sessão restaurada.
0.1.4 #
trackActivity()aceita também uma sessão individual (sessionStartedAt,sessionEndedAt,sessionDuration) que fica registada na tabela de sessões do servidor para análise de utilizadores.
0.1.3 #
- Novo método
trackActivity()para registar sessões, tempo de uso e último ativo do device no servidor (para o painel mostrar métricas reais).
0.1.2 #
- Recolhe automaticamente o modelo do device (
device_info_plus) noinitializee regista-o no servidor (ex.: "iPhone 15 Pro", "Pixel 8").
0.1.1 #
- No iOS, o
initialize()passa a usar o token APNs real (getAPNSToken) em vez do token FCM, para o servidor enviar diretamente via APNs. Se o token APNs não estiver disponível, cai para o token FCM.
0.1.0 #
- BREAKING: o parâmetro
baseUrlfoi removido do construtor doPushService. A URL do servidor (https://push.michelmelo.pt/api/v1) está agora fixa no pacote — o cliente só precisa deapiTokeneappId:final push = PushService(apiToken: '...', appId: '...');
0.0.2 #
initialize()— tudo num passo: Firebase + permissões + token FCM/APNs + registo do device + listeners.- Dependências reais de
firebase_coreefirebase_messaging(já não é opcional). - Re-registo automático do device quando o token FCM é atualizado.
push.devicecom o device registado após oinitialize.
0.0.1 #
- Cliente inicial para a API v1 do Push Service.
- Registo de devices (upsert por player_id), subscribe/unsubscribe, remoção.
- Envio de pushes (imediato/agendado) com segmentos.
- Listagem e consulta de estado de pushes.
- Handler de notificações (aberto/recebido) e modelos tipados.