Saltar para o conteúdo
Iris Edge StudiosEstúdio de jogos independente

Iris Edge Studios/ Guias/Engenharia

Engenharia

Notificações que orientam em vez de chatear: dicas de série com a OneSignal

O Pinteza é um jogo de palavras diário, por isso grande parte da retenção vem da série de vitórias. Esta nota explica como separámos as notificações em dois canais, a única função da OneSignal no segundo, e um erro nas Definições que fez a integração parecer avariada durante dias.

Dois canais

O telemóvel agenda sozinho a maior parte das notificações do Pinteza: a palavra do dia, um aviso quando a série está prestes a acabar, um regresso ao fim de 3, 7 e 14 dias de ausência, e uma nota quando um Escudo cobriu um dia falhado. Dependem de coisas que só o dispositivo sabe, como se já jogou hoje e quantos escudos tem, por isso ficam no telemóvel e nenhum terceiro as vê.

A OneSignal envia um só tipo de mensagem, as dicas para a série: notas ocasionais sobre como o jogo funciona, por exemplo para que serve um escudo. Não envia a palavra do dia, avisos de série nem promoções, por isso o jogador nunca recebe o mesmo lembrete dos dois sistemas.

Nada arranca antes de o jogador aceitar

O SDK da OneSignal não arranca enquanto o jogador não ligar as dicas. Marcar primeiro o consentimento não chega, porque o SDK vai buscar as definições remotas dentro de start() antes de verificar o consentimento. Por isso é a própria chamada de inicialização que espera.

Três ações ligam as dicas: o botão "Ativar lembretes" do cartão de lembretes seguido da permissão do sistema, a mesma linha nas Definições, ou o interruptor Dicas para a série. Permitir notificações nas definições do telemóvel não as liga. Desligar as dicas cancela primeiro a subscrição e retira o consentimento cerca de um minuto depois, com a app em primeiro plano e ligada à internet, porque a OneSignal bloqueia o próprio pedido de cancelamento depois de o consentimento ser retirado. Se a app for fechada antes disso, o processo termina no arranque seguinte.

A OneSignal não recebe ID externo nem localização. Recebe quatro etiquetas: o idioma da app, a edição (Portugal ou Brasil), a série como intervalo, por exemplo "4-6", e não como número ou datas, e se os lembretes no dispositivo estão ligados.

A Journey de boas-vindas

Há uma só Journey, e o jogador entra nela quando subscreve. No dia zero não se envia nada. Doze horas depois, uma janela das 12:00 às 13:00 no fuso horário do jogador envia a primeira dica à hora de almoço: como os Escudos protegem uma série. Dois dias depois, a Journey salta quem está inativo há 48 horas, porque o regresso no dispositivo chega a essas pessoas nessa semana, e ramifica pela etiqueta da série. Quem tem série fica a saber que cada palavra resolvida entra na coleção. Quem não tem recebe "Sem série? As palavras contam na mesma".

Três definições de entrega fazem o resto. Um ID de agrupamento faz a dica do dia 3 substituir a do dia 1 ainda por ler, em vez de se empilhar. Um tempo de vida de seis horas impede que uma dica de almoço chegue ao fim do dia ao lado dos lembretes locais. E cada notificação usa o canal Android da própria app, "Dicas para a série", por isso as definições de notificações do telemóvel aplicam-se a ela. Um toque na dica abre o lobby diário.

O Pinteza tem duas edições de português, mas a OneSignal tem um só idioma pt, por isso os modelos escolhem o texto com Liquid na etiqueta da edição:

{% if user.tags.variant == "br" %}Sua sequência pode ter guarda-costas{% else %}A tua série pode ter guarda-costas{% endif %}

O que fizemos mal

Durante vários dias o painel mostrou um só subscritor, um telemóvel de teste, e julgámos que a integração estava avariada. Não estava. As Definições tinham dois grupos de interruptores que pareciam ambos "notificações ligadas". "Lembrete Diário" e "Série em risco" controlam o canal no dispositivo e nunca tocam na OneSignal. Só as "Dicas para a série" o fazem. Tínhamos ligado todos os lembretes e deixado desligado o único interruptor que importava.

Descobrimos o problema instalando a versão da Play Store num telemóvel, ligando o interruptor certo e vendo o SDK arrancar no registo do dispositivo e um ID de subscrição aparecer nas Definições. Também pensámos em subscrever automaticamente quem já tinha as notificações permitidas, para encher o painel. Chegámos a construir essa alteração e revertemo-la antes de ser publicada, porque recolheria dados de pessoas que não tinham escolhido nada. A correção que planeamos está nos nomes: dois grupos com títulos próprios, para que o jogador distinga um lembrete de uma dica.

Resultados até agora

O Pinteza chegou ao Google Play a 25 de setembro de 2026, por isso os números são pequenos. Oito notificações de teste para um telemóvel de teste foram entregues sem falhas, e quatro foram abertas. A 30 de setembro havia cinco dispositivos subscritos e quatro jogadores tinham entrado na Journey de boas-vindas. A primeira dica chegou nesse dia às 12:07 a um telemóvel com a versão da Play Store e foi aberta 18 segundos depois, segundo o registo do dispositivo. Isto mostra que a montagem funciona de ponta a ponta numa versão de loja. Ainda não diz nada sobre retenção, e não o vamos afirmar enquanto não tivermos esses dados.

Três notas menores. Na nossa conta, os envios da Journey não apareceram na lista de notificações da API da OneSignal, por isso lemo-los na análise da Journey. Um evento de duração de sessão de zero segundos, que acontece quando a app fecha logo a seguir a arrancar, é rejeitado com um 400 e é inofensivo. E teste numa versão de lançamento, além da de desenvolvimento, porque é a versão de lançamento que os jogadores instalam.

Se está a construir o mesmo

  • Separe os lembretes no dispositivo das mensagens remotas, uma função para cada.
  • Atrase a inicialização do SDK até o jogador escolher, e marque também o consentimento.
  • Envie etiquetas como intervalos, e não como valores brutos ou datas.
  • Comece com uma Journey, poucas mensagens, um ID de agrupamento e um tempo de vida curto.
  • Deixe de fora quem outro sistema já alcança.

O Pinteza já está no Google Play. O interruptor Dicas para a série está em Definições, Notificações.


Mais guias