Guia de integração do SDK do Unity Package Manager

 

Antes de começar: Pré-requisitos do SDK

1. Instalar o SDK

AVISO: Está a atualizar da versão ".unitypackage" para a versão"UPM" do SDK? É necessário executar etapas de atualização específicas, conforme indicado abaixo!
IMPORTANTE: Execute estes passos de atualização antes de prosseguir com a instalação do SDK UPM.

A atualização requer a remoção manual dos arquivos do Singular SDK existentes, que foram importados usando o processo de integração obsoleto do .unitypackage.
Isso DEVE ser concluído antes de importar o SDK com o Unity Package Manager (UPM)!

Remova a seguinte lista de ficheiros antes de integrar o SDK utilizando o Unity Package Manager (UPM). Tenha cuidado extra e certifique-se de remover apenas os arquivos Singular, conforme indicado aqui:

  1. Da pasta /Code do projeto:
    unity_upgrade_code_folder_file_removal.png

  2. Da pasta /Plugins/Android do projeto, remova os AARs e JARs:
    unity_upgrade_plugin_android_folder_file_removal.png

  3. Da pasta /Plugins/iOS do projeto, remova os arquivos .h e .m do iOS e o .xcframework:
    unity_upgrade_plugin_ios_folder_file_removal.png

1.1. Descarregamento e importação do pacote SDK

Instalando o Singular Unity SDK usando o Unity Package Manager (UPM)
  1. Na janela do Package Manager:

IMPORTANTE: Se NÃO estiver a utilizar o EDM4U da Google, siga estes passos adicionais.
  1. Baixe as dependências necessárias do bucket S3 do Singular. Para a versão 5.2.1 do SDK, o Plugins.zip é: https://s3.us-west-2.amazonaws.com/maven.singular.net/unity/UPM-non-EDM4U/5.2.1/Plugins.zip
  2. Os ficheiros extraídos devem ser movidos para a pasta Project Plugins.

1.2. Configuração para Android

DICA: Como atualizar o AndroidManifest ao usar o Unity?
  1. A partir do Unity v2018.3, você pode adicionar seu próprio arquivo AndroidManifest simplesmente ativando a propriedade Manifesto principal personalizado na janela Player (que pode ser acessada em Arquivo > Configurações de compilação > Configurações do player > Configurações de publicação). Isto gera um ficheiro AndroidManifest.xml predefinido para si, que pode editar.

    O arquivo estará no local Assets/Plugins/Android/AndroidManifest.xml

    Fonte: https://docs.unity3d.com/2023.2/Documentation/Manual/android-manifest.html

  2. Em vez de utilizar o ficheiro Main Manifest personalizado do Unity, pode aceder ao AndroidManifest.xml a partir do Android Studio depois de exportar a aplicação do Unity.

DICA: Como atualizar as configurações do Gradle ao usar o Unity.
  1. A partir do Unity v2018.3, você pode adicionar seu próprio arquivo de compilação Gradle personalizado simplesmente ativando a propriedade Custom Gradle Template na janela Player (que pode ser acessada em Arquivo > Configurações de compilação > Configurações do Player > Configurações de publicação). Isto gera um ficheiro mainTemplate.gradle predefinido para ser editado.

    O ficheiro estará na localização: Assets/Plugins/Android/mainTemplate.gradle

    Fonte: https://docs.unity3d.com/2023.2/Documentation/Manual/android-gradle-overview.html

  2. Em vez de utilizar o ficheiro de compilação Gradle personalizado do Unity, pode aceder ao Apps build.gradle a partir do Android Studio depois de exportar a aplicação do Unity.

Está a utilizar o Proguard

Se estiver a utilizar o Proguard, adicione as seguintes linhas de código ao seu ficheiro proguard-unity.txt:

-keep class com.singular.sdk.** { *; }
-keep public class com.android.installreferrer.** { *; }
-keep public class com.singular.unitybridge.** { *; }

1.3. Dicas para iOS

DICA: Atualize os Cocoa Pods após a criação no Unity e antes da criação no Xcode.

Recomendamos que inicie o seguinte comando a partir da pasta onde os Pods estão localizados.

pod repo update
pod update
DICA: registre o identificador IDFV de applicationDidBecomeActive().

Para testar no iOS, recomendamos adicionar a seguinte linha de código na pasta: Classes > UnityAppController > função applicationDidBecomeActive.

// Impressão do identificador do fornecedor (IDFV) no console do Xcode para uso no console do Singular SDK
NSLog(@"Singular === IDFV: %@", [[[UIDevice currentDevice] identifierForVendor] UUIDString]);

idfv.png

Isso permitirá que você recupere o identificador IDFV na abertura do aplicativo nos logs do Xcode. Use esse identificador no Console do Singular SDK para adicionar o dispositivo de teste.

idfv3.png

DICA: Lembretes de suporte do Deeplink
  1. Adicione o Domínio associado em Assinatura e recursos. Sem o domínio associado configurado corretamente, o aplicativo NÃO será aberto ao clicar em um link de rastreamento do Singular.

  2. Valide se o ID da equipe também foi adicionado à página do aplicativo na plataforma Singular. Isso permitirá que o Singular crie e hospede o arquivo de associação do site do aplicativo da Apple necessário para habilitar a funcionalidade de links universais.

IMPORTANTE: Recomenda-se atualizar do unitypackage para o SDK UPM conforme indicado acima. O conteúdo deste menu suspenso é apenas para referência.

Depreciado SDK do unitypackage Singular e SDK Kids

Legado: Descarregando e importando o SDK Singular ".unitypackage"

Se estiver a atualizar a partir da versão 4.3.2 ou anterior?

