Introdução ao Vungle - Windows SDK v.2.0 ou posterior

Utilize este guia para integrar rapidamente seu SDK ao aplicativo e começar a monetizar.

As amostras de código neste guia estão em C#, mas fornecemos arquivos de aplicativo de amostra em C#, C++, Visual Basic e DirectX+XAML de nosso repositório GitHub.

Conteúdo

Antes de começar

  • Este guia é para o Vungle Windows SDK 2.0 e superior. O guia de integração para o Vungle Windows SDK versão 1.3.16 e abaixo está aqui: Introdução ao Vungle - Windows SDK v. 1.0 - v.1.3.16.
  • A integração exige uma conta Vungle, portanto, crie uma conta Vungle se você não tiver uma.
  • Se ainda não o fez, abra nosso painel e adicione seu aplicativo à sua conta. Veja Configuração e relatório sobre posicionamentos para saber como configurar posicionamentos no painel Vungle.
  • É necessário usar o Visual Studio 2015 para desenvolver para Windows 8.1 e Windows Phone 8.1 porque o Visual Studio 2017 não suporta mais essas versões.
  • O botão Voltar é suportado em dispositivos móveis, mas não em PCs (teclado). Isso pode provocar um comportamento e experiência do usuário diferentes, para compilações de UWP.
  • Alterne seu aplicativo para o modo Ativo se não forem retornados anúncios no modo de Teste.

Baixe o SDK e adicione o VungleSDK a seu projeto

  1. Baixe o Vungle Windows SDK do painel Vungle.
  2. Extraia o arquivo.
  3. No Visual Studio, crie um novo projeto, usando o modelo apropriado para o seu aplicativo e linguagem de programação.
  4. Adicione uma referência para o seu projeto no arquivo SDK Vungle Windows que você baixou.
  5. Certifique-se que o seu projeto tenha o recurso internetClient no arquivo package.appxmanifest, como mostrado a seguir:
    <Capabilities>
    ...
    <Capability Name="internetClient" />
    ...
    </Capabilities>
  6. Importe o namespace VungleSDK.
    using VungleSDK;
    

Obter uma instância do VungleAd

A instância do VungleAd tem dois parâmetros: uma string para o ID do aplicativo Vungle e um array de strings para IDs de posicionamento. Só é possível utilizar IDs de posicionamento que você já incluiu quando for obter a instância. Se não incluir um posicionamento armazenado em cache automaticamente, o SDK atribuirá automaticamente um de seus posicionamentos não armazenados em cache automaticamente para serem armazenados automaticamente.

VungleAd sdkInstance;

string appID = “app_id”;
string[] placementArray = new string[]
{
  “placement_id_1”,
  “placement_id_2”,
  “placement_id_3”
};
sdkInstance = AdFactory.GetInstance(appID, placementArray);

No exemplo acima, substitua o app_id pelo ID do seu aplicativo Vungle e placement_id_# pelos IDs de posicionamento a utilizar em seu projeto. Recomendamos que você siga esses passos de inicialização logo que seu aplicativo terminar de carregar os componentes críticos, para que o armazenamento automático em cache possa começar mais cedo.

Criar e registrar um gerenciador de eventos

Criar um gerenciador de eventos para o evento OnAdPlayableChanged. Esse gerenciador de eventos é chamado quando o estado da disponibilidade do anúncio muda. Para identificar qual posicionamento acionou o evento, verifique e.Placement.

// Gerenciador de eventos para o evento OnAdPlayableChanged
private async void SdkInstance_OnAdPlayableChanged(object sender, AdPlayableEventArgs e)
{
  // e.Placement - ID de posicionamento na string
  // Executar de forma assíncrona no segmento IU
  await CoreApplication.MainView.Dispatcher.RunAsync(CoreDispatcherPriority.Normal,
    new DispatchedHandler(() => methodToRun(e.Placement)));
}

Registrar esse gerenciador de eventos para o evento OnAdPlayableChanged.

sdkInstance.OnAdPlayableChanged += SdkInstance_OnAdPlayableChanged;

Carregue um anúncio para um posicionamento

Para posicionamentos não armazenados em cache automaticamente, primeiro você deve chamar LoadAd, aguardar baixar os ativos do anúncio e esperar OnAdPlayableChanged ser chamado:

sdkInstance.LoadAd(“placement_id”);

Nota: O posicionamento armazenado em cache automaticamente tentará baixar um novo ativo de anúncio logo após PlayAdAsync ser chamado, então não é necessário chamar LoadAd.

Exemplo de código:

private void OnLevelStart(Object sender, RoutedEventArgs e)
{
  sdkInstance.LoadAd(“placement_id”);
}

Reproduzir um anúncio

Execute um anúncio com a configuração padrão:

sdkInstance.PlayAdAsync(new AdConfig(), “placement_id”);

Exemplo de código:

private async void OnLevelComplete(Object sender, RoutedEventArgs e)
{
  await sdkInstance.PlayAdAsync(new AdConfig(), “placement_id”);
}

É possível personalizar os anúncios reproduzidos fornecendo opções ao objeto AdConfig.

Exemplo de código:

private async void PlayCustomizedAd(Object sender, RoutedEventArgs e)
{
  AdConfig adConfig = new AdConfig();

  adConfig.Orientation = DisplayOrientations.Portrait;
  adConfig.SoundEnabled = false;
  
  await sdkInstance.PlayAdAsync(adConfig, placement2);
}

Opções de personalização

Estas são as propriedades disponíveis na instância do objeto AdConfig:

Opções

Valor/tipo
padrão

Descrição

Orientation

AutoRotate

DisplayOrientations

Orientation.AutoRotate (padrão) faz o anúncio acompanhar a orientação do dispositivo.

Orientation.Portrait faz o anúncio ser reproduzido apenas na orientação retrato.

Orientation.Landscape faz o anúncio ser reproduzido apenas na orientação paisagem.

Nota: esta opção aplica-se apenas a aplicativos para dispositivos móveis.

SoundEnabled

true

bool

Define o estado inicial do som do anúncio.

Se definida como true (padrão), o áudio terá 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.

BackButtonImmediatelyEnabled

false

bool

Se definida como true, permite que o usuário saia imediatamente do anúncio por meio do botão Voltar.

Se definida como false (padrão), o usuário não poderá usar o botão Voltar para sair do anúncio até o botão Fechar ser exibido na tela.

Nota: esta opção aplica-se apenas a aplicativos para dispositivos móveis.

UserId

null

string

Envia o ID de usuário exclusivo para seu aplicativo, que verifica se esse usuário deverá ser gratificado por assistir um anúncio com incentivo ao usar o retorno de chamada servidor-a-servidor para verificação.

Nota: essa configuração aplica-se apenas a posicionamentos com recompensa.

IncentivizedDialogTitle

“Fechar esse anúncio?”

string

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

Nota: essa configuração aplica-se apenas a posicionamentos com recompensa.

IncentivizedDialogBody

“Deseja mesmo pular este anúncio? Para pedir sua recompensa é necessário assistir até o final.”

string

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

Nota: essa configuração aplica-se apenas a posicionamentos com recompensa.

IncentivizedDialogCloseButton

"Fechar"

 

string

Define o texto do botão 'Cancelar' na caixa de diálogo de confirmação, quando se pula um anúncio com incentivo.

Nota: essa configuração aplica-se apenas a posicionamentos com recompensa.

IncentivizedDialogContinueButton

"Continuar"

string

Define o texto do botão 'Continuar assistindo' na caixa de diálogo de confirmação, quando se pula um anúncio com incentivo.

Nota: essa configuração não é aplicável se um anúncio não é premiado.

Incentivized

-

OBSOLETO

É possível definir a configuração da recompensa no nível do posicionamento, a partir do painel. Consulte Configuração e relatório de posicionamentos.


Nota
: as opções de SoundEnabled e caixa de diálogo para anúncios premiados de Modelo dinâmico e Visualização flexível estão disponíveis no painel para configuração. A configuração programática só se aplica a anúncios obsoletos.

Como exibir o botão Fechar

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

Inscrição para gerenciadores de evento

O Windows SDK abre diversos eventos que você pode programar. É possível utilizar esses gerenciadores de eventos para controlar recursos do aplicativo, como pausa/retomar a música de fundo.

Observação sobre threads de IU

Os ouvintes de evento são executados em um segmento de fundo, portanto, qualquer interação IU ou atualizações decorrentes de um ouvinte de evento devem ser passadas para o segmento principal da IU antes de executar. Aqui está uma maneira de fazer isso:

await this.Dispatcher.RunAsync(CoreDispatcherPriority.Normal,
new DispatchedHandler(() =>
{ // Este bloco será executado no segmento da IU
} );

Gerenciadores de evento do VungleAd

Gerenciadores de evento

Descrição

OnInitCompleted

Chamado logo após a inicialização do SDK ser concluída. É possível verificar se há um anúncio baixado de uma sessão anterior ou carregar um anúncio para posicionamentos.

OnAdPlayableChanged

Notifica da mudança da disponibilidade de anúncio para o posicionamento. Aguarda esse gerenciador de eventos agir quando um anúncio fica disponível após carregar um anúncio para posicionamento.

OnAdStart

Chamado antes de reproduzir um anúncio. É possível realizar ações como pausa da música de fundo.

OnAdEnd

Chamado quando o usuário fecha o cartão final e o controle volta para o seu aplicativo. Se IsCompletedView ou CallToActionClicked for true, o usuário assistiu o anúncio ou clicou no botão download no anúncio. Nesse caso, se for um anúncio com recompensa, o usuário deve ser premiado. É possível realizar ações como retomar os recursos do aplicativo.

Diagnostic

Chamado quando o SDK quer imprimir logs de diagnóstico.

Exemplo de código:

//Registrar gerenciadores de evento
sdkInstance.OnInitCompleted     += SdkInstance_OnInitCompleted;
sdkInstance.OnAdPlayableChanged += SdkInstance_OnAdPlayableChanged;
sdkInstance.OnAdStart           += SdkInstance_OnAdStart;
sdkInstance.OnAdEnd             += SdkInstance_OnAdEnd;
sdkInstance.Diagnostic          += SdkInstance_Diagnostic;

...

// OnInitCompleted
//   e.Initialized - true após inicialização bem sucedida, false se falhou
//   e.ErrorMessage - motivo da falha quando e.Initialized é false
private async void SdkInstance_OnInitCompleted(object sender, ConfigEventArgs e)
{
  var placementsInfo = "OnInitCompleted: " + e.Initialized;
  // Inicialização bem sucedida
  if (e.Initialized == true)
  {
    // Imprime a lista de posicionamentos
    for (var i = 0; i < e.Placements.Length; i++)
    {
      placementsInfo += "\n\tPlacement" + (i + 1) + ": " + e.Placements[i].ReferenceId;
      if (e.Placements[i].IsAutoCached == true)
        placementsInfo += " (Auto-Cached)";
    }
  }
  // Falha na inicialização
  else
  {
    placementsInfo += "\n\t" + e.ErrorMessage;
  }
  System.Diagnostics.Debug.WriteLine(placementsInfo);
  await this.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, new DispatchedHandler(() =>
    NotifyInitialization(e.Initialized)));
}

// OnAdPlayableAdPlayable
//   e.AdPlayable - true se há um anúncio para reproduzir, senão, é false
//   e.Placement  - ID de posicionamento na string
private async void SdkInstance_OnAdPlayableChanged(object sender, AdPlayableEventArgs e)
{
  System.Diagnostics.Debug.WriteLine("OnAdPlayable(" + e.Placement + ") - " + e.AdPlayable);
  await this.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, new DispatchedHandler(() =>
    NotifyWatcher(e.AdPlayable, e.Placement)));
}

// OnAdStart
//   e.Id - ID do aplicativo Vungle na string
//   e.Placement  - ID de posicionamento na string
private void SdkInstance_OnAdStart(object sender, AdEventArgs e)
{
  System.Diagnostics.Debug.WriteLine("OnAdStart(" + e.Id + "): " + e.Placement);
}

// OnAdEnd
//   e.Id - ID do aplicativo Vungle na string
//   e.Placement  - ID de posicionamento na string
//   e.IsCompletedView- true se assistiu pelo menos 80% do vídeo
//   e.CallToActionClicked - true se o usuário clicou no botão Download no cartão final
//   e.WatchedDuration - OBSOLETO
private void SdkInstance_OnAdEnd(object sender, AdEndEventArgs e)
{
  System.Diagnostics.Debug.WriteLine("OnVideoEnd(" + e.Id + "): "
    + "\n\tPlacement: " + e.Placement
    + "\n\tIsCompletedView: " + e.IsCompletedView
    + "\n\tCallToActionClicked: " + e.CallToActionClicked
    + "\n\tWatchedDuration: " + e.WatchedDuration);
}

// Gerenciador de eventos chamado quando o SDK quer imprimir logs de diagnóstico
private void SdkInstance_Diagnostic(object sender, DiagnosticLogEvent e)
{
  System.Diagnostics.Debug.WriteLine("Diagnostic - "
+ e.Level + " "
+ e.Type + " "
+ e.Exception + " "
+ e.Message); } // OBSOLETO - Use SdkInstance_OnAdEnd() ao invés private void SdkInstance_OnVideoView(object sender, AdViewEventArgs e) { }
Tem mais dúvidas? Envie uma solicitação

Comentários