Introdução ao Vungle - SDK do Android v. 5

Use este artigo para integrar o SDK do Vungle para Android ou Amazon. A partir da v.5.3.0 do nosso SDK do Android, o Vungle é compatível com Amazon OS 5.4 e superior como uma plataforma. As etapas para a integração do SDK da Amazon são iguais às etapas para Android.

Conteúdo

Requisitos

  • Android 4.0 (Ice Cream Sandwich - API versão 14) ou superior
  • Java 1.7 - Para fins de compatibilidade com o Android 5.+, é necessário ter o JDK 7 no sistema de desenvolvimento
  • Java 1.8 - Para fins de compatibilidade com o Android 7.+, é necessário ter o JDK 8 no sistema de desenvolvimento

Passo 1. Inclua o SDK Vungle no seu projeto

O SDK Vungle está disponível de duas maneiras: como um AAR pelo Marven, ou baixando manualmente.

Opção 1. Inclua o SDK Vungle como um AAR pelo Marven

Abra o build.gradle no nível do projeto e adicione o URL marven na seção projeto todo.

allprojects {
    repositories {
        maven {
            url 'https://jitpack.io'
        }
    }
}

Abra o arquivo nível de aplicativo build.gradle do seu projeto e adicione as dependências de compilação na seção dependências.

dependencies {
    …
    compile 'com.github.vungle:vungle-android-sdk:5.3.0'
compile 'com.google.android.gms:play-services-basement:11.4.0'  //use version 11.0.1 and up only compile 'com.google.android.gms:play-services-location:11.4.0'  //use version 11.0.1 and up only
… }

Se você incluir o SDK Vungle pelo Maven, você pode pular o "Passo 2. Atualize AndroidManifest.xml."

Opção 2. Baixar o SDK Vungle e incluí-lo no seu aplicativo

Baixe o SDK Vungle, descompacte-o, vá para a pasta libs, copie todos os jars e adicione-os à sua biblioteca de projetos.

Screen_Shot_2017-10-05_at_2.51.15_PM.png

Abra o nível de projeto build.gradle e atualize a seção repositórios.

allprojects {
    repositories {
        jcenter()
    }
}

Abra o arquivo do nível do aplicativo build.gradle do seu aplicativo e adicione outras dependências na seção dependências.

android{
...
    packagingOptions{
        exclude 'META-INF/rxjava.properties'
    }
...
}

dependencies {
    …
    compile files('libs/adapter-rxjava-2.2.0.jar')
    compile files('libs/converter-gson-2.2.0.jar')
    compile files('libs/dagger-2.7.jar')
    compile files('libs/eventbus-2.2.1.jar')
    compile files('libs/gson-2.7.jar')
    compile files('libs/javax.inject-1.jar')
    compile files('libs/okhttp-3.6.0.jar')
    compile files('libs/okio-1.11.0.jar')
    compile files('libs/publisher-sdk-android-5.3.0.jar')
    compile files('libs/retrofit-2.2.0.jar')
    compile files('libs/rxjava-1.2.0.jar')

    compile 'com.google.android.gms:play-services-basement:11.4.0'  //use version 11.0.1 and up only
    compile 'com.google.android.gms:play-services-location:11.4.0'  //use version 11.0.1 and up only
    … 
}

Se você incluir o SDK Vungle manualmente, continue em "Passo 2. Atualize AndroidManifest.xml."

Passo 2. Atualize AndroidManifest.xml

Adicione as seguintes linhas ao seu AndroidManifest.xml, designando o nome de item do aplicativo do nome de classe do seu aplicativo para multimídia.

<!-- Required permissions for caching and ad operations to work -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="18" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

<!-- Optional permissions to enable better geo-targeting of ads (recommended) -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

<application
    android:name=".(YourApplicationName)"
    ...
<activity android:name="com.vungle.publisher.VideoFullScreenAdActivity"
android:configChanges="keyboardHidden|orientation|screenSize|screenLayout|smallestScreenSize"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"/>

<activity android:name="com.vungle.publisher.MraidFullScreenAdActivity"
android:configChanges="keyboardHidden|orientation|screenSize|screenLayout|smallestScreenSize"
android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"/>

<activity android:name="com.vungle.publisher.FlexViewAdActivity"
android:configChanges="keyboardHidden|orientation|screenSize|screenLayout|smallestScreenSize"
android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"/>
>

Passo 3. Inicialize o SDK do Vungle