Navegue até Assets > Plugins > iOS e remova os seguintes ficheiros antes de importar o novo unitypackage!

  • Attributes.h
  • Events.h
  • libSingular.a
  • Singular.h
  • SingularAdData.h
  • SingularConfig.h
  • SingularLinkParams.h
  1. Descarregue o ficheiro mais recente do Singular Unity Package SDK unitypackage v4.4.2 mais recente.
    ou Descarregue o ficheiro Singular Unity Kids SDK Versão 4.2.0.
  2. No menu Unity, navegue até:

    • Assets > Import Package > Custom package
    • Selecionar o ficheiro descarregado unitypackage
    • Selecione Importar
  3. Se NÃO estiver a utilizar o Kids SDK: Está a planear suportar dispositivos Android 12?

    Adicione o ficheiro play-services-ads-identifier-18.0.1.aar à sua pasta Assets/Plugins/Android/ para que o Unity inclua a dependência necessária para capturar o Google Advertising Identifier. Se já tiver esta dependência, pode saltar este passo.

  4. Atualizar as permissões do AndroidManifest

    No seu ficheiro AndroidManifest.xml, adicione as seguintes permissões:

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="BIND_GET_INSTALL_REFERRER_SERVICE" />
    <uses-permission android:name="com.android.vending.CHECK_LICENSE" />
  5. Se tiver desativado as dependências transitivas para o SDK Singular, adicione o seguinte ao build.gradle da sua aplicação.

    implementation 'com.android.installreferrer:installreferrer:2.2'
    implementation 'com.google.android.gms:play-services-appset:16.0.0'
  6. O SDK Singular requer a API do Google Mobile Ads, parte das APIs do Google Play Services 17.0.0+. Se já integrou o Google Play Services na sua aplicação, o requisito está cumprido. Se não o tiver feito, pode integrar o Google Mobile Ads individualmente, incluindo a seguinte dependência no ficheiro build.gradle da sua aplicação:(não é necessário para o SDK para crianças)

    implementation 'com.google.android.gms:play-services-ads-identifier:18.0.1+'

    Para obter mais informações, consulte o guia do Google para configurar o Google Play Services.

  7. Configuração adicional para iOS

    Depois de compilar a partir do Unity, vincule as seguintes bibliotecas/frameworks ao seu projeto Unity XCode. Navegue até o destino UnityFramework e escolha Build Phases > Link Binary with Libraries. Adicione o seguinte:

    • WebKit.framework
    • libsqlite3.0.tbd
    • libz.tbd
    • AdServices.framework (Deve ser adicionado, mas marque-o como Opcional , pois só está disponível para dispositivos com iOS 14.3 e superior). Também é obrigatório se você planeja rodar no Apple Search Ads!

    Importante: O endereço AdServices.framework é necessário na criação da aplicação se planear utilizar as campanhas Apple Search Ad e pretender monitorizar a atribuição.

  8. Crie o SingularSDKObject na secção seguinte utilizando as instruções Non-Prefab AQUI
  9. No iOS, você deve ativar a opção “Add to Embedded Bin” no painel de inspeção. Navegue até Assets > Plugins > iOS e selecione o arquivo Singular.xcframework e, em seguida, no Painel de inspeção, marque a opção “Add to Embedded Bin”.

    unity.png

2. Integração do SDK

2.1. Criar o SingularSDKObject

Adicionar o SingularSDKObject à hierarquia

Adicione o SingularSDKObject utilizando o objeto de pré-fabrico Singular.

Mover o objeto pré-fabricado Singular para o painel Hierarquia

  • No painel Projeto, navegue até: Pacotes > Singular > SingularSDK > Prefabs.
  • Mova o objeto SingularSDKObject para o painel Hierarquia.
    unity_prefab.png
Se NÃO utilizar o GameObject pré-fabricado, adicione manualmente o GameObject "SingularSDKObject", seguindo estes passos.

No painel Hierarquia:

  1. Cria um GameObject vazio na tua cena principal.
  2. Dá um nome ao GameObject: SingularSDKObject.
    IMPORTANTE: O GameObject deve ter o nome "SingularSDKObject" para que o SDK do Singular funcione.
  3. Clique no SingularSDKObject.
  4. Navegue até o Painel de inspeção.
  5. No painel Inspeção, clique em Adicionar componente
  6. No campo de pesquisa, digite"Singular" e selecione o script"Singular SDK".
    unity_add_script.png

Configurar as definições do SingularSDKObject

  1. No painel Inspeção do SingularSDKObject, cole a Chave do SDK Singular e o Segredo do SDK nos respectivos campos. Para obter a chave e o segredo do SDK, inicie sessão na sua conta Singular e aceda a"Developer Tools > SDK Integration > SDK Keys").

    sdk_keys.png
    IMPORTANTE: NÃO USE a Chave da API de relatórios do Singular ou os dados do SDK não serão recebidos. Siga as instruções acima para obter a chave e o segredo corretos.
    unity_singularsdkobject_settings.png

    Se a chave e o segredo do SDK do Singular forem aplicados incorretamente, os dados não serão enviados ao Singular.
    Teste sua implementação usando o Singular SDK Console para verificar o comportamento correto.

Nota: Configurações padrão do painel de inspeção para o SingularSDKObject:

As seguintes opções estão habilitadas no Painel de Inspeção:

  • Inicializar ao acordar (marcado)

    Essa configuração permite que o Unity controle a Inicialização do SDK Singular com base no status Desperto do aplicativo.

    Siga a conformidade de privacidade para os requisitos do seu aplicativo e atualize essa opção conforme necessário. Desmarcar a opção desabilita a inicialização do SDK Singular no status Desperto e exigiria a inicialização manual.

  • SKAN ativado (marcado)

    A partir da versão 4.0.17 do SDK do Unity, a SKAdNetwork é ativada por padrão. Ela é ativada no Modo gerenciado (no qual a Singular atualiza o valor de conversão SKAN para você usando um modelo de conversão que você escolhe no painel da Singular).

  • Aguardar autorização de rastreamento, definido como 0 (desativado)

    Se o seu aplicativo estiver exibindo o prompt App Tracking Transparency(ATT), é recomendável definir esse tempo limite para 300 segundos. A adição do tempo limite atrasa a sessão do Singular SDK, permitindo que o usuário autorize/negue o consentimento do AppTrackingTransparency antes de registrar eventos nos servidores do Singular. Quando o usuário responder ao prompt ATT, o Singular SDK continuará sem demora. Isso permite capturar o identificador IDFA para Atribuição de instalação quando o consentimento é fornecido. Se não estiver a mostrar ATT, o valor predefinido para esta opção deve permanecer 0 (sem espera).

  • Ativar registo (marcado)

    Ativa o registo a partir do SDK da Singular. Deve ser utilizada com a opção"Nível de registo".
    O "Log Level" deve ser especificado com um número "int", conforme especificado no mapeamento de enumeração abaixo. Quanto mais baixo for o número neste intervalo, mais detalhados serão os registos.

    //Com base no enum de níveis de registro do Android Logger.java: android.util.Log
    public enum LogLevel {
       Verbose = 2,
       Debug   = 3,
       Info    = 4,
       Warn    = 5,
       Error   = 6,
       Assert  = 7
       }

    Nota: atualmente, a maioria dos registos só está disponível no Android.

  • Ddl Timeout Sec definido como 0

    Por padrão, a configuração "0" usa um tempo limite de 60 segundos. Isso informa ao servidor Singular por quanto tempo procurar um valor de link profundo vinculado à atribuição do último toque. Se um deferred deep link for encontrado, ele será enviado de volta para o aplicativo na resposta à solicitação de sessão do SDK e processado no SingularLinkHandler. O servidor pára de procurar se não for encontrada uma ligação direta diferida no espaço de 60 segundos.

  • Tempo limite da sessão emsegundos definido como 0

    Este é o tempo limite em segundos antes de o Singular SDK registar uma nova sessão quando a aplicação está em segundo plano e regressa ao primeiro plano. Por padrão, a configuração de "0" usa um tempo limite de 60 segundos. Pode ajustar esta definição para uma janela maior, se necessário.

  • Tempo limite do Shortlink Resolve definido como 0

    Por predefinição, a definição de "0" utiliza um tempo limite de 10 segundos. Este tempo limite protege a experiência do utilizador. Se o shortlink fornecido não for resolvido no tempo especificado, o Singular SDK não acionará um manipulador de deeplink.

