Opções avançadas

Documento

Opções avançadas

Recolher o referenciador de instalação em dispositivos mais antigos

Nota: O Google está a descontinuar a transmissão da intenção install_referrer. Veja: Ainda usa o InstallBroadcast? Mude para a API Play Referrer até 1º de março de 2020

O install referrer é a ferramenta mais precisa da Singular para determinar a atribuição, além de 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 que possuem a versão mais recente da Google Play Store, o SDK da Singular coleta o valor do referenciador de instalação automaticamente (já que a Singular está integrada à API de referenciador da Google Play mais recente).

Para coletar o referenciador de instalação em dispositivos mais antigos:

Se você tiver um recetor de referenciador de instalação existente:

É provável que seu aplicativo já tenha um BroadcastReceiver que recebe o INSTALL_REFERRER do Android.

Nesse caso, basta aceder ao método onReceive do BroadcastReceiver e adicionar a seguinte linha:

java
new SingularInstallReceiver().onReceive(context, intent);

Por exemplo, se o recetor existente se chama MyCustomInstallReceiver, deve ter o seguinte aspeto:

java
public class MyCustomInstallReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        // Pass install referrer information on to Singular

        new SingularInstallReceiver().onReceive(context, intent);
        // ...

    }
}

Se não houver outro recetor de referência de instalação:

Se você não tiver nenhum recetor de referência de instalação em seu aplicativo, poderá permitir que o Singular SDK registre o único recetor simplesmente adicionando o seguinte à sua tag <application> em seu arquivo de manifesto:

xml
<receiver android:exported="true" android:name="com.singular.sdk.SingularInstallReceiver">
    <intent-filter>
        <action android:name="com.android.vending.INSTALL_REFERRER" />
    </intent-filter>
</receiver>

Gerenciando sessões manualmente

Para Android API 14 (Ice Cream Sandwich) e superior, o Singular SDK pode lidar com o gerenciamento de sessões automaticamente. Se a minSdkVersion do seu aplicativo for 14 ou superior, nenhuma configuração adicional será necessária para o gerenciamento de sessão.

Modificando o tempo limite da sessão

Por padrão, se o aplicativo for executado em segundo plano por 60 segundos ou mais antes de retornar ao primeiro plano, o SDK registrará uma nova sessão.

Para alterar o valor do tempo limite, use withSessionTimeoutInSec(<timeout in seconds>) em SingularConfig antes de inicializar o SDK.

Por exemplo:

java
// Set the session timeout to 120 seconds

SingularConfig config = new SingularConfig("SDK KEY", "SDK SECRET")
.withSessionTimeoutInSec(120); 

Gerenciamento manual de sessão

Se a minSdkVersion do seu aplicativo for inferior a 14, você precisará gerenciar as sessões manualmente chamando os dois métodos de tratamento de sessão do SDK do Singular, onActivityPaused e onActivityResumed, de cada uma de suas atividades.

Nota: Se você tiver uma classe de atividade base comum personalizada da qual todas as outras atividades são derivadas, você pode colocar essas chamadas para onActivityResumed e onActivityPaused nos métodos "onResume e onPause" da atividade comum.

Método Singular.onActivityResumed
Descrição Chame este método dentro do método onResume da atividade para gerir a sessão Singular.
Assinatura public static void onActivityResumed()
Exemplo de uso
java
@Override
protected void onResume() {
    super.onResume();
    Singular.onActivityResumed();
    .... //other code if any
}
Método Singular.onActivityPaused
Descrição Chama este método dentro do método onPause da atividade para gerir a sessão Singular.
Assinatura public static void onActivityPaused()
Exemplo de uso
java
@Override
protected void onPause() {
    super.onPause();
    Singular.onActivityPaused();
    .... //other code if any
}

Usando a interface JavaScript

O Singular fornece uma interface JavaScript que pode ser usada para chamar o Singular de dentro do código javaScript em seu aplicativo.

Por exemplo, se você configurar a interface JavaScript, poderá enviar eventos para o Singular a partir do código JavaScript da seguinte forma:

Exemplo de evento

javascript
SingularInterface.event('event');
SingularInterface.event('test',
    JSON.stringify({"a1":"bar", "a2":"boo", "a3":"baz"}));