Nota: Um posicionamento padrão é automaticamente criado para cada aplicativo. Você deve fornecer seu ID de referência de posicionamento neste passo de inicialização independente de se você planeja ou não aproveitar a funcionalidade de posicionamentos. Se você criar múltiplos posicionamentos, forneça todos os IDs de referência.

Inicialização do aplicativo

Inicialize o SDK Vungle Publisher na primeira atividade do seu aplicativo com os IDs de referência de posicionamento ativos que você deseja usar dentro do aplicativo. O SDK irá ser inicializado assincronamente e irá retornar um retorno de chamada ao VungleInitListener fornecido na unidade.

public class FirstActivity extends android.app.Activity {

  // get the VunglePub instance
  final VunglePub vunglePub = VunglePub.getInstance();

  // get your App ID from the app's main page on the Vungle Dashboard after setting up your app
  
  @Override
  public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);

      // initialize Publisher SDK with app id, placement reference id list and init callback handler
      vunglePub.init(this, app_id, new String[] { placementID1, placementID2, placementID3 }, new VungleInitListener() {

            @Override
            public void onSuccess() { }
            @Override
            public void onFailure(Throwable e){ }
        });
    }
}

Cada atividade

Além disso, substitua os métodos onPause e onResume em cada Atividade (inclusive a primeira), para garantir que o SDK Vungle para Android seja devidamente atualizado quando seu aplicativo ganhar ou perder foco.

public class EachActivity extends android.app.Activity {

  // get the VunglePub instance
  final VunglePub vunglePub = VunglePub.getInstance();
  ...
  @Override
  protected void onPause() {
      super.onPause();
      vunglePub.onPause();
  }

  @Override
  protected void onResume() {
      super.onResume();
      vunglePub.onResume();
  }
}

Passo 4. Defina os listeners

O SDK Vungle emite diversos eventos que podem ser tratados por meio da programação quando você implementa as classes VungleAdEventListener e as registra usando clearAndSetEventListeners. Lembre-se de remover o eventListener quando ele não for mais necessário para prevenir vazamentos de memória.

vunglePub.clearAndSetEventListeners(vungleDefaultListener, vungleSecondListener);

Passo 5. Carregue e reproduza um anúncio

Uma vez que o SDK Vungle é inicializado com sucesso, você pode carregar seu posicionamento e reproduzir o anúncio quando estiver pronto. Se você definir o VungleAdEventListener, ele irá notificar pelo retorno de chamada onAdAvailabilityUpdate(String placementReferenceId, boolean isAdAvailable) quando um anúncio estiver disponível para ser reproduzido.

public class GameActivity extends android.app.Activity {

    // get the VunglePub instance
    final VunglePub vunglePub = VunglePub.getInstance();
final String placementIdForLevel = "your placement reference id";

private void onLevelStart() {
vunglePub.loadAd(placementIdForLevel); } private void onLevelComplete() { if (vunglePub.isAdPlayable(placementIdForLevel)) { vunglePub.playAd(placementIdForLevel, globalAdConfig); } } }

Note que para posicionamento armazenado em cache automaticamente, você não precisa chamar loadAd porque o SDK irá automaticamente carregar um anúncio após a inicialização. Recomendamos que você escolha o posicionamento mais visualizado como sua seleção de armazenado em cache automaticamente.

Para definir se o usuário tem a opção de fechar um anúncio, utilize as opções de visualização forçada das configurações avançadas do seu aplicativo no Painel de controle do Vungle.

Configurações avançadas

Google Play Services (opcional)

Se incluir os Google Play Services no seu projeto, você permite que o Vungle ofereça ao usuário final uma experiência de anúncios mais personalizada, mas isso não é obrigatório. Recomendamos o uso da versão 8.4.0 ou mais recente.

Para incluir os Google Play Services, convém usar o Guia de configuração do Google. Em seu aplicativo, verifique se o dispositivo tem uma versão suficientemente atualizada dos Google Play Services. O SDK Vungle opcionalmente usa a localização e API de anúncios do Google Play Services.

  • google.android.gms:play-services-location:11.0.1
  • google.android.gms:play-services-ads:11.0.1
  • Para serviços play 7.8.0 e anteriores: mantenha a biblioteca de suporte
  • Para serviços play 8.4.0 e posteriores: a biblioteca de suporte não é exigida

Compilamos com sucesso nosso SDK standalone para compilação com as seguintes versões do Google Play Services: 7.8.0, 8.4.0, 9.8.0, 10.2.4, 11.0.1.

65K Dalvik Method Limit

