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

Conteúdo

Requisitos

  • Android 3.0 (Honeycomb - API versão 11) 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.1.0'
	…
}

Se você incluir o SDK Vungle pelo Marven, você pode pular o “Passo 2. Atualize AndroidManifest.xml”.

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

SDK Vungle baixado e adicione à biblioteca do seu aplicativo.

image2.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 'com.squareup.retrofit2:converter-gson:2.2.0'
    compile 'com.squareup.retrofit2:adapter-rxjava:2.2.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
    compile files('libs/dagger-2.7.jar')
    compile files('libs/javax.inject-1.jar')
    compile files('libs/eventbus-2.2.1.jar')
    compile files('libs/publisher-sdk-android-5.3.0.jar')
    compile files('libs/rxjava-1.2.0.jar')
    … 
}

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.

<!-- permissions to download and cache video ads for playback --> 
<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" />
<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”/>
>

Passo3. Inicializar o SDK 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 {

  // obtém a instância VunglePub
  final VunglePub vunglePub = VunglePub.getInstance();

  // obter o ID de seu aplicativo na página principal, no Painel de controle do Vungle, após configurar seu aplicativo
  
  @Override
  public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);

       // inicialize o SDK Publisher com o id do aplicativo, lista de id de referência de posicionamento e handler callback init
  	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 {

  // obtém a instância VunglePub
  final VunglePub vunglePub = VunglePub.getInstance();
  final String placementIdForLevel = “your placement reference id”;
final AdConfig globalAdConfig = vunglePub.getGlobalAdConfig(); 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.

Nota: O modo de teste não é suportado no SDK v.5.1.

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 por especificar midifyEnabled verdadeiro em build.gradle para o tipo apropriado de build e por fornecer 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 ; }
-keep class rx.schedulers.ImmediateScheduler { public ; }
-keep class rx.schedulers.TestScheduler { public ; }
-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) {
        // Chamado quando o usuário sai do anúncio e o controle volta para o seu aplicativo        
        // se wasSuccessfulView definida como "true", o usuário assistiu ao anúncio e deve ser premiado       
        // (caso se trate de um anúncio com recompensa).
        // se wasCallToActionClicked estiver definida como "true", o usuário clicou no botão de chamada para ação
        // do anúncio.    
      }

    @Override
    public void onAdStart(String placemetReferenceId) {
        // Chamado antes de reproduzir um anúncio
    }

    @Override
    public void onUnableToPlayAd(String placementReferenceId, String reason) {
        // Chamado depois que o playAd(placementId, adConfig) não conseguiu reproduzir seu anúncio       
     }

    @Override
  public void onAdAvailabilityUpdate(String placementReferenceId, boolean isAdAvailable) {
        // Notifica a disponibilidade de anúncio para o posicionamento indicado
  // Pode haver duplicidade de notificações
    }
  };

  @Override
  public void onCreate(Bundle savedInstanceState) {
      ...

      vunglePub.init(this, app_id, placement_id_list, initCallback);
      vunglePub.clearAndSetEventListeners(vungleListener);

  };

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

  };
}</>pre

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

public void onSuccess();
public void onFailure(Throwable error);

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() {
				// obtenha uma referência ao objeto global AdConfig 
				final AdConfig globalAdConfig = vunglePub.getGlobalAdConfig(); 
				// Para obter a descrição completa das opções disponíveis, consulte a seção 'Objeto configuração' 
				globalAdConfig.setSoundEnabled(true);
			}
			@Override
			public void onFailure(Throwable e){

			}
		}); 
	...
	} 
}

Configuração de um único anúncio

Um objeto Adconfig deve ser usado a qualquer momento na chamada playAd.  Mas, se preferir, você pode opcionalmente personalizar um por um cada anúncio reproduzido em um novo objeto AdConfig para playAd. Se você tiver definido opções na configuração global de anúncios, elas serão substituídas pelas opções fornecidas. Passe uma sobrescrita AdConfig com a seguinte abordagem:

public class GameActivity extends android.app.Activity {
  …
private void onLevelComplete() {
      // criar um novo objeto AdConfig
      final AdConfig overrideConfig = new AdConfig();

      overrideConfig.setSoundEnabled(false);

      // o objeto overrideConfig só afetará a reprodução deste anúncio.
      vunglePub.playAd(yourPlacementId, overrideConfig);
  }
}

O objeto AdConfig

A substituição AdConfig possui uma coleção de opções que podem ser definidas para a reprodução de um anúncio individual. 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