Guia de integração básica do SDK do Unity
Este guia orienta você na integração do SDK do Pushwoosh para Unity em seu aplicativo.
Pré-requisitos
Anchor link toPassos de integração
Anchor link to1. Adicionar o SDK do Pushwoosh para Unity
Anchor link toAdicione o seguinte ao seu Packages/manifest.json:
{ "dependencies": { "com.pushwoosh.unity.core": "6.3.0", "com.pushwoosh.unity.android": "6.3.0", "com.pushwoosh.unity.ios": "6.3.0" }, "scopedRegistries": [ { "name": "npmjs", "url": "https://registry.npmjs.org", "scopes": ["com.pushwoosh"] } ]}Adicione apenas os pacotes de plataforma que você precisa. Por exemplo, omita com.pushwoosh.unity.android se você visa apenas o iOS.
No Unity, vá para Window > Package Manager > + > Add package from git URL e adicione as seguintes URLs uma por uma:
https://github.com/Pushwoosh/pushwoosh-unity.git?path=com.pushwoosh.unity.corehttps://github.com/Pushwoosh/pushwoosh-unity.git?path=com.pushwoosh.unity.androidhttps://github.com/Pushwoosh/pushwoosh-unity.git?path=com.pushwoosh.unity.iosBaixe o Pushwoosh.unitypackage dos Lançamentos do GitHub e importe via Assets > Import Package > Custom Package.
2. Instalar o External Dependency Manager
Anchor link toA parte Android do SDK requer o External Dependency Manager for Unity (EDM4U) para resolver as dependências nativas do Android. Pule esta etapa se você desenvolve apenas para iOS.
Adicione o seguinte registro com escopo ao seu Packages/manifest.json:
{ "scopedRegistries": [ { "name": "package.openupm.com", "url": "https://package.openupm.com", "scopes": ["com.google.external-dependency-manager"] } ]}Em seguida, adicione o pacote às suas dependências:
"com.google.external-dependency-manager": "1.2.183"3. Escolha como o SDK do iOS é adicionado
Anchor link toPor padrão, a exportação para iOS obtém o SDK nativo do pacote Swift Pushwoosh-XCFramework com o Swift Package Manager. Você não precisa do CocoaPods nem do EDM4U para iOS e não executa pod install.
Para alterar a origem do SDK do iOS ou adicionar módulos opcionais, abra Window > Pushwoosh SDK Setup no Unity Editor:
- Em iOS SDK from, selecione Swift Package Manager ou CocoaPods.
- Com o Swift Package Manager, em Modules (Swift Package Manager only), selecione os módulos opcionais que seu aplicativo usa:
PushwooshLiveActivities,PushwooshInboxKit,PushwooshInApp,PushwooshVoIP,PushwooshForegroundPush,PushwooshKeychain,PushwooshGRPC,PushwooshGeozones. Os módulos são vinculados ao target do aplicativo. Para usar um módulo na sua própria extensão de aplicativo, adicione-o ao target da extensão no Xcode. Com o CocoaPods, a exportação é feita sem esses módulos.
A exportação volta para o CocoaPods, e o console do Unity informa o motivo, quando qualquer uma destas condições se aplica:
- CocoaPods está selecionado em Window > Pushwoosh SDK Setup.
- O projeto já tem um pod
PushwooshXCFramework, em um arquivo*Dependencies.xmllido pelo EDM4U ou no Podfile. Para mudar para o Swift Package Manager, remova o pod. Para Geozones, remova o podPushwooshXCFramework/Geozonese selecionePushwooshGeozonesem Window > Pushwoosh SDK Setup. - A versão do Unity é anterior à 2021.3.15.
- Target minimum iOS Version é inferior a 15.0.
Com o CocoaPods, o EDM4U não é necessário. O SDK executa pod install após a exportação e gera o Podfile por conta própria, a menos que o EDM4U esteja instalado e grave o Podfile em seu lugar. Se pod install falhar, o console do Unity mostra o erro. Execute pod install na pasta do projeto Xcode exportado.
Se o seu ambiente de build não consegue acessar o github.com, o Xcode não consegue resolver o pacote Swift. Selecione CocoaPods em Window > Pushwoosh SDK Setup para esses builds.
A exportação com o Swift Package Manager mantém o Unity-iPhone.xcworkspace, portanto scripts de build e CI que compilam o workspace funcionam sem alterações.
4. Inicializar o SDK
Anchor link toCrie um script PushNotificator.cs e anexe-o a qualquer GameObject na cena:
using UnityEngine;using System.Collections.Generic;
public class PushNotificator : MonoBehaviour{ void Start() { Pushwoosh.ApplicationCode = "XXXXX-XXXXX"; Pushwoosh.FcmProjectNumber = "XXXXXXXXXXXX";
Pushwoosh.Instance.OnRegisteredForPushNotifications += (token) => { Debug.Log("Push token: " + token); };
Pushwoosh.Instance.OnFailedToRegisteredForPushNotifications += (error) => { Debug.Log("Registration failed: " + error); };
Pushwoosh.Instance.RegisterForPushNotifications(); }}Substitua:
XXXXX-XXXXXpelo seu Código de Aplicativo Pushwoosh.XXXXXXXXXXXXpelo número do seu projeto Firebase (apenas Android).
5. Configuração nativa do iOS
Anchor link to5.1 Capabilities
Anchor link toApós construir o projeto iOS a partir do Unity, abra o projeto Xcode gerado e adicione as seguintes capabilities em Signing & Capabilities:
- Push Notifications
- Background Modes com Remote notifications marcado
Para Time Sensitive Notifications (iOS 15+), adicione também a capability Time Sensitive Notifications.
5.2 Info.plist
Anchor link toAdicione o Token de API de Dispositivo Pushwoosh ao seu Info.plist:
<key>Pushwoosh_API_TOKEN</key><string>__PUSHWOOSH_DEVICE_API_TOKEN__</string>5.3 Rastreamento de entrega de mensagens
Anchor link toAdicione um alvo de Notification Service Extension ao seu projeto Xcode. Isso é necessário para o rastreamento preciso da entrega e Rich Media no iOS.
Siga o guia nativo para adicionar o alvo da extensão.
6. Configuração nativa do Android
Anchor link to6.1 Adicionar arquivo de configuração do Firebase
Anchor link toColoque o arquivo google-services.json no diretório Assets do seu projeto Unity.
6.2 Adicionar metadados do Pushwoosh
Anchor link toAdicione o Token de API de Dispositivo Pushwoosh ao seu Assets/Plugins/Android/AndroidManifest.xml dentro da tag <application>:
<meta-data android:name="com.pushwoosh.apitoken" android:value="__YOUR_DEVICE_API_TOKEN__" />7. Executar o projeto
Anchor link to- Compile e execute o projeto na sua plataforma de destino.
- Conceda permissão para notificações push quando solicitado.
- Vá para o Painel de Controle Pushwoosh e envie uma notificação push.
Integração estendida
Anchor link toNesta fase, você pode enviar e receber notificações push. As seções abaixo cobrem a funcionalidade principal do SDK.
Listeners de eventos de notificação push
Anchor link toO SDK fornece dois listeners de eventos para lidar com notificações push:
OnPushNotificationsReceived— acionado quando uma notificação push chegaOnPushNotificationsOpened— acionado quando um usuário toca em uma notificação
Configure esses listeners durante a inicialização do SDK:
void Start(){ Pushwoosh.ApplicationCode = "XXXXX-XXXXX"; Pushwoosh.FcmProjectNumber = "XXXXXXXXXXXX";
Pushwoosh.Instance.OnPushNotificationsReceived += (payload) => { Debug.Log("Push received: " + payload); };
Pushwoosh.Instance.OnPushNotificationsOpened += (payload) => { Debug.Log("Push opened: " + payload); };
Pushwoosh.Instance.RegisterForPushNotifications();}Configuração do usuário
Anchor link toPersonalize as notificações push identificando usuários e definindo suas propriedades:
// Define o ID do usuário para rastreamento entre dispositivosPushwoosh.Instance.SetUserId("user-123");
// Define o e-mail do usuárioPushwoosh.Instance.SetEmail("user@example.com");
// Define o usuário com ID e e-mailPushwoosh.Instance.SetUser("user-123", new List<string> { "user@example.com" });
// Define o idioma preferidoPushwoosh.Instance.SetLanguage("en");Tags
Anchor link toTags são pares de chave-valor atribuídos a dispositivos, permitindo a segmentação de usuários e o envio de mensagens direcionadas:
// Tag de stringPushwoosh.Instance.SetStringTag("favorite_category", "electronics");
// Tag de inteiroPushwoosh.Instance.SetIntTag("purchase_count", 5);
// Tag de listaPushwoosh.Instance.SetListTag("interests", new List<object> { "sports", "music", "tech" });
// Obter todas as tagsPushwoosh.Instance.GetTags((tags, error) => { if (error != null) { Debug.Log("Error: " + error.Message); return; } foreach (var tag in tags) { Debug.Log(tag.Key + ": " + tag.Value); }});Eventos
Anchor link toRastreie as ações do usuário para analisar o comportamento e acionar mensagens automatizadas:
// Rastreia um evento de loginPushwoosh.Instance.PostEvent("login", new Dictionary<string, object> { { "username", "user-123" }, { "login_type", "email" }});
// Rastreia um evento de compraPushwoosh.Instance.PostEvent("purchase", new Dictionary<string, object> { { "product_id", "SKU-001" }, { "price", 29.99 }, { "currency", "USD" }});Preferências de comunicação
Anchor link toPermita que os usuários optem por receber ou não notificações push programaticamente:
// Habilita a comunicaçãoPushwoosh.Instance.SetCommunicationEnabled(true);
// Desabilita a comunicaçãoPushwoosh.Instance.SetCommunicationEnabled(false);
// Verifica o estado atualbool isEnabled = Pushwoosh.Instance.IsCommunicationEnabled();Gerenciamento de emblemas
Anchor link toControle o número do emblema do aplicativo nas plataformas suportadas:
// Define o emblema para um número específicoPushwoosh.Instance.SetBadgeNumber(3);
// Incrementa o emblemaPushwoosh.Instance.AddBadgeNumber(1);
// Limpa o emblemaPushwoosh.Instance.SetBadgeNumber(0);Solução de problemas
Anchor link toSe um push não for entregue, procure o código de erro da sua plataforma em Erros de envio para ver o que ele significa e como corrigi-lo.
Se você encontrar algum problema durante o processo de integração, consulte a seção de suporte e comunidade.