NAV
shell
  • Introdução
  • Soluções híbridas
  • Integração nativa
  • Implementação
  • O objeto DeviceScan
  • Permissões
  • Coleta de informações
  • Introdução

    Bem vindo ao manual de integração do Device Scan Android da Zaig! Você deve utilizar o nosso SDK para coletar informações do celular e do comportamento do usuário em seu aplicativo e assim melhorar a assertividade das decisões.

    Ao lado, você pode observar uma implementação de SDK utilizando Java. Com isso você possui exemplos para poder adequar ao caso de uso da sua aplicação.

    Problemas?

    Nós não somos uma companhia que se esconde atrás de uma API! Entre em contato com o nosso suporte e nós responderemos o mais rápido possível. Fique à vontade para nos ligar caso deseje uma resposta rápida!

    Adoramos Feedback

    Mesmo que você já tenha resolvido o seu problema ou que ele seja muito simples (Até mesmo um typo ou uma organização inadequada que você já entendeu), envie-nos um e-mail, assim nós tornamos a documentação cada vez mais prática e a próxima pessoa não vai precisar sofrer as dores que você sofreu!

    Ambientes

    Possuímos dois ambientes para os nossos clientes. A seleção é realizada por meio de enumerador repassado no construtor da SDK, no momento, os seguintes ambientes estão disponíveis:

    Soluções híbridas

    Além da integração nativa em Java, nossos SDKs são compatíveis com: Flutter, Ionic Cordova, Capacitor, React Native entre outras. Atualmente nossos SDKs híbridos estão documentados em um repositório privado. Caso tenha interesse nestas integrações, entre em contato com nosso suporte para liberarmos acesso.

    Integração nativa

    Para importar nossas SDKs, é necessário realizar alteração no build.gradle de Projeto e de Aplicativo.

    Adicionando ao Projeto

    Adicione o endereço de nosso repositório maven no build.gradle do projeto (no Android Studio este arquivo aparece como: "Project: {nome_do_projeto}"), conforme exemplo abaixo.

    buildscript {
        ...
    }
    
    allprojects {
        repositories {
            ...
            maven { url 'https://sdks.zaig.com.br/' }
        }
    }
    

    Adicionando ao Aplicativo

    Após isso, adicione a biblioteca que você pretende importar em seu build.gradle do app (no Android Studio este arquivo aparece como: "Module: {nome_do_projeto}.app"), incluindo a dependência apresentada abaixo.

    dependencies {
        ...
        implementation 'com.zaig.android:devicescan:1.2.9'
    }
    

    Arquivo Manifest

    Para utilizar a SDK você deve adicionar a seguinte configuração ao AndroidManifest da sua aplicação:

    <meta-data
                android:name="com.google.android.gms.ads.AD_MANAGER_APP"
                android:value="true"/>
    

    Você deve adicionar também, ao menos a permissão de internet, que é utilizada para enviar os dados coletados para os servidores da Zaig.

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

    A permissão deverá ser alterada de acordo com a necessidade.

    Implementação

    package com.example.zaig_device_scan_sdk_test_app;
    
    import androidx.appcompat.app.AppCompatActivity;
    
    import android.os.Bundle;
    import android.util.Log;
    import android.view.View;
    
    import com.zaig.android.devicescan.DeviceScan;
    import com.zaig.android.devicescan.DeviceScanNotifier;
    
    import java.util.ArrayList;
    
    public class MainActivity extends AppCompatActivity {
        private DeviceScan deviceScan;
        private DeviceScanNotifier deviceScanNotifier;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            deviceScanNotifier = new DeviceScanNotifier(this);
        }
    
        public void sendDeviceScan(View view) {
            try{
                deviceScan = new Scan.Builder(this.getApplicationContext())
                    .setMobileToken(this.mobileToken)
                    .setSessionId(this.sessionId)
                    .setNotifier(this.deviceScanNotifier)
                    .setSandboxEnvironment()
                    .build();
            }catch (Exception ex) {
                Log.e("DeviceScan Error", "There was an error collecting DeviceScan data: " + ex.toString());
            }
        }
    
        @Override
        public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults){
            try{
                deviceScan.collectData(this.documentNumber,
                        this.eventId,
                        this.eventType);
            }catch (Exception ex) {
                Log.e("DeviceScan Error", "There was an error collecting DeviceScan data: " + ex.toString());
            }
        }
    
    
        private class ScanNotifier implements DeviceScanNotifier {
            AppCompatActivity activity;
            public ScanNotifier (AppCompatActivity myActivity){
                // Este método é customizável e pode ser utilizado para se armazenar a Activity, utilizada para operar a UI
                this.activity = myActivity;
            }
    
            public void onSuccess(){
                Log.i("DeviceScan", "DeviceScan successfully submitted");
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        // Adicionar aqui quaisquer mudanças de UI que sejam necessárias após o envio com sucesso do device scan
                    }
                });
            }
    
            public void onError(){
                Log.i("DeviceScan", "DeviceScan submission failed");
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        // Adicionar aqui quaisquer mudanças de UI que sejam necessárias após o envio com sucesso do device scan
                    }
                });
            }
        }
    }
    
    

    Para utilizar a SDK do device scan android, os seguintes passos são necessários:

    O objeto DeviceScan

    Para utilizar a DeviceScanSDK, é necessário instanciar a classe DeviceScan que possui os seguintes parâmetros no construtor:

    Parâmetro Função Obrigatório
    currentContext O contexto da aplicação, utilizado no acesso a diversos dados necessários obrigatório Sim.
    .setMobileToken(this.mobileToken) Chave do cliente que identifica que os dados coletados são provenientes do seu aplicativo. Caso ainda não tenha recebido o seu mobile-token, entre em contato com o suporte. Sim.
    .setSessionId(this.sessionId) Chave que identifica a sessão da qual os dados coletados são provenientes. Sim.
    .setNotifier(this.deviceScanNotifier) Instância da classe DeviceScanNotifier. Funciona como um callback retornando a situação do envio dos dados para nossos servidores como sucesso ou falha. Não.
    .setSandboxEnvironment() Caso este parâmetro seja utilizado no construtor, a biblioteca será configurada para enviar os dados ao ambiente de sandbox. Caso ausente, as requisições são enviadas para o ambiente production. Não.

    Permissões

    A SDK coleta dados do dispositivo do usuário conforme as permissões que estão disponíveis no momento da coleta: conforme mais permissões seu aplicativo requerir e o usuário disponibilizar, mais informações são coletadas do dispositivo do usuário.

    Permissões utilizadas pela SDK

    Na versão atual da SDK, as seguintes permissões são utilizadas caso estejam disponíveis:

    Permissão Função Obrigatória
    INTERNET Obrigatória, para envio das informações aos servidores da Zaig. Sim.
    BLUETOOTH Captura de informações do hardware de Bluetooth. Não.
    READ_CONTACTS Leitura da agenda de contatos. Não.
    ACCESS_COARSE_LOCATION Acesso a informações de rede (Antena, operadora...) e à localização por este meio (Menos preciso). Não.
    ACCESS_FINE_LOCATION Acesso à localização por meio de GPS (Mais preciso). Não.
    READ_PHONE_STATE Informações de Rede, SIM, Imei e outros aspectos de telefonia. Não.
    QUERY_ALL_PACKAGES Informações de aplicativos instalados no dispositivo. Necessária para devices Android 11 em diante. Não.

    Coleta de informações

    Para disparar a coleta e o envio de informações, é necessário (após coletar as permissões do usuário) chamar o método collectData. O método, além de capturar as informações do dispositivo, tem como objetivo mapear a jornada do cliente dentro da aplicação. É por esta razão que o método também aceita os campos eventId e eventType. O método possui os seguintes parâmetros:

    nome tipo descrição
    documentNumber String O número do documento do usuário, caso disponível. (CPF/ CNPJ sem pontos, traços e barra)
    eventId String Um identificador do evento sendo reportado
    eventType String Um enumerador que define o tipo de evento sendo reportado - É pedido cuidado para que eventos muito similares seja reportados com o mesmo enumerador, a fim de que inteligência possa ser construída sobre esses dados.

    Após a chamada para coleta dos dados, um dos dois métodos da instância de DeviceScanNotifier passada no construtor da classe DeviceScan será chamado: onSuccess caso tudo corra conforme o esperado ou onError em caso de erro.