Outras opções do painel de inspeção:

Habilitar Facebook (META Install Referrer)

Para oferecer suporte ao método de atribuição do Referenciador de instalação META, adicione sua ID do aplicativo do Facebook ao Painel de inspeção no SingularSDKObject.

  1. Clique no SingularSDKObject na sua cena principal.
  2. Abra o Painel de inspeção e localize o campo "ID do aplicativo do Facebook".
  3. Adicione sua ID do aplicativo do Facebook

2.2. Usando SKAdNetwork

A partir da versão 4.0.17 do Unity SDK, a SKAdNetwork é ativada por padrão. Ela é ativada no Modo gerenciado (no qual a Singular atualiza o valor de conversão SKAN para você usando um modelo de conversão que você escolhe no painel da Singular).

Para usar SKAdNetwork, não é necessário definir mais nada ou adicionar qualquer código, desde que esteja a usar o SDK mais recente.

Informações adicionais

Ativação de SKAdNetwork em versões mais antigas do SDK

Se estiver a utilizar uma versão mais antiga do SDK, terá de ativar a SKAdNetwork de uma das seguintes formas:

  • Aceda ao SingularSDKObject e defina SKANEnabled como True.
  • Chame SingularSDK.SkanRegisterAppForAdNetworkAttribution() no código da sua aplicação.
Utilização de SKAdNetwork no modo manual (avançado)

Se optar por gerir manualmente o valor de conversão SKAN utilizando a sua lógica, tem de fazer o seguinte:

  • Aceda ao SingularSDKObject e defina manualSKANConversionManagement como True.
  • Utilize os seguintes métodos no seu código para definir e recuperar o valor de conversão.
Método SingularSDK.SkanUpdateConversionValue
Descrição

Actualiza o valor de conversão SKAdNetwork.

Nota: Utilize este método se tiver selecionado a atualização manual do valor de conversão SKAdNetwork. Este método só funcionará se manualSKANConversionManagement estiver definido como True.

Assinatura public void SkanUpdateConversionValue(int value)
Exemplo de utilização
// Aconteceu um evento de registro
Singular.Event("SignUp");

// Atualize o valor de conversão para 7
SingularSDK.SkanUpdateConversionValue(7);
Método SingularSDK.SkanGetConversionValue
Descrição Obtém o valor de conversão atual monitorizado pelo Singular SDK.
Assinatura public int? SkanGetConversionValue()
Exemplo de utilização
int? value = SingularSDK.SkanGetConversionValue();
Método SingularSDK.SetConversionValueUpdatedHandler
Descrição Define um manipulador para receber notificações quando o valor de conversão é atualizado.
Assinatura public void SetConversionValueUpdatedHandler(SingularConversionValueUpdatedHandler handler)
Exemplo de utilização
public class Main : MonoBehaviour, SingularConversionValueUpdatedHandler {
  void Awake() {
    SingularSDK.SetConversionValueUpdatedHandler(this);
  }

  void OnConversionValueUpdated(int value) {
    // Use o valor de conversão
  }
}

2.3. Manipulação do consentimento de transparência de rastreio de aplicações iOS (ATT)

Está a apresentar o prompt App Tracking Transparency (ATT)?

A partir do iOS 14.5, os aplicativos devem solicitar o consentimento do usuário (usando a estrutura App Tracking Transparency) antes de poderem acessar e compartilhar alguns dados do usuário, incluindo o IDFA do dispositivo, que é útil para fins de rastreamento.

A Singular e as redes de anúncios beneficiam muito do facto de terem o IDFA para identificar dispositivos e efetuar a atribuição de instalações (embora existam formas de o fazer sem o IDFA). É altamente recomendável solicitar o consentimento do usuário para obter o IDFA.

Recomenda-se atrasar a Inicialização do SDK Singular até que o Utilizador responda ao pedido ATT.

Por defeito, o Singular SDK envia uma sessão de utilizador quando é inicializado. Quando uma sessão é enviada de um novo dispositivo, ela aciona imediatamente o processo de atribuição do Singular - que é realizado com base apenas nos dados disponíveis para o Singular naquele momento. Portanto, é essencial solicitar o consentimento e recuperar o IDFA antes que o SDK da Singular envie a primeira sessão.

DICA: Se o seu aplicativo estiver exibindo o prompt App Tracking Transparency (ATT), é recomendável definir o tempo limite para 300 segundos. Se não estiver a mostrar a ATT, o valor predefinido para esta opção deve permanecer 0 (sem espera).

Para configurar o waitForTrackingAuthorizationWithTimeoutInterval ajuste a opção de configuração no painel Inspeção de SingularSDKObject . Essa opção define o tempo máximo (em segundos) para que o Singular SDK aguarde o usuário autorizar/negar o AppTrackingTransparency Consent antes de registrar os eventos nos servidores do Singular.

2.4. Manipulação de Deep Links

Deep links são URLs que direcionam os usuários para um conteúdo específico dentro de um aplicativo. Quando um usuário clica em um link profundo em um dispositivo com o aplicativo já instalado, o aplicativo abre e exibe um determinado produto ou experiência.

As ligações de seguimento simples podem incorporar ligações diretas e ligações diretas diferidas. Para obter mais detalhes, consulte as Perguntas frequentes sobre links diretos e as Perguntas frequentes sobre links singulares.

Observações:

Expanda as seções abaixo para obter detalhes sobre o suporte à plataforma e o código do manipulador:

Suporte a deep linking no Android

