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).
- 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.
Adicione um novo destino Widget Extension para seu aplicativo no Xcode.
OneSignalWidget) e garanta que Include Live Activity esteja selecionado. Então clique em Finish.

Opções de Widget Extension para uma Live Activity.

Opções de Widget Extension para uma Live Activity.
2. Atualizar Info.plist
No Info.plist do seu destino principal, adicione a chave Supports Live Activities como Boolean, e defina para YES.

Adicione a chave Supports Live Activities ao Info e defina seu valor para Boolean 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:
Adicione o OneSignalFramework ao seu destino Widget Extension
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.

Permitir associação ao destino principal
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
Se você também consumir qualquer uma das seguintes sequências diretamente em seu aplicativo, isso pode interferir no comportamento da Live Activity do OneSignal:
- activityStateUpdates
- pushTokenUpdates
- pushToStartTokenUpdates
- activityUpdates
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

Live Activity na tela de bloqueio
Você iniciou com sucesso uma Live Activity com push-to-start!Os usuários precisarão selecionar “Allow” para continuar recebendo atualizações.
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

Live Activity Atualizada
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.

Live Activity Encerrada
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
- Em certos casos onde o usuário não consegue receber uma atualização para sua live activity, depois que uma foi iniciada, abrir o aplicativo deve atualizá-los para continuar
- Para explicar isso, você definiria a data de obsolescência para uma data e hora no futuro, depois que você sabe que teria enviado sua primeira atualização para o usuário, e aqueles que não receberam a atualização veriam a mensagem de fallback.
- Você pode escutar este estado “stale” em sua UI de widget para mostrar uma mensagem de fallback:
swift
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 Data 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