Android SDK (old)

ūüďė

Estamos atualizando esta documentação. A versão atual é: v3.3.18.

Por favor, consulte este link para acessar a documentação da SDK em Android Java ou este link para acessar a documentação da SDK em Android Kotlin.

Após realizar a configuração do serviço Firebase podemos começar a implementar a SDK da Inngage em aplicativos Android.
A nossa SDK Android √© respons√°vel por integrar as aplica√ß√Ķes mobile ao backend de notifica√ß√Ķes inteligentes da Inngage, para a gest√£o do cadastro de dispositivos, configura√ß√£o de campos customiz√°veis, geofences, processamento de push notifications e muito mais.

1 - Configurando o Google Messaging Services & Firebase Services no seu projeto

Uma série de exemplos passo-a-passo que informam o que você deve executar para ter um ambiente de desenvolvimento em execução.

Antes de implementar a biblioteca, dentro do seu projeto no Android Studio, abra o arquivo build.gradle (Module: app) e adicione as seguintes dependências ao seu projeto.

Implemente essas dependências no arquivo build.gradle (Module: app):

apply plugin: 'com.android.application'
// Adicione esta linha
apply plugin: 'com.google.gms.google-services'

dependencies {
  // Importe o Firebase BoM
  implementation platform('com.google.firebase:firebase-bom:27.1.0')
  // Adicione a dependência para o Firebase SDK para Google Analytics
  // Ao usar o BoM, n√£o especifique vers√Ķes nas depend√™ncias do Firebase
  implementation 'com.google.firebase:firebase-analytics'
  // Adicione as dependências para qualquer outro produto Firebase desejado
  implementation 'androidx.work:work-runtime:2.8.0'
  // Adicione a dependência para executar o WorkManager para o serviço de registro
  // de usu√°rio da Inngage.
}
apply plugin: 'com.android.application'
// Adicione esta linha
apply plugin: 'com.google.gms.google-services'

dependencies {
  // Importe o Firebase BoM
  implementation platform('com.google.firebase:firebase-bom:27.1.0')
  // Adicione a dependência para o Firebase SDK para Google Analytics
  // Ao usar o BoM, n√£o especifique vers√Ķes nas depend√™ncias do Firebase
  implementation 'com.google.firebase:firebase-analytics'
  // Adicione as dependências para qualquer outro produto Firebase desejado
  implementation 'androidx.work:work-runtime-ktx:2.8.0'
  // Adicione a dependência do WorkManager para funcionalidade do método de registro
  // de usu√°rio na Inngage.
}

1.2 - Ainda no arquivo build.gradle (Module: app), adicione no final do arquivo o seguinte plugin:

apply plugin: 'com.google.gms.google-services'

Em build.gradle (Project: AppName) , Adicione isso :

dependencies {
    // Add this line
    classpath 'com.google.gms:google-services:4.3.2'
  }

2 - Importanção da SDK Inngage (inngage-lib)

Em build.gradle (Module: app) implemente nossa dependências

dependencies {      
       implementation 'com.github.inngage:inngage-lib:3.3.18'
}

Em build.gradle (Project: AppName) adicione o link do repositório

buildscript{
  repositories{
              // adicione somente esta linha dentro de "repositories"
              maven { url 'https://jitpack.io' }
        
  }
}

allprojects {
      repositories {
              // adicione somente esta linha dentro deste outro "repositories"
              maven { url 'https://jitpack.io' }
      }
}

ūüöß

Em alguns casos, é necessário fazer refresh nas dependências do projeto. Clique em "Sync"/"Sincronizar" na IDE ou execute o comando:

./gradlew --refresh-dependencies para Mac
gradle --refresh-dependencies para Windows

3 - Adicionando InngageConstants Interface

Visando desacoplar as constantes utilizadas em nossa integração, adicione uma nova interface ao seu projeto denominada "InngageConstants"

Crie o arquivo como uma interface "InngageConstants" e adicione o seguinte código

interface InngageConstants {

    String inngageAppToken = "APP_TOKEN"; //application token retirado da plataforma Inngage
    String inngageEnvironment = "prod";
    String googleMessageProvider = "FCM";
  	String email = "[email protected]";// email do cliente			
  	String phoneNumber = "5511999998888";//telefone do cliente

}

4 - Configuração na Activity de abertura do aplicativo

Na activity configurada para ser a porta de entrada do seu aplicativo, adicione o código abaixo:

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_splash);

        // Chame o m√©todo startHandleNotifications() para capturar as notifica√ß√Ķes recebidas
        InngageIntentService.startHandleNotifications(this, getIntent());

        new Handler().postDelayed(() -> startActivity(new Intent(getApplicationContext(), MainActivity.class)), 2000);
    }

Caso não saiba como identificar a activity inicial do seu projeto, basta procurar no seu arquivo AndroidManifest pela activity que tenha a seguinte configuração:

<activity
            android:name=".SplashActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

5 - Registrando o usu√°rio na plataforma Inngage

