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:
new SingularInstallReceiver().onReceive(context, intent);
Por exemplo, se o recetor existente se chama MyCustomInstallReceiver, deve ter o seguinte aspeto:
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:
<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:
// 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 |
|
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 |
|
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
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.
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:
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.
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:
<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.
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 |
|