Pré-requisitos
Conclua estas etapas de pré-requisito antes de instalar o SDK do Unity da Singular para garantir um processo de integração tranquilo.
Pré-requisitos obrigatórios:
- Conclua as etapas de planejamento: Siga o guia em Integrando um SDK da Singular: Planejamento e Pré-requisitos . Essas etapas são obrigatórias para qualquer integração de SDK da Singular.
- Verifique o gerenciador de dependências: Verifique se o seu projeto usa o Google EDM4U (External Dependency Manager for Unity). Saiba mais sobre o Google EDM4U .
-
Está fazendo upgrade a partir do .unitypackage?
Se você está migrando do antigo
.unitypackagepara o novo pacoteUPM, leia as instruções de upgrade antes de continuar.
Instalação
Instalando via Unity Package Manager (UPM)
O SDK do Unity da Singular é instalado através do Unity Package Manager usando URLs do Git. Siga estas etapas para adicionar o SDK ao seu projeto.
Etapas de instalação
- Abra o Package Manager: No Unity, navegue até Window > Package Manager .
- Adicione o pacote a partir do Git: Clique no botão [+] no canto superior esquerdo e selecione "Add package from git URL" .
-
Insira a URL do Git:
-
Para o SDK padrão:
Insira
https://github.com/singular-labs/Singular-Unity-SDK.git -
Para o SDK infantil (Kids):
Insira
https://github.com/singular-labs/Singular-Unity-SDK.git#kids
-
Para o SDK padrão:
Insira
- Conclua a instalação: Clique em "Add" para instalar o pacote do SDK.
Não está usando o Google EDM4U? Se o seu projeto não usa o External Dependency Manager, você deve baixar e adicionar manualmente as dependências nativas.
Instalação manual de dependências
-
Baixe as dependências:
Baixe o arquivo
Plugins.zipapropriado do bucket S3 da Singular:-
SDK padrão (v5.8.0):
Baixar Plugins do SDK padrão -
SDK infantil (Kids) (v5.6.0):
Baixar Plugins do SDK infantil (Kids)
-
SDK padrão (v5.8.0):
- Extraia para Assets: Extraia os arquivos baixados e mova-os para Assets > Plugins no seu projeto Unity.
-
Configure o framework do iOS:
Navegue até
Assets > Plugins > iOS
e selecione
Singular.xcframework. - Incorpore o binário: No painel Inspector, marque a opção "Add to Embedded Binaries" .
Dicas de configuração do Android
Configure as definições de build do Android para garantir o funcionamento adequado do SDK. O Unity oferece várias formas de personalizar os manifestos do Android e os arquivos Gradle.
Você pode modificar o AndroidManifest usando um destes dois métodos:
Método 1: Manifesto personalizado do Unity
- Navegue até File > Build Settings > Player Settings > Publishing Settings .
- Ative "Custom Main Manifest" na seção Publishing Settings.
-
O Unity gera um arquivo
AndroidManifest.xmlpadrão em Assets/Plugins/Android/AndroidManifest.xml . - Edite este arquivo para adicionar as permissões e configurações necessárias.
Fonte: Documentação do Unity sobre o Android Manifest
Método 2: Android Studio
- Exporte seu projeto do Unity usando File > Build Settings > Export Project .
- Abra o projeto exportado no Android Studio.
-
Edite o arquivo
AndroidManifest.xmldiretamente no Android Studio.
Método 1: Template personalizado do Unity
- Navegue até File > Build Settings > Player Settings > Publishing Settings .
- Ative "Custom Gradle Template" na seção Publishing Settings.
-
O Unity gera um arquivo
mainTemplate.gradleem Assets/Plugins/Android/mainTemplate.gradle . - Adicione suas configurações personalizadas do Gradle a este arquivo.
Fonte: Documentação de visão geral do Gradle no Unity
Método 2: Android Studio
- Exporte seu projeto do Unity.
- Abra o projeto no Android Studio.
-
Edite o arquivo
build.gradledo app diretamente.
Ao compilar apps Android no Unity, você pode encontrar erros de "Duplicate class" causados por várSDK do iOSs que incluem as mesmas dependências transitivas. Isso geralmente ocorre com a biblioteca Android Vending Licensing ao usar tanto o AppLovin SDK quanto o Singular SDK.
Exemplo de erro:
Duplicate class com.android.vending.licensing.ILicensingService found in modules
applovin-sdk-13.5.0.aar -> jetified-applovin-sdk-13.5.0-runtime (com.applovin:applovin-sdk:13.5.0)
and singular_sdk-12.11.0.aar -> jetified-singular_sdk-12.11.0-runtime (com.singular.sdk:singular_sdk:12.11.0)
Solução 1: Usando o External Dependency Manager (EDM4U)
Se o seu projeto usa o External Dependency Manager for Unity (recomendado), adicione regras de exclusão ao seu arquivo Dependencies XML.
-
Localize o arquivo
*Dependencies.xmlno seu projeto Unity (normalmente emAssets/Editorou em um local semelhante). - Adicione uma regra de exclusão a uma das dependências do SDK:
<dependencies>
<androidPackages>
<androidPackage spec="com.applovin:applovin-sdk:13.5.0">
<androidSdkPackageIds>
<exclude group="com.android.vending" module="licensing"/>
</androidSdkPackageIds>
</androidPackage>
<androidPackage spec="com.singular.sdk:singular_sdk:12.11.0" />
</androidPackages>
</dependencies>
Observação: Essa abordagem é mais persistente do que modificar os templates do Gradle, pois o Android Resolver pode sobrescrever as alterações personalizadas do template durante a resolução.
Solução 2: Usando templates personalizados do Gradle
Se você não está usando o EDM4U, aplique as regras de exclusão diretamente nos seus arquivos de configuração do Gradle.
- Navegue até File > Build Settings > Player Settings > Publishing Settings .
- Ative "Custom Main Gradle Template" ou "Custom Launcher Gradle Template" .
-
Abra
Assets/Plugins/Android/mainTemplate.gradle(oulauncherTemplate.gradle). - Adicione a regra de exclusão ao seu bloco de dependências:
dependencies {
implementation('com.applovin:applovin-sdk:13.5.0') {
exclude group: 'com.android.vending', module: 'licensing'
}
implementation 'com.singular.sdk:singular_sdk:12.11.0'
}
Alternativa: Aplique uma exclusão global adicionando isto após o seu bloco de dependências:
configurations.all {
exclude group: 'com.android.vending', module: 'licensing'
}
Verifique a resolução
- Após aplicar a exclusão, limpe seu projeto excluindo as pastas Library/Bee e Temp .
- Recompile seu projeto Android no Unity.
- Verifique se o erro de classe duplicada não aparece mais na saída da build.
Por que isso funciona: Ambos os SDKs incluem a mesma biblioteca de licenciamento do Android como dependência transitiva. A exclusão informa ao Gradle para usar apenas uma cópia, resolvendo o conflito.
Se o seu projeto usa o ProGuard para ofuscação de código, adicione as
seguintes
regras de keep ao seu arquivo
proguard-unity.txt
para
evitar
que o Singular SDK seja removido:
-keep class com.singular.sdk.** { *; }
-keep public class com.android.installreferrer.** { *; }
-keep public class com.singular.unitybridge.** { *; }
Dicas de configuração do iOS
Configure as definições específicas do iOS para habilitar a atribuição, o deep linking e a funcionalidade de testes adequadamente.
Após compilar seu projeto Unity para iOS e antes de compilar no Xcode, atualize as dependências do CocoaPods para garantir que você tenha as versões mais recentes do SDK.
cd /path/to/your/ios/project
pod repo update
pod update
Para testar sua integração, registre o IDFV (Identifier for Vendor) para adicionar rapidamente seu dispositivo de teste no Singular SDK Console.
Adicionar registro do IDFV
- Abra seu projeto Xcode após compilar a partir do Unity.
- Navegue até Classes > UnityAppController.mm .
-
Localize o método
applicationDidBecomeActive. - Adicione o seguinte código para registrar o IDFV:
// Log IDFV for testing
NSLog(@"Singular === IDFV: %@", [[[UIDevice currentDevice] identifierForVendor] UUIDString]);
- Compile e execute seu app no Xcode.
- Verifique os logs do console do Xcode para ver a saída do IDFV.
- Copie o IDFV e adicione-o como dispositivo de teste no Singular SDK Console .
Habilite os Universal Links para deep linking configurando os Associated Domains no seu projeto Xcode.
Etapas de configuração do Deep Link
- Adicione o Associated Domain: No Xcode, navegue até a aba Signing & Capabilities do target do seu app.
- Habilite a capability: Clique em [+] Capability e adicione "Associated Domains" .
-
Adicione o domínio:
Adicione seu domínio de
tracking
da Singular no formato:
applinks:yourdomain.sng.link - Configure o Team ID: No dashboard da Singular, navegue até as configurações do seu app e adicione seu Apple Team ID. Isso permite que a Singular gere e hospede o arquivo Apple App Site Association (AASA) exigido para os Universal Links.
Importante: Sem os Associated Domains e o Team ID configurados corretamente, os Universal Links não funcionarão e os usuários não conseguirão abrir seu app a partir dos links de tracking da Singular.
Se você está usando outros SDKs que registram o UnityAppController (como Firebase, Adjust ou AppsFlyer), você pode encontrar conflitos que impedem a inicialização correta da Singular. No Unity, apenas uma classe pode se registrar como UnityAppController por vez.
Para resolver esse conflito:
-
Abra
o arquivo
SingularSwizzledAppController.mno seu projeto Xcode. - Descomente todo o código deste arquivo.
-
Abra
SingularAppDelegate.me valide se a seguinte linha não está comentada:IMPL_APP_CONTROLLER_SUBCLASS(SingularAppDelegate)
Isso permite que a Singular funcione em conjunto com outros SDKs usando method swizzling em vez de criar uma subclasse do UnityAppController.
Integre o SDK
Crie o GameObject SingularSDK
O Singular SDK requer um GameObject na hierarquia da sua cena Unity para funcionar. Você pode adicionar esse GameObject usando o prefab fornecido ou criando-o manualmente.
Adicionar o Prefab à cena
- No painel Project , navegue até Packages > Singular > SingularSDK > Prefabs .
- Arraste o prefab SingularSDKObject para o seu painel Hierarchy .
- O prefab agora está pronto para ser configurado no Inspector.
Criação manual do GameObject
- No painel Hierarchy , clique com o botão direito e selecione Create Empty .
-
Nomeie o GameObject como
SingularSDKObject(nome exato obrigatório). - Com o GameObject selecionado, navegue até o painel Inspector .
- Clique em Add Component .
- Pesquise por "Singular" e selecione o componente de script Singular SDK .
Crítico:
O GameObject deve ser nomeado
exatamente como
SingularSDKObject
para que o SDK funcione
corretamente.
Configure as definições do SDK
Configure suas credenciais do SDK e as definições de inicialização através do Inspector do Unity. Sua API Key e Secret são necessárias para que o SDK se comunique com os servidores da Singular.
Adicione as credenciais da API
- Selecione o SingularSDKObject: Clique no SingularSDKObject na sua Hierarchy.
- Localize as credenciais: Faça login na sua conta Singular e navegue até Developer Tools > SDK Integration > SDK Keys .
- Copie as chaves: Copie sua SDK Key e SDK Secret .
- Cole no Inspector: No painel Inspector do Unity, cole as credenciais nos campos Singular API Key e Singular API Secret .
Crítico: NÃO use a Singular Reporting API Key. Use apenas a API Key e a Secret específicas do SDK da página de SDK Integration. Usar as credenciais erradas impedirá que os dados sejam enviados para a Singular.
Verifique sua integração: Após a configuração, teste sua implementação usando o Singular SDK Console para garantir que os eventos estão sendo rastreados corretamente.
Configurações padrão do Inspector
O SingularSDKObject vem com valores padrão sensatos. Entender essas configurações ajuda você a personalizar o comportamento do SDK conforme os requisitos do seu app.
- Initialize On Awake: Habilitado por padrão. O SDK é inicializado automaticamente quando o GameObject é despertado (awake). Desabilite isto se você precisar atrasar a inicialização por consentimento de privacidade ou outros requisitos.
- SKAN Enabled: Habilitado por padrão (apenas iOS). Habilita a atribuição via SKAdNetwork em Managed Mode, onde a Singular atualiza automaticamente os conversion values com base no seu modelo de conversão configurado.
- Wait For Tracking Authorization: Definido como 0 (desabilitado). Se o seu app exibe o prompt do iOS App Tracking Transparency (ATT), defina isto como 300 segundos. Isso atrasa a sessão do SDK até que o usuário responda ao prompt do ATT, garantindo que o IDFA possa ser capturado se o consentimento for concedido. Deixe em 0 se não estiver usando o ATT.
- Enable Logging: Habilitado por padrão. Gera logs de debug do SDK para ajudar na integração e no troubleshooting. Deve ser desabilitado em builds de produção. Funciona com a configuração Log Level (veja abaixo).
-
Log Level:
Definido como 3 (Info) por padrão.
Controla
a verbosidade do logging. Números menores produzem logs
mais verbosos:
// Based on Android Logger log levels public enum LogLevel { Verbose = 2, // Most verbose Debug = 3, Info = 4, // Default Warn = 5, Error = 6, Assert = 7 // Least verbose }Observação: Logs detalhados estão disponíveis principalmente no Android.
- DDL Timeout Sec: Definido como 0 (usa o padrão de 60 segundos). Determina por quanto tempo o SDK aguarda os dados de deferred deep link do servidor. O servidor para de pesquisar após esse timeout se nenhum deferred deep link for encontrado.
- Session Timeout Sec: Definido como 0 (usa o padrão de 60 segundos). Define por quanto tempo o app pode ficar em segundo plano antes de o SDK criar uma nova sessão ao retornar ao primeiro plano.
- Shortlink Resolve Timeout: Definido como 0 (usa o padrão de 10 segundos). Tempo máximo de espera para a resolução de short links. Protege a experiência do usuário evitando longas esperas se um short link não puder ser resolvido.
Opções de configuração adicionais
A partir de 18 de junho de 2025: O Advanced Mobile Measurement (AMM) da Meta elimina a necessidade de implementar o Meta Install Referrer. Se o reporting via AMM estiver habilitado, você não precisa configurar o Meta Install Referrer.
Se você precisar dar suporte ao método legado de atribuição do Meta Install Referrer, adicione seu Facebook App ID à configuração do SingularSDKObject.
Etapas de configuração
- Selecione o SingularSDKObject na hierarquia da sua cena.
- No painel Inspector, localize o campo "Facebook App ID" .
- Insira seu Facebook App ID (encontre-o no seu Facebook Developer Console).
Recursos adicionais:
Inicialize o SDK
Conformidade com a privacidade: Ao implementar o Singular SDK, esteja em conformidade com as leis de privacidade das regiões em que você opera, incluindo GDPR, CCPA, COPPA e outras. Para orientações, consulte Práticas de Opt-In e Opt-Out do SDK .
Inicialize o Singular SDK toda vez que seu app for iniciado. A inicialização do SDK é essencial para toda a funcionalidade de atribuição da Singular e cria uma nova sessão para calcular métricas de retenção de usuários.
Inicialização automática
Por padrão, o script
SingularSDK.cs
inicializa automaticamente
o SDK quando sua cena é carregada, por meio do método
Awake()
do Unity.
Nenhum código adicional é necessário se
Initialize On Awake
estiver habilitado no Inspector.
Inicialização manual
Se você precisar inicializar o SDK em um momento específico (por exemplo, após obter o consentimento do usuário), desabilite a inicialização automática e chame o método de inicialização manualmente.
Configuração da inicialização manual
- Selecione o SingularSDKObject na hierarquia da sua cena.
- No painel Inspector, desmarque Initialize On Awake .
-
Chame
SingularSDK.InitializeSingularSDK()no seu código quando estiver pronto para inicializar.
Método InitializeSingularSDK
Use este método para inicializar o SDK manualmente quando a inicialização automática estiver desabilitada.
using UnityEngine;
using Singular;
public class GameInitializer : MonoBehaviour
{
void Start()
{
// Perform any required setup (e.g., consent management)
CheckUserConsent();
// Initialize Singular SDK after consent is obtained
// SDK Key and Secret are configured on the SingularSDKObject
SingularSDK.InitializeSingularSDK();
}
void CheckUserConsent()
{
// Your consent logic here
}
}
Thread Safety: Sempre chame os métodos do SDK do Unity da Singular a partir da mesma thread usada para outras chamadas da API do Unity. O SDK não é thread-safe entre múltiplas threads.
Configuração avançada
Obrigatório para Google Ads iOS Integrated Conversion Measurement
Se o seu app executa campanhas do Google Ads direcionadas a usuários de iOS 14.5+, são necessárias etapas adicionais de configuração do SDK para dar suporte ao iOS Integrated Conversion Measurement (ICM). Isso inclui:
- Integrar o On-Device Measurement (ODM) SDK do Google
- Atualizar para o SDK do iOS da Singular v12.8.1+ (ou v5.5.0+ para Unity, v1.8.0+ para Flutter/Cordova, v3.9.0+ para React Native)
-
Adicionar a linker flag
-ObjCe habilitarenableOdmWithTimeoutIntervalemSingularConfig
Observação:
Habilitar
enableOdmWithTimeoutInterval
atrasa a inicialização do SDK e pode adiar os callbacks de deep link. Conclua esta configuração durante a implementação inicial do SDK para evitar retrabalho.
Ver os requisitos técnicos completos de ICM para iOS
Configurar o Session Timeout
Personalize por quanto tempo seu app pode permanecer em segundo plano antes de o SDK criar uma nova sessão quando o app retorna ao primeiro plano.
Configuração do Session Timeout
O session timeout padrão é de 60 segundos. Para alterar esse valor:
- Selecione o SingularSDKObject na hierarquia da sua cena.
- No painel Inspector, localize o campo Session Timeout Sec .
- Insira o valor de timeout desejado em segundos (por exemplo, 120 para 2 minutos).
- Deixe em 0 para usar o timeout padrão de 60 segundos.
Boa prática: Considere os padrões típicos de uso do seu app ao definir o session timeout. Jogos com sessões curtas e frequentes podem se beneficiar de um timeout mais curto, enquanto apps de produtividade podem precisar de timeouts mais longos.
Fazendo upgrade do .unitypackage para UPM
Se você está migrando do método de instalação legado
.unitypackage
para a
abordagem moderna do Unity Package Manager (UPM), siga estas
etapas críticas de upgrade.
Crítico: Você deve remover manualmente todos os arquivos existentes do Singular SDK antes de instalar o pacote UPM. Não fazer isso causará conflitos e erros de build.
Procedimento de upgrade
Conclua estas etapas em ordem antes de instalar o SDK via Unity Package Manager:
1. Remova os arquivos de código
Navegue até a pasta
/Code
do seu projeto (normalmente
Assets/Singular/Code
)
e exclua todos os scripts C# relacionados à Singular.
2. Remova as dependências do Android
Navegue até /Plugins/Android e remova os seguintes arquivos da Singular:
-
Todos os arquivos
.aarcom "singular" no nome -
Todos os arquivos
.jarcom "singular" no nome -
singular-sdk.aar -
install-referrer-*.aar -
singular-unitybridge.aar
3. Remova as dependências do iOS
Navegue até /Plugins/iOS e remova os seguintes arquivos da Singular:
-
Todos os arquivos de cabeçalho
.h(por exemplo,SingularSDK.h) -
Todos os arquivos de implementação
.m(por exemplo,SingularUnityBridge.m) -
pasta
Singular.xcframework
Importante: Remova apenas os arquivos específicos da Singular. Tenha cuidado para não excluir outros arquivos de plugin dos quais seu projeto possa depender.
4. Verifique o estado limpo
- Após remover os arquivos, feche o Unity completamente.
- Exclua a pasta Library no diretório do seu projeto para forçar o Unity a reimportar os assets.
- Reabra seu projeto Unity.
- Aguarde o Unity terminar de reimportar os assets.
- Verifique se não há erros de compilação antes de prosseguir com a instalação via UPM.
5. Instale o pacote UPM
Agora você está pronto para instalar o Singular SDK via Unity Package Manager. Siga as instruções de instalação via UPM no topo deste guia.