Android tem um recurso semelhante chamado Notificações Live do Android.
Requisitos
- Siga a configuração do SDK iOS se estiver usando iOS nativo (Swift/Objective-C).
- Se estiver usando um SDK wrapper (React Native, Flutter, Unity, etc.) siga a configuração do SDK Mobile e depois a Configuração do SDK de Live Activity multiplataforma.
- OneSignal iOS SDK versão 5.2.0+ para suporte a push-to-start (consulte as notas de lançamento).
- OneSignal iOS SDK versão 5.2.15+ para rastreamento de cliques e Entrega Confirmada
- iOS 16.1+ e iPadOS 17+
- Use uma chave APNs .p8. A Apple não suporta certificados p12 com Live Activities.
- Xcode 14 ou superior
Configuração
Estes passos orientam você na configuração de Live Activities rapidamente. Para mais detalhes e personalizações de design, consulte a documentação de desenvolvedor de Live Activities da Apple.1. Adicionar uma Widget Extension
No Xcode, vá para File > New > Target… > Widget Extension.
OneSignalWidget) e garanta que Include Live Activity esteja selecionado. Então clique em Finish.


2. Atualizar Info.plist
No Info.plist do seu destino principal, adicione a chave Supports Live Activities como Boolean, e defina para YES.

info.plist
Ao atualizar Live Activities, você tem a opção de definir uma “prioridade” que a Apple usa para determinar quão urgente é a atualização. A Apple tem limites internos nos quais ela limitará requisições que usam a flag de alta prioridade com muita frequência.Se seus casos de uso para Live Activities dependem de atualizações de alta prioridade mais frequentes, você pode adicionar a chave
NSSupportsLiveActivitiesFrequentUpdates ao seu Info.plist como um tipo Boolean definido para YES conforme instruído na Documentação de Desenvolvedor da Apple. Os usuários verão um diálogo quando a Live Activity exceder seu orçamento de push, e se eles permitirem que a Live Activity continue, o orçamento será automaticamente aumentado para uma experiência do usuário sem problemas.3. Adicionar SDK
- Package Manager
- Cocoapods
No seu destino Widget Extension, adicione o 
OneSignalFramework em General > Frameworks, Libraries and Embedded Content:
4. Definir atributos e UI do widget
Abra o arquivoyour-nameLiveActivity.swift (exemplo: OneSignalWidgetLiveActivity.swift) para definir as propriedades da estrutura e fazer alterações na UI do widget.
your-nameAttributesdescreve o conteúdo estático da sua Live Activity.ContentStatedescreve o conteúdo dinâmico da sua Live Activity.
OneSignalWidgetLiveActivity.swift.
your-nameLiveActivity.swift
5. Permitir associação ao destino principal
Adicione seu destino de aplicativo principal à lista Target Membership no arquivoyour-nameLiveActivity.swift.
No Xcode, abra o painel Inspector no lado direito da tela. Dentro de Target Membership, clique no botão + e selecione seu destino de aplicativo principal contendo o ContentView e seu código de inicialização do OneSignal.

6. Adicionar o método de configuração ao seu AppDelegate
ChameOneSignal.LiveActivities.setup em seu AppDelegate, após a inicialização do SDK OneSignal.
Substitua OneSignalWidgetAttributes pelo nome da sua estrutura de atributos de Live Activity.
AppDelegate
Iniciar uma Live Activity
Existem 2 opções para iniciar uma Live Activity em um dispositivo:- Push-to-start
- Ativar no aplicativo
Envie uma requisição da API Push To Start. Certifique-se de que todos os nomes e IDs correspondam exatamente à configuração do seu widget (os parâmetros são sensíveis a maiúsculas e minúsculas). Se algo estiver faltando ou adicionado incorretamente, você pode encontrar problemas ao tentar lançar o widget.Aqui está um exemplo de requisição que funcionará para o exemplo acima.Substitua:
-
YOUR_APP_IDpelo seu OneSignal App ID. -
YOUR_APP_API_KEYpela sua chave de API do OneSignal. -
OneSignalWidgetAttributespelo nome da sua estrutura de Widget Attributes.curl

