Visão geral
O Vungle Banner está atualmente em fase BETA. Entre em contato com seu gerente de conta diretamente para obter acesso e garantir um lançamento bem-sucedido.
A partir do Vungle SDK v6.5.1, o Vungle oferece suporte a anúncios de banner. Tanto o MREC quanto os anúncios de banner exigem a versão 16 da API ou superior.
Semelhante aos anúncios MREC, os anúncios de banner em vídeo são anúncios retangulares que ocupam um local em qualquer lugar dentro do layout do aplicativo, normalmente exibidos na parte superior ou inferior da tela, para que o usuário possa continuar a interagir com o aplicativo enquanto o anúncio é reproduzido. O tamanho do local para renderizar anúncios de banner pode ser 320x50, 300x50 ou 728x90 (para tablets).
Tamanho do banner | Dimensões |
|
320x50 |
|
300x50 |
|
728x90 (para tablets) |
Etapa 1. Integração básica completa
Para integrar anúncios de banner em seu aplicativo Android ou Amazon, siga as instruções no artigo de integração básica. Este artigo contém informações complementares e pressupõe que você tenha concluído a integração básica.
Etapa 2. Implementar ouvintes de eventos
Você pode usar callbacks genéricas, implementando LoadAdCallback
para eventos de carregamento de anúncios e PlayAdCallback
para eventos de reprodução de anúncios, ou usar callbacks em linhas ao invocar loadAd
e playAd
.
Implementar LoadAdCallback
private final LoadAdCallback vungleLoadAdCallback = new LoadAdCallback() {
@Override
public void onAdLoad(String id) {
// Ad has been successfully loaded for the placement
}
@Override
public void onError(String id, VungleException exception) {
// Ad has failed to load for the placement
}
};
// 6.4.x & below
private final LoadAdCallback vungleLoadAdCallback = new LoadAdCallback() {
@Override
public void onAdLoad(String id) {
// Ad has been successfully loaded for the placement
}
@Override
public void onError(String id, Throwable throwable) {
// Ad has failed to load for the placement
}
};
Métodos substituíveis | Descrição |
---|---|
onAdLoad(String id) |
Chamado quando o anúncio é carregado com sucesso e reproduzido para a veiculação |
onError(String id) |
Chamado quando ocorre um erro ao tentar reproduzir um anúncio. Você poderá verificar a mensagem de erro de getLocalizedMessage de VungleException e usar getExceptionCode para depuração. |
Implementar PlayAdCallback
private final PlayAdCallback vunglePlayAdCallback = new PlayAdCallback() {
@Override
public void onAdStart(String id) {
// Ad experience started
}
@Override
public void onAdEnd(String id) {
// Ad experience ended
}
@Override
public void onAdClick(String id) {
// User clicked on ad
}
@Override
public void onAdRewarded(String id) {
// User earned reward for watching an ad
}
@Override
public void onAdLeftApplication(String id) {
// User has left app during an ad experience
}
@Override
public void onError(String id, VungleException exception) {
// Ad failed to play
}
};
// 6.5.x & below
private final PlayAdCallback vunglePlayAdCallback = new PlayAdCallback() {
@Override
public void onAdStart(String placementReferenceId) {
// Ad experience started
}
// Deprecated
@Override
public void onAdEnd(String placementReferenceId, boolean completed, boolean isCTAClicked) {
// Invoked when the ad experience is completed
// isCTAClicked flag indicates whether CTA download button has been triggered
// completed flag will indicate whether user has watched 80% of video or longer.
}
@Override
public void onError(String placementReferenceId, VungleException exception) {
// Ad failed to play
}
};
Métodos substituíveis | Descrição |
---|---|
onAdStart(String id) |
Invocado quando o anúncio é lançado com sucesso e exibido no dispositivo. |
onAdEnd(String id) |
Invocado quando toda a experiência do anúncio é concluída, pouco antes de o controle retornar ao aplicativo de origem. |
onAdClick(String id) |
Invocado quando o usuário clica em um anúncio em vídeo ou botão de download. |
onAdRewarded(String id) |
Invocado quando o usuário concluiu 80% do vídeo com recompensa e deve ser recompensado. Recompensar o usuário deve ocorrer aqui e só será acionado para veiculações com recompensa. |
onAdLeftApplication(String id) |
Invocado quando o usuário sai do aplicativo antes que a experiência do anúncio seja concluída, como abrir a página da Loja do anúncio. |
onAdError(String id, VungleException exception) |
Chamado quando ocorre um erro ao tentar reproduzir um anúncio. Você poderá verificar a mensagem de erro de getLocalizedMessage de VungleException e usar getExceptionCode para depuração. |
Etapa 3. Carregar, exibir e fechar um anúncio de banner
Carregar um anúncio de banner
Carregar um anúncio de banner funciona de maneira diferente do que para outros formatos de anúncio. Existe uma API Banners
específica que você usa para carregar, reproduzir e verificar a disponibilidade de anúncios. Você deve especificar o tamanho do banner que deseja carregar, e o SDK o atualizará automaticamente com o intervalo de tempo que você configurou no painel. Você também deve configurar o posicionamento para suportar um feed de banner, portanto, entre em contato com seu gerente de conta da Vungle para habilitar os anúncios de banner para um canal.
- Carregue um anúncio de banner, chamando o método
loadBanner
:Banners.loadBanner("BANNER_ID", AdConfig.AdSize.BANNER, vungleLoadAdCallback);
- Verifique a disponibilidade do anúncio de banner, chamando o método
canPlayAd
:Banners.canPlayAd(ad.placementReferenceId, AdConfig.AdSize.BANNER);
Exibir um anúncio de banner
Como o tamanho da visualização é fixo, você deve especificar o local usado para exibir anúncios de banner com um dos tamanhos suportados: 320x50, 300x50 ou 728x90 (para tablets). Você pode colocar a visualização em qualquer lugar da tela. Este local é um LayOut
. Seu tamanho deve ser igual ou maior que o tamanho do banner que você está usando. Você pode colocar esse LayOut
em qualquer lugar da tela. Então você deve passar o tamanho do banner que você está usando via API Banners
.
Passe este objeto ao chamar Banners.loadBanner
para especificar o tamanho que você está exibindo e use Banners.getBanner
para obter o objeto do anúncio Banners
. Por fim, chame o método para associar o local ao anúncio de banner.
private RelativeLayout bannerContainer = findViewById(...);
// Check for banner ad availability and display
if (Banners.canPlayAd("BANNER_ID", AdConfig.AdSize.BANNER)) {
VungleBanner vungleBanner = Banners.getBanner("BANNER_ID", AdConfig.AdSize.BANNER, vunglePlayAdCallback);
bannerContainer.addView(vungleBanner);
}
Fechar um anúncio de banner
Como a visualização do anúncio de banner foi adicionada à visualização do local, ela também deve ser removida se a visualização do anúncio desaparecer da tela, se a atividade ou fragmento for destruído ou se o local de exibição principal for reciclado ou destruído. Se você tentar reproduzir outro anúncio de banner sem fechar o anúncio anterior, isso causará um comportamento inesperado no seu aplicativo.
vungleBanner.destroyAd();
Etapa 4. Usar nossa API VungleBanner
para controle avançado (opcional)
Na maioria dos casos, a integração descrita acima é suficiente e o VungleBanner
é gerenciado. Porém, se a visualização do VungleBanner
estiver dentro de uma lista ou de um RecyclerView
, o VungleBanner
gerenciado não funcionará corretamente. No momento em que o usuário rolar o anúncio para fora da tela e voltar, o anúncio será concluído e não estará mais lá. Para tais casos, fornecemos uma API avançada para controle mais próximo do VungleBanner
.
VungleBanner
API de classe
Essas APIs fornecem aos desenvolvedores um controle preciso sobre como tratar o VungleBanner
entre os vários eventos do ciclo de vida no aplicativo do desenvolvedor. Na maioria dos casos de uso, os desenvolvedores não precisam invocar esses métodos. Basta adicionar um VungleBanner
em uma visualização principal.
Em casos raros, no entanto, uma visualização será reciclada (como um RecyclerView
, ListView
, etc.) ou precisaremos lidar com a visibilidade manualmente (em alguns dispositivos Android mais antigos, a WebView
não é pausada automaticamente quando sai da tela).
Nome | Função | Notas |
disableLifeCycleManagement(boolean disabled) |
Invoque para desativar o gerenciamento automático de banner | Deve ser definido como ‘true’ para renderAd e setAdVisibility funcionarem |
renderAd* |
Renderiza o anúncio se ele não estiver visível | Também pode carregar novos anúncios |
setAdVisibility* |
Notifica o local de visualização quando o banner está visível na tela | Pausar e retomar banner |
destroyAd |
Chame para destruir quando não for mais necessário, o local de visualização não poderá mais ser usado | Libera recursos de banner |
finishAd* |
Interrompe o anúncio atual, envia um relatório e permite que outro anúncio seja carregado depois (aplicável apenas para certa integração em RecyclerView ou ListView) | Libera recursos de banner |
*Você deve invocar vungleBannerAd.disableLifeCycleManagement(true)
antes de usar esta API.
Visualizações VungleBanner
gerenciadas e não gerenciadas
Quando você obtém um VungleBanner
, por padrão, é uma visualização gerenciada. Isso significa que, no momento em que você adiciona essa visualização a um local principal, o Vungle controla quando exibir um anúncio, quando destruir um anúncio e quando enviar o relatório. Os eventos de visibilidade também são atendidos e os desenvolvedores não precisam notificar o SDK quando um objeto de exibição de banner está na tela ou não. Nos casos em que um desenvolvedor não tem uma visualização do VungleBanner
dentro de uma visualização reciclável ou padrão ViewHolder
, esta é a forma preferida de usar o VungleBanner
.
Nos casos em que uma visualização VungleBanner
está dentro de um ListView
ou RecyclerView
, o VungleBanner
gerenciado não funcionará corretamente. No momento em que o usuário rolar o anúncio para fora da tela e voltar, o anúncio será concluído e não estará mais lá.
Para esses casos, adicionamos a API disableLifeCycleManagement(boolean disable)
para permitir que os desenvolvedores lidem com o ciclo de vida do VungleBanner
manualmente.
Antes de adicionar o VungleBanner
a uma visualização ou vinculá-la, ao definir:
vungleBannerAd.disableLifeCycleManagement(boolean disabled)
Você deve chamar:
-
VungleBanner.renderAd()
quando a visualização é limitada -
VungleBanner.setAdVisibility(true|false)
quando o anúncio é reciclado ou não está mais visível -
VungleBanner.destroyAd()
quando o objetoVungleBanner
não é mais necessário
Etapa 5. Personalizar anúncios de banner (opcional)
Você tem a opção de personalizar anúncios individuais que reproduz, fornecendo um novo objeto adConfig
para o playAd
. Quando o objeto AdConfig
é nulo, o anúncio é reproduzido com as configurações padrão; quando não é nulo, suas configurações substituem as do AdConfig
. A seguir está um exemplo de como usar o AdConfig
:
Vungle.playAd(placementReferenceID, adConfig, vunglePlayAdCallback);
O exemplo acima usa o objeto adConfig
, que contém opções de configuração personalizadas. Defina o objeto AdConfig
como mostrado:
AdConfig adConfig = new AdConfig();
adConfig.setAdOrientation(AdConfig.AUTO_ROTATE);
adConfig.setMuted(true);
Vungle.playAd(placementReferenceID, adConfig, vunglePlayAdCallback);
A tabela a seguir lista as opções disponíveis do AdConfig
para anúncios de banner:
Opção | Descrição |
|
‘false’ se o vídeo começar com as configurações de áudio correspondentes à do aplicativo em questão, ‘true’ se começar mudo |
|
tem um valor inteiro ordinal para rastrear o número de anúncios que foram reproduzidos na mesma sessão |
Observação: você pode usar o mesmo objeto AdConfig
para vários anúncios.
Práticas recomendadas
- Antes de tentar mostrar um anúncio de banner, sempre tente verificar se a atividade principal foi concluída antes de vincular o
VungleBanner
a uma visualização.if (activity != null && activity.isFinishing()) { return; }
- Não mude o
LayoutParams
deVungleBanner
. Isso pode afetar negativamente a forma como o banner é exibido e, possivelmente, fazer com que seu anúncio não seja visível. - Não coloque o anúncio em um local de tamanho menor que o anúncio solicitado. Se você estiver solicitando um banner regular (320 x 50), certifique-se de que seu local principal seja de pelo menos 320 dp x 50 dp.