Suporte a links diretos no Android

  1. Abra o arquivo Project > Assets > Plugins > Android > AndroidManifest.xml em um editor.
  2. Actualize a propriedade do nome da atividade a partir da predefinição:
    <activity android:name="com.unity3d.player.UnityPlayerActivity"

    para:

    <activity android:name="com.singular.unitybridge.SingularUnityActivity"

    OU

    IMPORTANTE: Se tiver implementado uma atividade personalizada:
    1. Adicione a declaração de importação para o SingularUnityBridge onde está a implementar onNewIntent.

      import com.singular.unitybridge.SingularUnityBridge;
    2. Chame o SingularUnityBridge.onNewIntent(intent); a partir do método onNewIntent na sua atividade:

      Exemplo:
      @Override
      protected void onNewIntent(Intent intent) {
          setIntent(intent);
      
          // Chame esse método de sua atividade personalizada em onNewIntent
          SingularUnityBridge.onNewIntent(intent);
      }

    AVISO: Se você criou uma atividade personalizada para seu aplicativo e ela não estende (herda de) a atividade do Unity Player, considere adicionar guardas no método onNewIntent para lidar com casos em que o objeto de atividade atual pode ser nulo.

  3. Adicione um Intent Filter na atividade apropriada para oferecer suporte a deep links do Esquema de aplicativos Android com o esquema escolhido.
    • O Singular é compatível com a tecnologia Android App Scheme para abrir o aplicativo. Recomenda-se NÃO usar um atributo HOST para aumentar a flexibilidade.
    • No Singular, vá para Configuração de aplicativos, encontre seu aplicativo, expanda as Configurações avançadas do aplicativo Android e cole o valor no campo Esquema de aplicativo Android. Isso permitirá que o Singular sirva o esquema como uma intenção durante o redirecionamento de um Singular Tracking Link que esteja habilitado para deep linking.
      Se o esquema na plataforma Singular não corresponder à configuração do filtro de intenção AndroidManifest.xml, os Singular Tracking Links não abrirão o aplicativo. Se uma combinação específica de esquema e host for usada, a mesma combinação deverá ser configurada na plataforma Singular.
    <!-- Filtro de intenção adicionado para Deeplinking de esquema Android singular -->
    <!-- Substitua singular-example por seu valor -->
    
    <intent-filter> <data android:scheme="singular-example"/> <action android:name="android.intent.action.VIEW"/> <category android:name="android.intent.category.DEFAULT"/> <category android:name="android.intent.category.BROWSABLE"/> </intent-filter>
Suporte a deep linking no iOS

Suporte à vinculação profunda no iOS

O Singular usa o iOS Universal Links e esquemas de aplicativos para fazer links diretos no iOS. Siga estas etapas para habilitar seu aplicativo para usar o iOS Universal Links e o esquema de aplicativo de links diretos com o Singular Links.

  1. Configure pelo menos um subdomínio para seus links na página Atribuição > Gerenciar links no Singular. Para obter mais informações, consulte as Perguntas frequentes sobre Singular Links.
  2. Para configurar Universal Links (deep linking no iOS):
    • Faça login no Portal do desenvolvedor da Apple.
    • Vá para Identificadores e selecione o aplicativo ao qual você deseja adicionar suporte a Universal Links.

      identifiers.png

    • No menu Capacidades, marque a caixa de seleção Domínios associados e clique em Salvar.

      associateddomains.png

  3. Para adicionar o direito "Domínios associados" à sua aplicação:
    • No XCode, aceda a Definições do projeto > Capacidades > Domínios associados.

    • Adicione seus domínios Singular Links.

      associateddomains2.png

  4. Copie seu "Prefixo do aplicativo" (também conhecido como "ID da equipe") do Portal do desenvolvedor da Apple.
  5. No Singular, vá para Configuração de aplicativos, localize seu aplicativo, expanda as Configurações avançadas do aplicativo iOS e cole o valor no campo ID da equipe. Isso permitirá que o Singular hospede o arquivo apple-app-site-association no seu domínio Singular para os Universal Links.

    mceclip3.png

  6. Observação: Esta etapa é necessária nos casos em que os Universal Links não podem fazer deep link.
    Abaixo da "ID da equipa", introduza o"Esquema de aplicações" do iOS para ativar a ligação direta com as ligações diretas do esquema de aplicações tradicional como um recurso para a ligação direta do Universal Link.
    mceclip4.png

    Se esta for a primeira vez que a sua aplicação suporta um esquema de aplicações iOS para ligações diretas, certifique-se de que o esquema de aplicações está registado como um "Tipo de URL" no seu projeto Xcode:
    Screenshot of Xcode showing the URL Types section with a URL that reads "com.example.myphotoapp."

    Para obter mais informações sobre o suporte de esquemas de aplicativos para seu aplicativo iOS, consulte o artigo de ajuda do desenvolvedor da Apple sobre o tópico.

2.5. Inicializando o SDK

Observação: Ao implementar os SDKs Singular, lembre-se de cumprir as várias leis de privacidade promulgadas nas regiões onde você faz negócios, incluindo GDPR, CCPA, COPPA e outras. Para obter mais informações, consulte Práticas de aceitação e exclusão de SDK.

O código de inicialização do SDK deve ser chamado sempre que seu aplicativo for aberto. Ele é um pré-requisito para todas as funcionalidades de atribuição do Singular e envia uma nova sessão para o Singular, que é usada para calcular a retenção de usuários.

Por padrão, SingularSDK.cs inicializa o SDK automaticamente quando a cena é criada através do método Awake.

Inicialização manual

Se preferir inicializar o SDK manualmente em um ponto posterior da execução do aplicativo, faça o seguinte:

  1. Desative a opção Inicializar ao Despertar no painel de inspeção do objeto SingularSDK.
  2. Use o método estático SingularSDK.InitializeSingularSDK para inicializar o SDK:
Método SingularSDK.InitializeSingularSDK
Descrição Inicializa o SDK do Singular se ele não tiver sido inicializado no Awake.
Assinatura
public void InitializeSingularSDK()
Exemplo de uso
// SDK Key e SDK Secret são definidos no
// objeto de jogo associado ao SingularSDK SingularSDK.InitializeSingularSDK();

Nota sobre Thread Safety: O Singular Unity SDK deve sempre ser chamado a partir da mesma thread, assim como você chama outros métodos Unity.

2.6. Configurando o tempo limite da sessão (opcional)

Por predefinição, se a aplicação for executada em segundo plano durante 60 segundos ou mais antes de regressar ao primeiro plano, o Singular SDK regista uma nova sessão. É possível alterar o valor de tempo limite padrão modificando a propriedade Session Timeout Sec do seu SingularSDKObject.

2.7. Enviando o ID de usuário para a Singular (opcional)

Você pode enviar seu ID de usuário interno para a Singular usando um método do Singular SDK.

Nota: Se você usar a solução Cross-Device da Singular, deverá coletar a ID de usuário em todas as plataformas.

  • A ID de usuário pode ser qualquer identificador e não deve expor PII (Informações de identificação pessoal). Por exemplo, não deve utilizar o endereço de correio eletrónico, o nome de utilizador ou o número de telefone de um utilizador. A Singular recomenda o uso de um valor com hash exclusivo apenas para seus dados primários.
  • O valor da ID de usuário passado para a Singular também deve ser a mesma ID de usuário interna que você captura em todas as plataformas (Web/Mobile/PC/Console/Offline).
  • A Singular incluirá o ID de utilizador nas exportações ao nível do utilizador, ETL e postbacks do BI interno (se configurado). O ID do usuário é um dado primário e a Singular não o compartilha com outras partes.
  • Quando definido com o método Singular SDK, o valor da ID de usuário persiste até que seja desinstalado usando o método UnsetCustomUserId ou até que o aplicativo seja desinstalado. Fechar ou reiniciar a aplicação não anula a definição do ID de utilizador.