Você iniciou com sucesso uma Live Activity com push-to-start!Os usuários precisarão selecionar “Allow” para continuar recebendo atualizações.
Rastreamento de cliques em Live Activity
Rastreie quando os usuários tocam em suas Live Activities e Dynamic Islands implementando o rastreamento de cliques do OneSignal. Isso permite medir o engajamento e, opcionalmente, direcionar os usuários para conteúdo específico no seu app via deep link.Passo 1: Adicionar rastreamento de cliques ao seu widget
Adicione o modificador.onesignalWidgetURL() a qualquer componente de UI no seu widget Live Activity do qual você deseja rastrear cliques:
- Você pode passar uma URL para deep linking ou
nilse quiser apenas rastreamento de cliques sem navegação - A hierarquia de visualizações não pode incluir o modificador
.widgetURL()da Apple se você estiver usando.onesignalWidgetURL() - Aplique o modificador tanto à visualização principal da Live Activity quanto ao Dynamic Island se quiser rastrear cliques em ambos
Passo 2: Tratar URLs no seu app
Adicione tratamento de URLs no seu app para rastrear cliques e direcionar os usuários adequadamente:trackClickAndReturnOriginal() rastreia automaticamente o clique com o OneSignal e retorna a URL original que você especificou no widget para que seu app processe.
Atualizar uma Live Activity
Use a API Update Live Activity para atualizar widgets ativos. Corresponda aoactivity_id usado ao iniciar a atividade.
Este exemplo de requisição atualizará o widget push-to-start porque ele tem o activity_id intitulado push-to-start que definimos.
Para atualizar o widget click-to-start, atualize o caminho da requisição para usar click-to-start em vez de push-to-start.
curl

Você atualizou com sucesso uma Live Activity!Confira a API Update Live Activity para mais informações sobre atualização de uma Live Activity.
Encerrar uma Live Activity
Usando a mesma API Update Live Activity, podemos encerrar uma Live Activity definindo"event": "end".
curl
- Use nosso método do SDK
exit(). - Usuário desliza manualmente a Live Activity para removê-la.
- Usuário revoga permissão para Live Activities em suas Configurações do iOS.