A adição do SDK Vungle para Android 5.1.0 ao seu projeto irá adicionar 6.557 métodos, excluindo quaisquer outras dependências requeridas. Temos planos no nosso pipeline de projetos para reduzir a contagem de métodos e esta é a atual limitação. Considere as seguintes sugestões para reduzir o número total de métodos adicionados ao seu projeto.

  • Selective Gradle Compilation: O SDK do Google Play Services (GPS) tem cerca de 20K de contagem de métodos. Se seu projeto está usando GPS, há uma opção para compilar seletivamente o SDK GPS que é requerido pelo seu projeto.
    • com.google.android.gms:play-services-location:11.0.1
    • com.google.android.gms:play-services-ads:11.0.1

  • ProGuard: Você pode habilitar o ProGuard para reduzir o código do seu projeto. Ele vai descartar quaisquer classes não utilizadas no momento da compilação para fazer a contagem total de métodos a menor possível. Você pode habilitá-lo especificando minifyEnabled true em build.gradle para o tipo apropriado de build e fornecendo as regras para manter as classes requeridas pelo seu projeto. 

  • Multidex: Se você ainda acima de 65K de contagem de métodos, habilitar multiDex pode ser a única solução fornecida pelo Google. Você precisa configurar seu projeto para multiDex apenas uma vez, mas isto terá impacto no build e no tempo de inicialização do aplicativo.

Proguard

Se usar o Proguard, adicione as seguintes linhas ao seu arquivo de configuração do ProGuard:

# Vungle
-dontwarn com.vungle.**
-dontnote com.vungle.**
-keep class com.vungle.** { *; }
-keep class javax.inject.*

# GreenRobot
-dontwarn de.greenrobot.event.util.**

# RxJava
-dontwarn rx.internal.util.unsafe.**
-keepclassmembers class rx.internal.util.unsafe.*ArrayQueue*Field* {
   long producerIndex;
   long consumerIndex;
}
-keepclassmembers class rx.internal.util.unsafe.BaseLinkedQueueProducerNodeRef {
   rx.internal.util.atomic.LinkedQueueNode producerNode;
}
-keepclassmembers class rx.internal.util.unsafe.BaseLinkedQueueConsumerNodeRef {
   rx.internal.util.atomic.LinkedQueueNode consumerNode;
}
-keep class rx.schedulers.Schedulers { public static <methods>; }
-keep class rx.schedulers.ImmediateScheduler { public <methods>; }
-keep class rx.schedulers.TestScheduler { public <methods>; }
-keep class rx.schedulers.Schedulers { public static ** test(); }
# MOAT -dontwarn com.moat.** -keep class com.moat.** { public protected private *; }
# Retrofit -dontwarn okio.** -dontwarn retrofit2.Platform$Java8

A interface EventListener

Os métodos disponíveis para manipular o VungleAdEventListener são os seguintes:

Método

Descrição

clearAndSetEventListeners(VungleEventListener..)

Limpa os EventListeners registrados e, em seguida, adiciona os eventListeners de entrada.

clearEventListeners( )

Limpe todos os EventListeners

removeEventListeners(VungleEventListener..)

Remove os EventListeners de entrada.

addEventListeners(VungleEventListener..)

Adicione os eventListeners de entrada

API de delegação de call VungleAdEventListener:

public class FirstActivity extends android.app.Activity {
  
  private final VungleAdEventListener vungleListener = new VungleAdEventListener(){

    @Override
    public void onAdEnd(String placementReferenceId, boolean wasSuccessfulView, boolean wasCallToActionClicked) {
      // Called when user exits the ad and control is returned to your application        
      // if wasSuccessfulView is true, the user watched the ad and should be rewarded       
      // (if this was a rewarded ad).
      // if wasCallToActionClicked is true, the user clicked the call to action
      // button in the ad.    
    }

    @Override
    public void onAdStart(String placementReferenceId) {
      // Called before playing an ad
    }

    @Override
    public void onUnableToPlayAd(String placementReferenceId, String reason) {
      // Called after playAd(placementId, adConfig) is unable to play the ad       
    }

    @Override
    public void onAdAvailabilityUpdate(String placementReferenceId, boolean isAdAvailable) {
      // Notifies ad availability for the indicated placement
      // There can be duplicate notifications
    }
  };

  @Override
  public void onDestroy() {
    vunglePub.clearEventListeners();
    super.onDestroy();
  };
}

A Vungle também fornece VunlgeInitListner para atualização do evento de inicialização do SDK.

Observação sobre threads de IU