Para definir o ID de utilizador, utilize o método SetCustomUserId. Para a anular (por exemplo, se o Utilizador "sair" da conta), ligue para UnsetCustomUserId.

Nota: Se vários Utilizadores utilizarem um único dispositivo, recomendamos a implementação de um fluxo de fim de sessão para definir e anular a definição do ID de Utilizador para cada início e fim de sessão.

Se você já souber a ID de usuário quando o aplicativo for aberto, chame SetCustomUserId antes de inicializar o SDK do Singular. Dessa forma, o Singular pode obter a ID de usuário desde a primeira sessão. No entanto, a ID de usuário normalmente não está disponível até que o usuário se registre ou faça um login. Nesse caso, chame SetCustomUserId após a conclusão do fluxo de registo.

Método SingularSDK.SetCustomUserId
Descrição Envia o ID do usuário para o Singular.
Assinatura public void SetCustomUserId(string customUserId)
Exemplo de uso
SingularSDK.SetCustomUserId("custom_user_id");
Método SingularSDK.UnsetCustomUserId
Descrição Desfaz a definição do ID do usuário que foi enviado para o Singular.
Assinatura public void UnsetCustomUserId()
Exemplo de uso
SingularSDK.UnsetCustomUserId();

Opcional: Mapeamento do dispositivo de ID de utilizador personalizado

Importante: Esta funcionalidade avançada da Enterprise só está disponível em casos excepcionais. Consulte um dos engenheiros de soluções da Singular antes de implementá-lo.

A Singular pode receber dados adicionais de rastreamento de eventos móveis por meio de uma integração de servidor para servidor. Para utilizar este recurso, é necessário mapear o ID do usuário para o identificador de rastreamento de dispositivos móveis da Singular.

Nota: Chame este método o mais rápido possível após a inicialização do Singular SDK ou assim que tiver o ID do usuário.

Método SingularSDK.SetDeviceCustomUserId
Descrição Define o ID de usuário personalizado igual ao login e o mapeia para o identificador de rastreamento do Singular.
Assinatura public void SetDeviceCustomUserId(string customUserId)
Exemplo de uso
SingularSDK.SetDeviceCustomUserId('CustomUserId');

3. Rastreamento de eventos e receita

3.1. Rastreamento de eventos (não receita)

A Singular pode coletar dados sobre eventos in-app para ajudar a analisar o desempenho de suas campanhas e medir KPIs. Por exemplo, a sua organização pode querer recolher dados sobre logins de utilizadores, registos, conclusões de tutoriais ou subida de nível numa aplicação de jogos.

O Singular suporta uma variedade de eventos padrão. As redes de anúncios geralmente suportam esses eventos comumente usados para relatórios e otimização. Outra vantagem é que, quando você usa nomes de eventos padrão, o Singular os reconhece automaticamente e os adiciona à lista Eventos sem que você precise defini-los manualmente. Recomendamos o uso de eventos padrão sempre que possível.

A lista de eventos enviados para a Singular (com os atributos que os acompanham) deve ser compilada pela equipa de UA/marketing/negócio com base nos KPIs de marketing da sua organização. A equipe de negócios pode seguir Como rastrear eventos no aplicativo: Guia para clientes de atribuição singular.

Com cada evento que você rastreia, você pode passar vários atributos. Veja os atributos padrão recomendados por evento.

Envie eventos padrão para a Singular usando os métodos event ou eventWithArgs em seu código.

Observação: Para eventos padrão, use o nome Unity do evento como ele aparece na Lista de eventos e atributos padrão do Unity SDK, por exemplo, sngLogin.

SingularSDK.Event(Events.sngLogin);

Para eventos personalizados, eventos que sua organização deseja medir e que não correspondem a nenhum dos eventos padrão do Singular, use qualquer nome personalizado (máximo de 32 caracteres). Recomendamos o uso de nomes em inglês para compatibilidade com quaisquer parceiros de rede de anúncios que possam receber o evento da Singular para fins de otimização.

Método SingularSDK.Event
Descrição Envia eventos de usuário para o Singular para rastreamento.
Assinaturas
public static void Event(string name)
public static void Event(string name, params object[] args)
public static void Event(Dictionary<string, object> args,
string name)
Nota: Ao passar dicionários, os valores do dicionário devem ser de um dos seguintes tipos: string, int, long, float, double, null, ArrayList, Dictionary<string, object>

Exemplo de utilização

// 1) Enviar o evento padrão Login
SingularSDK.Event(Events.sngLogin);
// 2) Um exemplo de evento personalizado que passa dois pares de valores-chave
SingularSDK.Event("myEventName", "Key1", "Value1", "Key2", 1234);
// 3) Um exemplo de evento JSON passando um dicionário
// Criar um dicionário para atributos
Dictionary<string, object> attributes = new Dictionary<string, object>();

// Adicionar atributos
attributes["key1"] = "value1";
attributes["key2"] = "value2";
attributes["key3"] = "value3";
// Adicione mais atributos conforme necessário

SingularSDK.Event(attributes, "myEventName");

3.2. Rastreamento de receita

A Singular pode recolher dados sobre a receita obtida através da aplicação para ajudar a analisar o desempenho e o ROI das suas campanhas. O Singular disponibilizará os dados em relatórios, exportação de logs e postbacks.

Observações: Qualquer receita relatada em uma moeda diferente será convertida automaticamente para a moeda preferida da sua organização definida na sua conta do Singular.

Você pode rastrear eventos de receita usando o objeto IAP (In-App Purchases) integrado do Unity. Dessa forma, Singular obtém todas as informações disponíveis sobre a compra para relatórios mais completos. O Singular também obtém o recibo de compra, que o Singular usa no back-end para validar a compra e descartar fraudes de atribuição.

Método SingularSDK.InAppPurchase
Descrição Envia um produto IAP para a Singular para rastrear o evento de compra.
Assinaturas
public static void InAppPurchase(Product product,
Dictionary<string, object> attributes, bool isRestored = false)
public static void InAppPurchase(string eventName,
Product product, Dictionary<string, object> attributes,
bool isRestored = false)
public static void InAppPurchase(IEnumerable<Product> products,
Dictionary<string, object> attributes, bool isRestored = false)
public static void InAppPurchase(string eventName,
IEnumerable<Product> products, Dictionary<string, object>
attributes, bool isRestored = false)

Notas:

  • product é o objeto de produto recebido do IAP: UnityEngine.Purchasing.Product
  • atributos: Utiliza este parâmetro para passar informação adicional ao Singular. Se não tiveres nenhum atributo para passar, passa apenas null.
  • isRestored: Indica se a transação é restaurada. Padrão: false.
