Integrar o SDK Android

Prev Next

Use o Xtremepush SDK para integrar seu app Android na plataforma

  1. No seu arquivo Application.java importe a biblioteca:

import ie.imobile.extremepush.PushConnector;
  1. No método onCreate do seu arquivo Application.java, você deve adicionar o seguinte:

public class YOUR_APPLICATION extends Application {
    public void onCreate() {
        super.onCreate();
...
        new PushConnector.Builder("XPUSH_APP_KEY", "GOOGLE_SENDER_ID")
            .create(this);
    }
public class YOUR_APPLICATION extends Application {
    public void onCreate() {
        super.onCreate();
...
        PushConnector.Builder("XPUSH_APP_KEY", "GOOGLE_SENDER_ID")
            .create(this);
    }

O comando para inicializar o PushConnector recebe os valores dos parâmetros no formato String. XPUSH_APP_KEY é a chave SDK fornecida ao adicionar o app à plataforma. GOOGLE_SENDER_ID é encontrado como parte das etapas para configurar as Notificações Push do Android. O ID do remetente também pode ser omitido se não for utilizado por notificações push.

  1. Caso seu projeto Xtremepush esteja provisionado na região dos EUA, adicione o seguinte código ao inicializar o PushConnector antes da chamada para .create(this):

    .setServerUrl("https://sdk.us.xtremepush.com")

  2. Caso seu projeto seja provisionado na Região dos EUA ou em uma nuvem privada, além de definir a URL do servidor, você também precisará implementar o Pin de Chave Pública. Para isso:

    1. a. Você pode usar o seguinte para recuperar a chave pública do Terminal:

      openssl s_client -connect <serverURL>:443 -servername <serverURL> </dev/null 2>/dev/null \
      | openssl x509 -pubkey -noout \
      | openssl pkey -pubin -outform DER \
      | xxd -p -c 256
    2. b. Então, ao inicializar XP no PushConnector.builder, use:

    new PushConnector.Builder(XPUSH_APP_KEY, GOOGLE_PROJECT_NUMBER)
            ...
            .setServerExpectedPublicKey(<THE PUBLIC KEY>)
            .create(this);

  3. Por fim, em cada uma de suas Atividades, inclua uma referência ao nosso objeto PushConnector:

    import static ie.imobile.extremepush.PushConnector.mPushConnector;

    Certifique-se de definir o ID do usuário

    Recomenda-se que, nesta fase, você use nosso método SDK para definir IDs de usuário, seguindo nosso guia dedicado para garantir que os dispositivos possam ser associados e direcionados em suas campanhas por seu próprio identificador único.

Orientação

Se você estiver lidando manualmente com mudanças de orientação e estiver sobrescrevendo o OnConfigurationChanged método, também será necessário adicionar outro callback PushConnector a cada atividade que substitua o OnConfigurationChanged método.

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    mPushConnector.onRotation(this);
}

Configuração do Proguard

Se você está usando o Proguard no seu app para minificar, otimizar, ofuscar etc., pode adicionar as seguintes configurações ao seu arquivo de configuração para garantir que o Xtremepush continue funcionando como esperado:

# Gson uses generic type information stored in a class file when working with fields. Proguard
# removes such information by default, so configure it to keep all of it.
-keepattributes Signature

# For using GSON @Expose annotation
-keepattributes *Annotation*

# Application classes that will be serialized/deserialized over Gson
#-keep class com.google.gson.examples.android.model.** { *; }
-keep class ie.imobile.extremepush.api.model.** { *; }

# Recommended settings for other dependencies
-keep class com.loopj.android.** { *; }
-keep interface com.loopj.android.** { *; }
-keepclassmembers class ** {
@com.squareup.otto.Subscribe public *;
@com.squareup.otto.Produce public *;
}

# Required for inapp and inbox functionality
-keepclassmembers class * {
 @android.webkit.JavascriptInterface <methods>;
}

# Required for inbox functionality
-keepattributes JavascriptInterface
-keep public class ie.imobile.extremepush.ui.InboxActivity$InboxInterface
-keep public class * implements ie.imobile.extremepush.ui.InboxActivity$InboxInterface
-keepclassmembers class ie.imobile.extremepush.ui.InboxActivity$InboxInterface {
 <methods>;
}

# Required if building your app with Android 23 or lower
-dontwarn ie.imobile.extremepush.ui.PopupDialog
-dontwarn ie.imobile.extremepush.ui.WebViewActivity

Recuperando seu ID Xtremepush

Se seu dispositivo estiver registrando com sucesso na plataforma, você deve conseguir recuperar seu ID Xtremepush. Isso pode ser feito chamando o getDeviceInfo() método no seu PushConnector da seguinte forma:

mPushConnector.getDeviceInfo()

Esse método retorna um mapa que contém o ID de registro de mensagens na nuvem do seu dispositivo e seu ID de dispositivo obtido do Xtremepush. Se seu dispositivo não recebeu um ID, então ele não foi registrado com sucesso e há um problema com sua integração.

Se você conseguir recuperar o ID, ele pode ser usado para identificar seu dispositivo na plataforma e enviar uma notificação push apenas para esse dispositivo.

Depuração

Se você estiver depurando seu app, pode ativar os logs de depuração do Xtremepush adicionando o seguinte ao PushConnector.builder:

.turnOnDebugLogs(true)

Os logs de depuração podem desacelerar seu app e devem ser desligados antes de lançar o app.

Excluindo certas atividades da conexão com o Xtremepush

Se você está integrando o Xtremepush em nível de aplicação, mas prefere que certos Atividades não criem um objeto PushConnector (por exemplo, você não quer que sua tela de abertura envie o onSessionStartEvent, quer que ele seja enviado na Atividade seguinte), pode usar o seguinte método:

PushConnector.addToExclusionList(ClassName.class.getSimpleName());