A interface suporta os seguintes métodos do SDK:

  • setCustomUserID
  • unsetCustomUserID
  • evento
  • receita

Para ativar a interface JavaScript, adicione as seguintes linhas de código à sua atividade principal, em que "myWebView" é o nome da sua visualização Web.

java
SingularJSInterface singularJSInterfaceInstance = new SingularJSInterface(this);
singularJSInterfaceInstance.setWebViewId(R.id.webview);
myWebView.addjavascriptInterface(singularJSInterfaceInstance, "SingularInterface");

Observações:

  • Se você tiver mais de uma visualização da Web, faça isso para cada uma delas.
  • Recomendamos colocar o código no método onCreate do seu aplicativo.

O seu método onCreate pode ter o seguinte aspeto:

java
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    WebView myWebView = (WebView) this.findViewById(R.id.webview);
    WebSettings webSettings = myWebView.getSettings();
    webSettings.setjavaScriptEnabled(true);
    myWebView.loadUrl("file:///android_asset/index.html");

    SingularConfig config = new SingularConfig("SDK KEY", "SDK SECRET");
    Singular.init(this, config);
    SingularJSInterface singularJSInterfaceInstance = 
        new SingularJSInterface(this);
    singularJSInterfaceInstance.setWebViewId(R.id.webview);
    myWebView.addjavascriptInterface(singularJSInterfaceInstance,
        "SingularInterface");
}

Recolha do OAID (Open Advertising ID)

Nos países que não utilizam o Google Play, os dispositivos Android não têm um Google Advertising ID (GAID, também designado AIFA no Singular). Em vez disso, os dispositivos podem oferecer um identificador chamado OAID (Open Advertising Identifier) que pode ser utilizado para rastrear sessões e eventos provenientes do dispositivo.

O OAID é atualmente oferecido em dispositivos da Huawei e de marcas que pertencem à Mobile Security Alliance (MSA).

Para que a sua aplicação possa recolher o OAID, primeiro tem de integrar o SDK da MSA e o SDK do OAID da Huawei. É necessário integrar ambos os SDKs para poder recolher o OAID em todas as plataformas que o oferecem.

Em seguida, para dizer ao SDK Singular para usar o OAID para rastreamento, adicione uma chamada para withOAIDCollection no objeto de configuração antes de inicializar o Singular.

java
SingularConfig config = new SingularConfig("SDK KEY","SDK SECRET")
    .withOAIDCollection();
Singular.init(context, config);

O SDK do Singular detectará automaticamente se o dispositivo tem um OAID, bem como qual SDK OAID deve ser usado para coletar o identificador.


Coletando o número IMEI

Se a sua aplicação for oferecida em países que não utilizam o Google Play, os dispositivos não têm um ID de publicidade do Google. Neste caso, poderá querer recolher o IMEI (International Mobile Equipment Identity) do dispositivo.

Nota: Se utilizar o Google Play Services, não deve recolher o número IMEI porque é uma violação do contrato de serviço do Google Play.

Para recolher o número IMEI:

Adicione a permissão android.permission.READ_PHONE_STATE ao ficheiro AndroidManifest.xml da aplicação:

xml
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>

Adicione código como o seguinte para obter o número IMEI do dispositivo:

TelephonyManager telephonyManager = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);

String imei = null;

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
    imei = telephonyManager.getImei();
} else {
    imei = telephonyManager.getDeviceId();
}

Para enviar o número IMEI para o Singular, use um dos seguintes métodos:

Recomendado: Defina o número IMEI em SingularConfig usando withIMEI antes de inicializar o SDK do Singular, como no exemplo a seguir. Isso torna o número IMEI disponível para o Singular desde a primeira sessão.

java
SingularConfig config = new SingularConfig("SDK KEY","SDK SECRET")
  .withIMEI("537769845792516");
Singular.init(context, config);

Para definir o número IMEI em qualquer ponto do código após a inicialização do SDK, chame setIMEI.

Método Singular.setIMEI
Descrição Envia o número IMEI do dispositivo para a Singular.
Assinatura public void setIMEI(string IMEIString)
Exemplo de uso
java
Singular.setIMEI(IMEIString);