Retornos de chamada são executados em uma thread em background, de modo que qualquer interação ou atualizações UI resultantes de um evento de retorno de chamada deve ser passado à thread UI principal antes da execução. Há duas formas comuns de executar o código no thread de IU:

Opções de configuração

Configuração global de anúncios

Após chamar init, você deve também definir o objeto global AdConfig. Por padrão, você pode usar este objeto AdConfig em cada chamada playAd. Este objeto também permite que você configure opções que serão automaticamente aplicadas a todos os anúncios reproduzidos.

public class FirstActivity extends android.app.Activity {

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    
    vunglePub.init(this, app_id, placement_list, new VungleInitListener() {
      @Override
      public void onSuccess() {
        // get a reference to the global AdConfig object 
        final AdConfig globalAdConfig = vunglePub.getGlobalAdConfig(); 
        // For a full description of available options, see the 'Config Object'section. 
        globalAdConfig.setSoundEnabled(true);
      }
      @Override
      public void onFailure(Throwable e) { }
    });
  } 
}

Configuração de um único anúncio

Você deve usar um objeto AdConfig a qualquer momento em que você chamar playAd. Mas você tem a opção de personalizar anúncios individuais que você reproduz, fornecendo um novo objeto AdConfig para playAd. Se você definir quaisquer opções na configuração global do anúncio, essas opções globais serão substituídas pelas opções fornecidas em AdConfig. Passe uma sobrescrita AdConfig da seguinte forma:

public class GameActivity extends android.app.Activity {
  …
  private void onLevelComplete() {
    // create a new AdConfig object
    final AdConfig overrideConfig = new AdConfig();

    overrideConfig.setSoundEnabled(false);
 
    // the overrideConfig object will only affect this ad play.
    vunglePub.playAd(yourPlacementId, overrideConfig);
  }
}

O objeto AdConfig

A substituição AdConfig tem uma coleção de opções que podem ser definidas para reprodução de um anúncio individual.

Observação: Anúncios premiados são, às vezes, chamados de anúncios incentivados; ambos os termos sempre referem-se ao mesmo tipo de anúncio. No código do SDK e em nossa API de relatórios, usamos o termo "incentivado".

As opções disponíveis são as seguintes:

Método

Padrão

Descrição

setOrientation

Orientation.matchVideo

Orientation.autoRotate indica que o anúncio acompanha a orientação do dispositivo.

Orientation.matchVideo indica que o anúncio irá ser reproduzido na melhor orientação para o vídeo (geralmente em paisagem).

setSoundEnabled

true

Define o estado inicial do som do anúncio. Se definida como true, o áudio respeitará o volume e as configurações de som do dispositivo. Se definida como false, o vídeo começará mudo, mas o usuário poderá modificar essa opção.

setBackButtonImmediatelyEnabled

false

Se definida como true, permite que o usuário saia imediatamente do anúncio por meio do botão Voltar. Se definida como false, o usuário não poderá usar o botão Voltar para sair do anúncio enquanto o botão Fechar for exibido na tela.

setImmersiveMode

false

Ativa ou desativa o modo imersivo em dispositivos KitKat+

setIncentivizedUserId

none

Define o ID de usuário exclusivo, que será transmitido a seu aplicativo, para verificar se esse usuário deve ser recompensado por assistir a um anúncio com incentivo. N/D se o anúncio não tiver incentivo.

 

setIncentivizedCancelDialogTitle

"Fechar vídeo?"

Define o título da caixa de diálogo de confirmação quando se pula um anúncio com incentivo. N/D se o anúncio não tiver incentivo.

setIncentivizedCancelDialogBodyText

"Se fechar este vídeo agora, você não receberá sua recompensa. Deseja continuar?"

Define o corpo da caixa de diálogo de confirmação quando se pula um anúncio com incentivo. N/D se o anúncio não tiver incentivo.

setIncentivizedCancelDialogCloseButtonText

"Fechar vídeo"

Define o texto do botão "Cancelar", na caixa de diálogo de confirmação, quando se pula um anúncio com incentivo. N/D se o anúncio não tiver incentivo.

setIncentivizedCancelDialogKeepWatchingButtonText

"Continuar assistindo"

Define o texto do botão "Continuar assistindo", na caixa de diálogo de confirmação, quando se pula um anúncio com incentivo. N/D se o anúncio não tiver incentivo.

setTransitionAnimationEnabled

false

Ativa ou desativa a animação padrão de transição de fragmento

 

Tem mais dúvidas? Envie uma solicitação

Comentários