Este código deve ser colocado na sua Activity que é exibida logo após a tela de abertura, normalmente é chamada de MainActivity

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        // Para fazer a integração padrão utilize o método handleSubscription()
        handleSubscription();

    }

    /**
     * Método responsável por fazer a integração padrão (sem campos customizados)
     */


		private void handleSubscription() {
        
        String myInngageAppToken = InngageConstants.inngageAppToken;
        String myInngageEnvironment = InngageConstants.inngageEnvironment;
        String myGoogleMessageProvider = InngageConstants.googleMessageProvider;

        // caso o app possua campos customizáveis, descomente estas linhas, cheque-os na plataforma, substitua-os abaixo e adicione os valores de acordo com a sua aplicação
//        JSONObject jsonCustomField = new JSONObject();
//
//        try {
//
//            jsonCustomField.put("nome", user.name);
//            jsonCustomField.put("email", user.email);
//            jsonCustomField.put("telefone", "");
//            jsonCustomField.put("dataRegistro", "");
//            jsonCustomField.put("dataNascimento", "");
//
//
//      } catch (JSONException e) {
//
//            e.printStackTrace();
//      }
//        // caso possua campos customiz√°veis, adicione o "jsonCustomField" como na chamada abaixo
//        InngageIntentService.startInit(
//                this,
//                myInngageAppToken,
//                "Identifier", //Seu identificador
//                myInngageEnvironment,
//                myGoogleMessageProvider,
//    jsonCustomField);

        // caso não possua campos customizáveis até então:
        InngageService.subscribe(
                this,
                myInngageAppToken,
                myInngageEnvironment,
                myGoogleMessageProvider,
        				email,
          			phoneNumber, 
          			"userIdentifier", //Seu identificador
        );


        InngageUtils.handleNotification(this, getIntent(), myInngageAppToken, myInngageEnvironment);
}

6. Registro de eventos

A SDK permite ao desenvolvedor que est√° integrando a SDK, enviar eventos customizados.

String appToken = "MyAppToken";
   String identifier = "[email protected]";
   String eventName = "compra";
   double conversionValue = 1090.00;
   boolean conversionEvent = true;
   String conversionNotId = "2314klbkf41bsgav4hg12ab24v1h41";
   JSONObject eventValues = new JSONObject();
   jsonCustomField.put("produto", "Bola de tenis");
   jsonCustomField.put("valor", "40");

InngageIntentService.sendEvent(
               appToken,
               identifier,
               eventName,
               conversionValue,
               conversionEvent,
               conversionNotId,
               eventValues
          			
        				);

Temos 3 valores que são obrigatórios para podermos ter uma boa performance e integração com Inngage

eventName: Define o nome que voce ira enviar para voce poder identificar de forma r√°pida na plataforma
appToken: Precisamos validar suas credenciais.
Identifier ou registration (Firebase token): usamos pra identificar o usu√°rio, pelo menos uma deve ser informada;

Você também pode adicionar valores avançados para esse evento,
eventValues: Array com chave e valor com dados que ser√£o anexados ao evento.

A API de eventos também pode receber um evento de conversão, para isso existem os campos:
conversion_event: True
conversion_value: Valor monet√°rio da convers√£o (Padr√£o FLOAT 11000.00)
conversion_notid: Opção para enviar o ID Único da Notificação da Inngage (NOTID), que foi recebido pelo app no momento do Push, para assim atribuir uma conversão a determinado Push

7 - Configurando o Arquivo AndroidManifest.xml

Depois de implementar a biblioteca, o arquivo de manifesto precisa de algumas permiss√Ķes e servi√ßos a serem adicionados.

Adicionando Permiss√Ķes (antes da tag '<application' do AndroidManifest.xml) :

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

Antes de fechar a tag </ application>, adicione essas linhas de código:

ūüöß

√ćcone de notifica√ß√£o !

√Č obrigat√≥rio colocar o √≠cone de notifica√ß√£o no reposit√≥rio drawable sob o nome ic_notification como no exemplo abaixo:

android:resource="@drawable/ic_notification"

<service android:name="br.com.inngage.sdk.PushMessagingService">
         <intent-filter>
         <action android:name="com.google.firebase.MESSAGING_EVENT"/>
         </intent-filter>
</service>

<meta-data
         android:name="com.google.firebase.messaging.default_notification_icon"
         android:resource="@drawable/ic_notification" />

8 - Configuração abertura do Dialog

Ap√≥s finalizar toda implementa√ß√£o da SDK Inngage e demais depend√™ncias do Android, finalizaremos configurando na plataforma Inngage os par√Ęmetros do seu aplicativo. Nesta sess√£o deveremos informar o nome do pacote (br.com.suaempresa.seuapp) e a classe que far√° o recebimento do Push, no caso dessa implementa√ß√£o MainActivity.

Pronto para começar

Execute seu projeto e registre seu dispositivo:
O registro de um dispositivo de teste permitir√° que voc√™ teste suas mensagens, altera√ß√Ķes de vari√°veis em um dispositivo real.

Para registrar seu dispositivo, primeiro verifique se voc√™ est√° em ambiente de Desenvolvimento. Acesse o App gerado e abra a aba Todo P√ļblico em sua conta da Inngage, o Dispositivo deve estar registrado. Voc√™ pode olhar todas suas informa√ß√Ķes em vari√°veis clicando no √≠cone (Usu√°rio) e enviar uma notifica√ß√£o clicando no √≠cone (Avi√£o).

Montamos um cenário de testes com os principais pontos que devem ser testados para validar a integração da SDK. Você pode acessa-lo nesse link

ūüďė

Confira nosso projeto Sample

Para ajudar você na integração com a SDK da Inngage, disponibilizamos para você um projeto sample, utilizado na homologação da SDK.

Você pode acessa-lo através desse link