Exemplo de uso
// IAP com um único produto e sem atributos adicionais
SingularSDK.InAppPurchase(myProduct, null);
// IAP com um único produto e atributos
var attr = new Dictionary<string, object>() {
["my_first_attribute"] = "value1",
["my_second_attribute"] = "value2"};
 
SingularSDK.InAppPurchase(myProduct, attr);
// IAP com um único produto, sem atributos extras e com um nome de evento personalizado

SingularSDK.InAppPurchase("MyCustomProduct",
myProduct, null);
// IAP com lista de produtos, sem atributos adicionais
SingularSDK.InAppPurchase(myProductList, null);
// IAP com uma lista de produtos, sem atributos extras e com um nome de evento personalizado

SingularSDK.InAppPurchase("MyCustomProducts",
myProductList, null);
Maneira alternativa de rastrear a receita: Métodos Revenue e CustomRevenue

Se não for possível usar o IAP da Unity, o SDK da Singular fornece dois métodos para passar informações sobre uma compra para a Singular "manualmente":

  • Use Revenue para passar informações sobre uma compra para a Singular, detalhando a moeda da transação, o valor e outros detalhes opcionais.
  • CustomRevenue é semelhante, mas permite que você dê um nome personalizado ao evento.

Nota: Se você usar Revenue/CustomRevenue em vez de InAppPurchase, a Singular não poderá verificar o recibo de compra.

Método SingularSDK.Revenue
Descrição Envia um evento de receita para o Singular.
Assinaturas
public static void Revenue(string currency, double amount)
public static void Revenue(string currency, double amount, string productSKU, string productName, string productCategory, int productQuantity, double productPrice)
public static void Revenue(string currency, double amount, Dictionary<string, object> attributes)
Nota: Passe a moeda como um código de moeda ISO 4217 de três letras, como "USD", "EUR", "INR".
Exemplo de uso
// Enviar um evento de receita sem detalhes do produto
SingularSDK.Revenue("USD", 1.99);
// Enviar um evento de receita com detalhes do produto
SingularSDK.Revenue("USD", 4.99, "coin_package_abc123", "Coin Pack 5", "Bundles", 1, 4.99);
// Enviar um evento de receita com o JSON Dictionary para atributos
Dictionary<string, object> attributes = new Dictionary<string, object>();

// Adicionar atributos attributes["productSKU"] = "coin_package_abc123"; attributes["productName"] = "Coin Pack 5"; attributes["productCategory"] = "Bundles"; attributes["productQuantity"] = 2; attributes["productPrice"] = 4.99;
SingularSDK.Revenue("USD", 9.98, attributes);
Método SingularSDK.CustomRevenue
Descrição Envia um evento de receita com um nome personalizado para o Singular.
Assinaturas
public static void CustomRevenue(string eventName, string currency, double amount)
public static void CustomRevenue(string eventName, string currency, double amount, string productSKU, string productName, string productCategory, int productQuantity, double productPrice)
public static void CustomRevenue(string eventName, string currency, double amount, Dictionary<string, object> attributes)
Nota: Passe a moeda como um código de moeda ISO 4217 de três letras, como "USD", "EUR", "INR".
Exemplo de utilização
// Enviar um evento de receita com um nome personalizado
SingularSDK.CustomRevenue("MyCustomRevenue", "USD", 9.99);
// Enviar um evento de receita com um nome personalizado + detalhes do produto
SingularSDK.CustomRevenue("MyCustomRevenue", "USD", 50.50, "abc123", "myProductName", "myProductCategory", 2, 25.50);
// Enviar um evento de receita com um nome personalizado + Dicionário JSON para atributos
// Criar um dicionário para atributos
Dictionary<string, object> attributes = new Dictionary<string, object>();

// Adicionar atributos attributes["productSKU"] = "coin_package_abc123"; attributes["productName"] = "Coin Pack 5"; attributes["productCategory"] = "Bundles"; attributes["productQuantity"] = 2; attributes["productPrice"] = 4.99; // Adicione mais atributos conforme necessário SingularSDK.CustomRevenue("MyCustomRevenue", "USD", 9.98, attributes);

3.3. Rastreamento de evento híbrido (avançado)

A Singular recomenda o envio de todos os eventos e receitas por meio do SDK da Singular integrado ao seu aplicativo. No entanto, a Singular pode coletar eventos e receitas de outras fontes.

Qualquer evento NÃO enviado do SDK da Singular deve estar em conformidade com os requisitos de documentação de eventos de servidor para servidor da Singular e fornecer o identificador de dispositivo correspondente para atribuir corretamente um evento.

Importante:

Ocorrerão discrepâncias se os identificadores de dispositivo usados nas solicitações de eventos de servidor para servidor não tiverem um identificador de dispositivo correspondente no Singular. Tenha em atenção as seguintes possibilidades:

  • Se uma solicitação de evento for recebida "antes" de o SDK do Singular ter gravado o identificador de dispositivo de uma sessão de aplicativo, a solicitação de evento será considerada a "primeira sessão" para o dispositivo desconhecido e o Singular atribuirá o dispositivo como uma atribuição orgânica.
  • Se o Singular SDK tiver registado um identificador de dispositivo, mas o identificador do Singular SDK for diferente do identificador de dispositivo especificado na solicitação de evento de servidor para servidor, o evento será atribuído incorretamente.

Guias de rastreamento de eventos híbridos

Envio de eventos de um servidor interno

A Singular pode coletar dados sobre a receita do seu servidor para ajudar a analisar o desempenho e o ROI de suas campanhas.

Requisitos:

  • A partir de um evento de registo ou de início de sessão in-app, capture e passe os identificadores de dispositivo e armazene estes dados com o ID de utilizador no seu servidor. Como os identificadores de dispositivo podem mudar para um utilizador, certifique-se de que actualiza os identificadores quando um utilizador gera uma sessão de aplicação. Isto garante que o evento do lado do servidor será atribuído ao dispositivo correto.
  • Os eventos do lado do servidor são específicos da plataforma e só devem ser enviados com o identificador de dispositivo correspondente à plataforma do dispositivo (por exemplo, IDFA ou IDFV para dispositivos iOS).
  • Pode utilizar o mecanismo de postback do Singular Internal BI para enviar um evento em tempo real para o seu ponto de extremidade interno, para que possa atualizar o conjunto de dados no lado do servidor. Consulte as Perguntas frequentes sobre o postback do BI interno.
  • Reveja a secção "Acompanhamento de receitas" no guia de Integração Servidor a Servidor para obter mais detalhes.
Envio de eventos de um fornecedor de receitas
Provedores de terceiros como RevenueCat ou adapty podem fornecer receita de compra e assinatura para a Singular.

Siga os links abaixo para obter detalhes sobre como ativar esses parceiros.

Envio de eventos do segmento

Para permitir que o Segment envie eventos para a Singular, em paralelo com o SDK da Singular, é necessário adicionar um Destino "Cloud-Mode" no Segment. Siga nosso guia AQUI.