Você encerrou com sucesso a Live Activity e completou o exemplo!
Melhores práticas e recomendações
Considerações de design
- Siga as Diretrizes de Interface Humana de Live Activities da Apple.
- Priorize informações importantes para facilitar o entendimento em uma olhada rápida.
- Não adicione elementos ao seu aplicativo que chamem atenção para a Dynamic Island.
- Use margens e mantenha espaço entre elementos.
- Use uma cor forte para o fundo. Projete para os modos Light e Dark.
Funcionalidade
- A Apple requer que cada apresentação de Live Activity seja suportada.
- Teste seus deep links.
- Revise o guia da Apple sobre Exibindo Dados Live com Live Activities.
- Evite exibir informações sensíveis em uma Live Activity.
Definir uma mensagem de fallback
Se um usuário não conseguir receber uma atualização depois que uma Live Activity foi iniciada, abrir o app deve atualizar a atividade. Defina a data de obsolescência para um ponto no futuro após você esperar ter enviado a primeira atualização. Os usuários que não receberam a atualização verão a mensagem de fallback. Você pode escutar o estado “stale” na sua UI de widget para mostrar uma mensagem de fallback:
FAQ
Qual é o orçamento para atualizações de alta prioridade?
A Apple não fornece um limite fixo para atualizações de alta prioridade (priority: 10), mas eles aplicam um orçamento dinâmico no nível do sistema. Enviar muitas atualizações de alta prioridade em um curto período pode resultar em limitação, onde atualizações são atrasadas ou descartadas.
Para reduzir o risco de limitação:
- Use uma mistura de níveis de prioridade: A Apple recomenda usar tanto
priority: 5(padrão) quantopriority: 10(alta) para equilíbrio. - Reserve
priority: 10apenas para atualizações sensíveis ao tempo ou críticas (por exemplo, mudanças de status de pedido, placares de jogos).
- Adicione a chave
NSSupportsLiveActivitiesFrequentUpdatesao arquivoInfo.plistdo seu aplicativo, definida como BooleanYES. - Quando este orçamento é excedido, o iOS pode solicitar ao usuário que permita atualizações adicionais. Se o usuário concordar, a Apple expandirá automaticamente o limite de atualização permitido para manter uma experiência sem problemas.
Posso ler atualizações de Live Activity do aplicativo principal?
Sim. Você pode observar atualizações para depuração ou sincronização de UI:A API retornou um 400 com uma mensagem de erro dizendo que estou acima do limite de assinantes. O que fazer?
Se sua contagem de assinantes push for maior que os Assinantes Push do seu plano, por favor atualize sua conta para o próximo plano, ou entre em contato comsupport@onesignal.com. Para os detalhes de plano mais recentes, veja aqui.
Como evito enviar tanto push quanto Live Activities?
Seu aplicativo pode já enviar uma série de Notificações Push, onde sua Live Activity projetada substitui a necessidade dessas Notificações Push. Por exemplo, se você envia atualizações de placar via Push, você poderia substituir isso através de uma Live Activity. Para garantir que seus usuários não estejam recebendo muitas mensagens, recomendamos que, quando seu usuário opta por uma Live Activity, adicione uma data tag. Ao adicionar esta data tag, você pode excluir usuários com esta data tag de mensagens push que possam conter o mesmo conteúdo ou similar. Leia mais sobre Tags e Segmentos.Solução de problemas
Sem destinatários
Para que seus usuários sejam encontrados ao tentar iniciar ou atualizar uma Live Activity, você deve garantir que o tipo de atividade, widget e requisição cURL tenham valores correspondentes.-
Verifique os parâmetros de caminho em sua requisição para garantir que você está enviando uma requisição formatada corretamente para o servidor. O App ID deve corresponder ao seu App ID usado no método
OneSignal.Initializee o tipo de atividade deve corresponder ao tipo que você definiu em seu arquivo de Live Activity. - No corpo da requisição da API Push To Start, você deve ter os seguintes parâmetros:
event:"start"event_updates: Os dados dinâmicos que você definiu em sua estrutura sob o tipo de atividade e que são usados em seu widget. Garanta que o uso de maiúsculas/minúsculas e variáveis correspondam entre a requisição, o tipo e o widget.event_attributes: Dados estáticos seguem a mesma lógica que Event Updates e devem incluir todas as variáveis em uso, e devem corresponder em todas as partes da live activity e da requisiçãoactivity_id: Isso atribuirá um ID ao widget e é o que será usado para atualizar a atividade depois que ela for lançada no dispositivo do usuário.name: O Nome da Live Activity.contents: O conteúdo da mensagem necessário para enviar push.headings: O cabeçalho da mensagem necessário para enviar push.- Um parâmetro de direcionamento como
included_segments. Opções disponíveis.
Atividade enviada, mas não recebida
- Garanta que a requisição está formatada corretamente. Se algum campo que é usado no Widget for omitido, a atividade pode não iniciar ou atualizar como esperado.
-
Em sua requisição da API, determine o nível de
priorityque você está definindo. Se você está definindo isso para10(prioridade mais alta), tente reduzir para5e teste novamente. A Apple limitará requisições sendo enviadas com muita frequência de acordo com seus próprios limites de taxa internos.
NSSupportsLiveActivitiesFrequentUpdates ao seu Info.plist como um tipo Boolean definido para YES conforme instruído na Documentação de Desenvolvedor da Apple. O usuário verá um diálogo quando a Live Activity exceder seu orçamento de push, e se eles permitirem que a Live Activity continue, o orçamento será automaticamente aumentado para uma experiência do usuário sem problemas.
Precisa de ajuda?Converse com nossa equipe de Suporte ou envie email para
support@onesignal.comPor favor inclua:- Detalhes do problema que você está enfrentando e passos para reproduzir se disponível
- Seu OneSignal App ID
- O External ID ou Subscription ID se aplicável
- A URL para a mensagem que você testou no Dashboard OneSignal se aplicável
- Quaisquer logs ou mensagens de erro relevantes

