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

Use este artigo para integrar o Vungle SDK para Android ou Amazon. Começando com v.5.3.2 do nosso SDK para Android, o Vungle é compatível com Amazon OS 5.4 e superiores. As etapas de integração do SDK da Amazon são as mesmas que as do 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

Etapa 1. Incluir o Vungle SDK no seu projeto

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

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

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

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

Abra o arquivo app-level build.gradle do seu projeto e adicione as dependências de compilação na seção dependencies.

dependencies { … compile 'com.github.vungle:vungle-android-sdk:5.3.2'
compile 'com.google.android.gms:play-services-basement:11.0.4' //This library is optional, but if used, use version 11.0.1 and up only compile 'com.google.android.gms:play-services-location:11.0.4' //This library is optional, but if used, use version 11.0.1 and up only
… }

Se incluir o Vungle SDK através do Maven, você pode pular a "Etapa 2. Atualizar o AndroidManifest.xml."

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

Baixe o Vungle SDK, 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 project-level build.gradle e atualize a seção repositories.

allprojects { repositories { jcenter() } }

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

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.2.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.0.4' //use version 11.0.1 and up only compile 'com.google.android.gms:play-services-location:11.0.4' //use version 11.0.1 and up only … } 

Se incluir o Vungle SDK manualmente, passe para a "Etapa 2. Atualizar o AndroidManifest.xml."

Etapa 2. Atualizar o 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"/>
>

Etapa 3. Inicializar o Vungle SDK

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

Inicialização do aplicativo

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

Nota: Se chamar o método init com um ID de aplicativo incorreto, o Vungle SDK não será inicializado e nós não dispararemos um callback onFailure. Se chamar o método init com um ID de posicionamento incorreto, o Vungle SDK será inicializado, mas o posicionamento não será capaz de carregar os anúncios e sempre retornará false para isAdPlayable. Novamente, nós não dispararemos um callback onFailure para um ID de posicionamento incorreto.

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 Vungle SDK 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(); } }

Etapa 4. Definir os ouvintes

O Vungle SDK 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);

Etapa 5. Carregar e reproduzir um anúncio

Uma vez que o Vungle SDK é 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 callback 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 Vungle SDK 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 independente 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.

Limite de 65 mil métodos Dalvik

A adição do Vungle SDK 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.

  • Compilação seletiva do Gradle: 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 do 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 ativar o ProGuard para reduzir o código do seu projeto. Ele descarta todas as classes não usadas no momento da compilação para reduzir a contagem de método o máximo possível. Você pode ativá-lo especificando minifyEnabled true em build.gradle no tipo de compilação adequada e ao fornecer as regras que mantêm as classes exigidas pelo 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(); }; }

Observação sobre threads de IU

Callbacks são executados em uma thread em background, de modo que qualquer interação ou atualizações UI resultantes de um evento de callback 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 com recompensa 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 fará a rotação automática com a orientação do dispositivo.

Orientation.matchVideo indica que o anúncio será reproduzido na melhor orientação para o vídeo (geralmente 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

setOrdinalViewCount(int)

null

Se você receber relatórios de dados ordinais do Vungle, use este campo para passar na mediação ordinal. Este é um número inteiro que indica a ordem em que este anúncio foi exibido na sessão do jogo (por exemplo, se dois anúncios já foram exibidos nesta sessão e este anúncio da Vungle foi exibido em terceiro lugar, aparece o número 3). Leia mais sobre dados ordinais aqui.

getOrdinalViewCount

none

Use-o para obter o valor que você passou através de setOrdinalViewCount.

setFlexViewCloseTimeInSec

none

É a quantidade de segundos que os vídeos de visualização flexível (Flex View) serão reproduzidos antes de fechar automaticamente.

Anúncios Flex View

Para fechar programaticamente um anúncio Flex View, use o objeto vunglePub:

vunglePub.closeFlexViewAd(placementID2);

Notas adicionais

O Android Studios tem um problema conhecido no qual você pode receber a falha mostrada abaixo. Se você tiver o Instant Run mais recente do Android Studios, desative-o para se livrar dessa falha.

1-20 13:53:03.649 27642-27828/com.publisher.sample W/GooglePlayServicesUtil: Google Play services out of date. Requires 10240000 but found 9879438 
11-20 13:53:03.659 27642-27828/com.publisher.sample W/VungleDevice: Google Play Services not available: SERVICE_VERSION_UPDATE_REQUIRED
11-20 13:53:05.679 27642-27642/com.publisher.sample D/Event: No subscribers registered for event class com.vungle.publisher.lu
11-20 13:53:05.679 27642-27642/com.publisher.sample D/Event: No subscribers registered for event class de.greenrobot.event.NoSubscriberEvent
Tem mais dúvidas? Envie uma solicitação

Comentários