4. Opções avançadas

4.1. Criação de links curtos de referência

Nota: Esta funcionalidade está disponível na versão 4.0.16+ do SDK.

Use links curtos para transformar Links Singulares longos e cheios de parâmetros em links mais curtos e mais seguros que são convenientes para compartilhamento.

Normalmente, pretende criar ligações curtas de forma dinâmica para que os utilizadores da sua aplicação possam partilhá-las com amigos para os convidar a utilizar a aplicação.

Para criar um link curto, você precisa de:

  • Um link singular que leva ao download do seu aplicativo (consulte as Perguntas frequentes sobre links singulares).
  • Você pode adicionar qualquer parâmetro que desejar ao link dinamicamente (consulte Parâmetros de link de rastreamento para obter a lista de opções).
  • Se quiser rastrear as novas instalações de aplicativos até o usuário que compartilhou o link, você deverá fornecer o Nome do referenciador e a ID do referenciador do usuário que fez a referência.

Use o método createReferrerShortLink para criar um link curto, como no exemplo abaixo.

void callback(string shortLinkURL, string error){
    // Adicione sua lógica de compartilhamento aqui se shortLinkURL não for nulo 
// Se houver um erro, adicione lógica para tentar novamente/abortar/modificar os parâmetros
// passados para a função, com base na causa do erro } SingularSDK.createReferrerShortLink( "https://sample.sng.link/B4tbm/v8fp?_dl=https%3A%2F%2Fabc.com", "John Doe", // Nome do referenciador "342", // ID do referenciador new Dictionary<string, string>() { // um objeto Dictionary que contém todos os parâmetros que você deseja adicionar {"channel", "sms"} }, callback );

4.2. Adicionando suporte à atribuição de receita de anúncios

O Singular está integrado a plataformas de mediação como Google AdMob, AppLovin, Unity LevelPlay (IronSource) e TradPlus para atribuição de receita de anúncios. A Singular também suporta outras plataformas de mediação através da nossa integração genérica de SDK de receita de anúncios.

Pode obter dados de atribuição de receitas de anúncios da sua plataforma de mediação adicionando um fragmento de código à sua integração do SDK do Singular. Isto também lhe permite obter dados de receitas de anúncios para campanhas SKAdNetwork.

A obtenção da receita de anúncios ao nível do utilizador a partir da sua plataforma de mediação permite que o Singular envie a receita de anúncios atribuída de volta às fontes de media que podem aceitar estes dados para executar campanhas AdROAS.

Consulte as instruções e os trechos de código para a implementação do SDK[AQUI].

4.3. Acompanhamento de desinstalações

Nota: O rastreamento de desinstalação está disponível apenas para clientes Enterprise.

Rastreamento de desinstalação do Android

Para ativar o rastreamento de desinstalação para seu aplicativo Android, primeiro configure o aplicativo na plataforma Singular conforme detalhado em Configuração do rastreamento de desinstalação. Em seguida, siga as instruções abaixo.

Observação: o Google descontinuou as APIs do GCM em abril de 2018. Use o FCM para rastreamento de desinstalação.

Como ativar o rastreamento de desinstalação usando o Firebase Cloud Messaging (FCM):

1. Integrar com o FCM:

Para rastrear desinstalações, você pode usar os serviços da plataforma Firebase Cloud Messaging (FCM). Se você ainda não estiver usando o FCM, siga as instruções do Google sobre como Configurar um aplicativo cliente do Firebase Cloud Messaging no Android.

Requisitos do FCM(fonte)

Os clientes FCM requerem dispositivos Android 4.1 ou superior com o aplicativo Google Play Store instalado ou um emulador executando o Android 4.1 com APIs do Google. Tenha em atenção que não está limitado a implementar as suas aplicações Android através da Google Play Store.

Os utilizadores/dispositivos que não estejam a executar versões suportadas do Android não estarão disponíveis para o rastreio de desinstalação Singular.

2. Atualizar o arquivo AndroidManifest.xml:

Actualize o seu ficheiro AndroidManifest.xml para adicionar o filtro de intenção necessário para a sua aplicação (substitua MyFirebaseMessagingService pela sua classe que implementa o Serviço Firebase):

<service android:name=".java.MyFirebaseMessagingService" android:exported="false">
  <intent-filter>
    <action android:name="com.google.firebase.MESSAGING_EVENT" />
  </intent-filter> 
</service>

3. Registar e enviar o token de dispositivo FCM:

Depois de recuperar o token FCM, passe-o como parâmetro para o método 'RegisterTokenForUninstall':

SingularSDK.RegisterTokenForUninstall(String fcmDeviceToken);

O método 'RegisterTokenForUninstall' deve ser chamado antes dométodo 'SingularSDK.InitializeSingularSDK()'.

Controlo de desinstalação do iOS

O rastreamento de desinstalação no iOS é baseado na tecnologia de notificação push da Apple. Se a sua aplicação não suportar notificações push, consulte o guia da Apple. Se a sua aplicação já suporta notificações push, tem de passar o token de dispositivo devolvido pelo APNS utilizando o método RegisterTokenForUninstall depois de o SDK ser inicializado.

MétodoSingularSDK.RegisterTokenForUninstall
Descrição Passa o token de dispositivo retornado do APNS. O token APNS é normalmente um dado binário na forma nativa, mas deve ser passado como uma cadeia de caracteres.
Assinatura
public static void RegisterTokenForUninstall
(string APNSToken)
Exemplo de uso
// passar o token APNS como uma string hexadecimal 
  SingularSDK.RegisterTokenForUninstall("ba85ab31a7c7
f5c2f012587f29fb0e596d4b67e7b7b2838fa1a8582c1f7dbdee");

4.4. Adicionando propriedades globais

A cada sessão e evento enviado pelo aplicativo, o Singular SDK permite definir propriedades adicionais personalizadas para enviar aos servidores Singular. Essas propriedades podem representar qualquer informação que você queira sobre o usuário, o modo do aplicativo, o status ou qualquer outra coisa. Depois de definir essas propriedades, elas ficam disponíveis como dimensões em seus relatórios e você pode usá-las para dividir seus dados.

Por exemplo, se tiver uma aplicação de jogos, pode definir uma propriedade chamada "Nível" e defini-la inicialmente como "0". Qualquer sessão e evento enviado da aplicação será enviado com "Nível": "0". Quando o utilizador subir de nível, a propriedade é reposta a "1" e assim sucessivamente. Pode então obter os seus relatórios, incluindo sessões, contagens de eventos e dados de receitas, repartidos por nível de utilizador.

  • Pode definir até 5 propriedades globais.
  • Estas propriedades persistem entre execuções da aplicação (com o valor mais recente que lhes atribuiu) até que as desfaça ou o utilizador desinstale a aplicação.
  • Cada nome e valor de propriedade pode ter até 200 caracteres. Se passar um nome ou valor de propriedade mais longo, este será truncado para 200 caracteres.
  • As propriedades globais estão acessíveis e disponíveis em exportações e postbacks ao nível do utilizador. No futuro, será adicionado o suporte a relatórios agregados. Informe seu gerente de sucesso do cliente Singular se tiver alguma dúvida ou se estiver interessado em atualizações do suporte a propriedades globais!

Definindo propriedades globais antes da inicialização

É possível usar o método SetGlobalProperty para definir propriedades globais através do SingularSDK antes de inicializar o SDK. Se quiser que suas propriedades globais sejam incluídas na sessão, desative o sinalizador 'Initialize On awake'.

Como as propriedades globais e seus valores persistem entre as execuções do aplicativo, a propriedade que você está definindo pode já estar definida com um valor diferente. Use o parâmetro overrideExisting para informar ao SDK se deve substituir uma propriedade existente pelo novo valor.

Definir propriedades globais após a inicialização

É possível usar os seguintes métodos para definir, cancelar a definição e recuperar propriedades globais a qualquer momento durante a execução do aplicativo.

SingularSDK.SetGlobalProperty Método
Descrição

Define uma propriedade global para um determinado valor.

Notas:

  • Se a propriedade ainda não existir e já existirem 5 outras propriedades globais, ela não será adicionada.
  • Se a propriedade já tiver sido definida, o parâmetro overrideExisting determina se o valor existente será substituído.
  • O método devolve true se a propriedade tiver sido definida com êxito ou false caso contrário.
Assinatura public static bool SetGlobalProperty(string key, string value, bool overrideExisting)
Exemplo de utilização
bool result = SingularSDK.SetGlobalProperty("key", "value", false);
Método SingularSDK.GetGlobalProperties
Descrição Obtém todas as propriedades globais e os seus valores actuais como um mapa.
Assinatura public static Dictionary<string, string> GetGlobalProperties()
Exemplo de utilização
Dictionary<string, string> props = SingularSDK.GetGlobalProperties();
Método SingularSDK.UnsetGlobalProperty
Descrição Remove uma propriedade global.
Assinatura public static void UnsetGlobalProperty(string key)
Exemplo de utilização
SingularSDK.UnsetGlobalProperty(“test_key”);
Método SingularSDK.ClearGlobalProperties
Descrição Remove todas as propriedades globais.
Assinatura public static void ClearGlobalProperties()
Exemplo de utilização
SingularSDK.clearGlobalProperties();

4.5. Coletando o referenciador de instalação em dispositivos Android mais antigos

No Android, o referenciador de instalação é a ferramenta mais precisa da Singular para determinar a atribuição e ajudar a Singular a detetar e analisar tentativas de fraude. É um identificador fornecido pela Google Play Store que aponta para o anúncio no qual o usuário clicou antes de instalar o aplicativo.

Em dispositivos com a versão mais recente da Google Play Store, o SDK da Singular coleta automaticamente o valor do referenciador de instalação (já que a Singular está integrada à API de referenciador mais recente da Google Play).

Para coletar o referenciador de instalação em dispositivos mais antigos, siga as instruções no guia do SDK do Android.

5. Conformidade com as leis de privacidade de dados

5.1. Limitar a partilha de dados

A Singular fornece uma funcionalidade de proteção da privacidade para o ajudar a cooperar com quaisquer parceiros que possam estar em conformidade com as leis de privacidade do consumidor, como o GDPR e o CCPA(California Consumer Privacy Act). Estes parceiros pretendem ser notificados se o utilizador final tiver consentido a partilha das suas informações privadas.

Limitar a partilha de dados

Se você implementou uma maneira de pedir o consentimento dos usuários para compartilhar suas informações, use o método limitDataSharing para notificar a Singular sobre a escolha do usuário:

  • Utilize limitDataSharing:NO para indicar que o utilizador consentiu (optou por participar) na partilha das suas informações.
  • Utilize limitDataSharing:YES se o utilizador não deu o seu consentimento.

A Singular utiliza LimitDataSharing em"Postbacks de privacidade do utilizador" e transmite esta informação a parceiros que a exigem para cumprir os regulamentos relevantes. Consulte"Privacidade do utilizador e Limitar partilha de dados" para obter mais informações.

Nota: O uso do método é opcional, mas o parceiro pode compartilhar informações de atribuição com a Singular somente se for especificamente notificado de que o usuário optou por isso.

Método SingularSDK.LimitDataSharing
Assinatura SingularSDK.LimitDataSharing(boolshouldLimitDataSharing)
Descrição Notifique Singular sobre o consentimento do usuário (opt-in) para compartilhar dados privados. O método Limitar compartilhamento de dados oferece uma opção para controlar se o seu aplicativo envia dados do usuário a terceiros. Isso é útil se você quiser restringir o compartilhamento de dados com base nas preferências do usuário ou nos requisitos de privacidade.
Exemplo de utilização
// O usuário optou por compartilhar dados
SingularSDK.LimitDataSharing(false);

5.2. Métodos adicionais para conformidade com o GDPR

O Singular SDK fornece vários métodos para ajudá-lo a cumprir as políticas do GDPR e permitir que a Singular saiba sobre o consentimento ou não consentimento do usuário para rastreamento.

Método SingularSDK.TrackingOptIn
Descrição Notificar a Singular sobre o consentimento do usuário (opt-in) para rastreamento. O método TrackingOptIn() é usado para enviar um evento “gdpr” para os servidores da Singular. Se você não chamar esse método, o aplicativo continuará a rastrear os usuários como se eles tivessem dado consentimento, mas não os marcará especificamente como opt-in do GDPR. Se o seu aplicativo precisar estar em conformidade com o GDPR (Regulamento Geral de Proteção de Dados), você deverá chamar essa função para garantir que o consentimento do usuário seja registrado corretamente.
Exemplo de uso
SingularSDK.TrackingOptIn();
Método SingularSDK.StopAllTracking
Descrição Interrompe todas as atividades de rastreamento para este usuário neste aplicativo.
Nota: Este método desactiva efetivamente o SDK, mesmo depois de a aplicação ser reiniciada (o estado é persistente)! A única forma de voltar a ativar o rastreio é chamar resumeAllTracking().
Exemplo de utilização
SingularSDK.StopAllTracking();
Método SingularSDK.ResumeAllTracking
Descrição Retoma a monitorização para este utilizador nesta aplicação.
Exemplo de utilização
SingularSDK.ResumeAllTracking();
Método SingularSDK.IsAllTrackingStopped
Descrição Verifica o estado do rastreio para este utilizador nesta aplicação. Devolve true se a localização tiver sido interrompida utilizando StopAllTracking() e não tiver sido retomada.
Exemplo de utilização
SingularSDK.IsAllTrackingStopped();