Introdução ao Vungle SDK v. 6 - Adobe AIR

Siga estas instruções para integrar nosso Vungle Adobe Air Plugin em um aplicativo básico de exemplo. O código fonte mencionado aqui está disponível em nosso repositório GitHub público.

Conteúdo

Antes de começar

  • A extensão Vungle requer o Adobe AIR SDK 4.0 ou superior. Para obter instruções sobre como atualizar o SDK do AIR no Flash Builder ou no Flash Professional, consulte a seção “Outras observações”.

  • Se estiver trabalhando com Android, a extensão Vungle AIR exige JDK 6 ou o JDK 7 (dependendo da versão do Flash que você estiver usando) esteja instalado no sistema de desenvolvimento. O Android 3.0 (Honeycomb - API versão 11) ou mais recente é necessário para o aplicativo ser executado.

  • Consulte a Documentação de classe do ActionScript 3.

  • Revise example/VungleExample.as para ver um exemplo de classe do aplicativo. Se você for usuário do Flash Professional e não tiver certeza de como usar uma Classe de documentos, consulte "Uso da classe de documento VungleExample.as em Animate ou Flash Professional CS6?” no final deste artigo.)
  • Aceleração de hardware

    A aceleração de hardware está ativada por padrão se o nível da API de destino estiver definido como 14 ou superior. Essa opção deve estar ativada para que o SDK exiba corretamente os anúncios em Modelo Dinâmico. Certifique-se de que seu projeto não tem essa opção definida como "false".

    <application android:hardwareAccelerated="true" ...>

 

RGPD: Implementação recomendada

O Regulamento Geral sobre a Proteção de Dados (RGPD) entrou em vigor na União Europeia em 25 de maio. Para entrar em conformidade com o RGPD, desenvolvedores têm duas opções.

  • Opção 1 (recomendado): O distribuidor controla o processo de consentimento do RGPD do usuário e comunica as escolhas do usuário à Vungle. Para isso, os desenvolvedores podem coletar o consentimento do usuário usando seus próprios mecanismos, usando a seguir as APIs da Vungle para atualizar ou enviar uma consulta do status de consentimento do usuário. Consulte a seção Instruções de implementação recomendadas para RGPD para obter detalhes.

  • Opção 2: A Vungle pode lidar com as exigências, exibindo uma caixa de diálogo de consentimento antes de exibir um anúncio para um usuário europeu, e lembrará o consentimento ou rejeição do usuário em anúncios subsequentes.

Etapa 1. Incluir a biblioteca de extensão

Comece criando um novo projeto AIR para dispositivos móveis e adicione a extensão nativa. Você vai precisar adicionar dois ou três arquivos .ane:

  • com.vungle.extensions.Vungle.ane
  • com.vungle.extensions.android.AndroidSupportLib.ane
  • com.vungle.extensions.android.GooglePlayServices.ane (Se seu objetivo for desenvolver para Android, talvez seja necessário adicionar a biblioteca do Google Play Services ao seu projeto. Mas como muitas outras extensões já incluem essa biblioteca, talvez ela já esteja presente.)

Para Animate e Flash Professional CS6 ou superior

  1. Crie um novo projeto AIR para Android ou AIR para iOS.
  2. Selecione File → Publish Settings...
  3. Selecione o ícone de engrenagem ao lado de Script for 'ActionScript Settings'.
  4. Na guia Library Path, clique em Browse for Native Extension (ANE) File e selecione o arquivo vungle.extensions.Vungle.ane. Clique em OK.
  5. Selecione o ícone de engrenagem ao lado de Target for 'Player Settings'.
  6. Se seu objetivo for desenvolver para Android: na guia Permissions, ative 'INTERNET', 'WRITE_EXTERNAL_STORAGE' e 'ACCESS_NETWORK_STATE'.
  7. Selecione a opção Manually manage permissions and manifest additions for this app e clique em OK.
  8. Repita as etapas de 1 a 7, desta vez selecionando o com.vungle.extensions.android.AndroidSupportLib.ane na etapa 4.
  9. Se estiver desenvolvendo para Android e esta biblioteca não estiver presente, repita as etapas de novo, agora selecionando o arquivo com.vungle.extensions.android.GooglePlayServices.ane na etapa 4.

Para Flash Builder 4.6 ou superior

  1. Em Project Properties, em Actionscript Build Path, selecione Native Extensions.
  2. Selecione Add ANE... e navegue até o arquivo vungle.extensions.Vungle.ane .
  3. Selecione Actionscript Build Packaging → Google Android.
  4. Na guia Native Extensions, selecione a opção Package ao lado da extensão.
  5. Repita as etapas 1 e 2, desta vez selecionando o com.vungle.extensions.android.AndroidSupportLib.ane na etapa 2.
  6. Para iOS, repita as etapas 3 e 4 para o destino 'Apple iOS'.

Etapa 2. Atualizar o descritor do aplicativo

Para que o Vungle funcione, modificações são necessárias no arquivo XML do seu aplicativo. Modifique o arquivo XML criado pelo seu IDE com as seguintes alterações.

Nota: Se for usuário do Flash Professional, certifique-se de ter seguido as etapas acima para inclusão da biblioteca de extensão “Para Animate e Flash Professional CS6 ou superior'’; caso contrário, o Flash pode desfazer suas alterações à medida em que você as fizer.

  1. Defina seu SDK do AIR como 4.0 (ou posterior) no arquivo de descrição do aplicativo:
    <application xmlns="http://ns.adobe.com/air/application/4.0">
  2. Inclua um link para a extensão no descritor:
    <extensions>
    <extensionID>com.vungle.extensions.Vungle</extensionID>
    <extensionID>com.vungle.extensions.android.AndroidSupportLib</extensionID>
    </extensions>
  3. Para Android: você talvez precise incluir a extensão Google Play Services. Adicione seu ID de extensão aqui também.
    <extensions>
    <extensionID>com.vungle.extensions.Vungle</extensionID>
    <extensionID>com.vungle.extensions.android.AndroidSupportLib</extensionID>
    <extensionID>com.vungle.extensions.android.GooglePlayServices</extensionID>
    </extensions>

Para aplicativos AIR para Android

Para Android, atualize suas adições de manifesto Android no elemento XML Android para:

  • incluir as permissões INTERNET, WRITE_EXTERNAL_STORAGE e ACCESS_NETWORK_STATE
  • adicione VideoFullScreenAdActivity,definições de atividade MraidFullScreenAdActivity, e MraidFullScreenAdActivity
  • adicione a tag de metadados da versão do google-play-services:
     <android>

    <manifestAdditions><![CDATA[

    <manifest android:installLocation="auto">

    <!--Required Permissions-->
    <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-->
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

    <application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/AppTheme"
    android:networkSecurityConfig="@xml/network_security_config" >
    <activity android:name=".MainActivity">
    <intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
    </activity>
    <!-- Google Play Services -->
    <meta-data android:name="com.google.android.gms.version"
    android:value="@integer/google_play_services_version" />
    <!-- Vungle -->
    <activity
    android:name="com.vungle.warren.ui.VungleActivity"
    android:configChanges="keyboardHidden|orientation|screenSize|screenLayout|smallestScreenSize"
    android:launchMode="singleTop"
    android:theme="@android:style/Theme.Translucent.NoTitleBar" />
    <!-- android-job -->
    <service
    android:name="com.evernote.android.job.v21.PlatformJobService"
    android:exported="false"
    android:permission="android.permission.BIND_JOB_SERVICE" />
    <service
    android:name="com.evernote.android.job.v14.PlatformAlarmService"
    android:exported="false"
    android:permission="android.permission.BIND_JOB_SERVICE" />
    <service
    android:name="com.evernote.android.job.v14.PlatformAlarmServiceExact"
    android:exported="false" />
    <receiver
    android:name="com.evernote.android.job.v14.PlatformAlarmReceiver"
    android:exported="false" >
    <intent-filter>
    <!-- Keep the filter for legacy intents -->
    <action android:name="com.evernote.android.job.v14.RUN_JOB" />
    <action android:name="net.vrallev.android.job.v14.RUN_JOB" />
    </intent-filter>
    </receiver>
    <receiver
    android:name="com.evernote.android.job.JobBootReceiver"
    android:exported="false" >
    <intent-filter>
    <action android:name="android.intent.action.BOOT_COMPLETED" />
    <action android:name="android.intent.action.QUICKBOOT_POWERON" />
    <action android:name="com.htc.intent.action.QUICKBOOT_POWERON" />
    <action android:name="android.intent.action.MY_PACKAGE_REPLACED" />
    </intent-filter>
    </receiver>
    <service
    android:name="com.evernote.android.job.gcm.PlatformGcmService"
    android:enabled="false"
    android:exported="true"
    android:permission="com.google.android.gms.permission.BIND_NETWORK_TASK_SERVICE" >
    <intent-filter>
    <action android:name="com.google.android.gms.gcm.ACTION_TASK_READY" />
    </intent-filter>
    </service>
    <service
    android:name="com.evernote.android.job.JobRescheduleService"
    android:exported="false"
    android:permission="android.permission.BIND_JOB_SERVICE" />
    </application>

    </manifest>
    ]]></manifestAdditions>

     </android>

Etapa 3. Integrar a API Vungle

A API Vungle pode ser adicionada ao seu aplicativo em apenas algumas linhas do ActionScript.

Inicialize a extensão Vungle

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.

Inicialize a API quando o aplicativo iniciar.

  • Se usar ActionScript puro, faça o seguinte no construtor da sua classe de documento.
  • Se usar o Flex, chame isso no evento initialize() da classe principal.
  • Se usar código de linha do tempo no Flash, faça isso no Quadro 1.
  1. Importe as classes da API:
    import com.vungle.extensions.*; import com.vungle.extensions.events.*;
  2. Inicialize a API chamando create() e passando uma string do ID de seu aplicativo e uma matriz que contenha o ID de referência de posicionamento do aplicativo no Painel do Vungle. Se estiver desenvolvendo para iOS e Android no mesmo projeto, forneça IDs de aplicativo diferentes e sua matriz de posicionamento por plataforma ao método create().

    Ajuste sua chamada para Vungle.create() em try/catch porque o Vungle pode lançar um erro durante o processo de criação (por exemplo, a extensão pode lançar um erro se for executada na área de trabalho):
    try { // initialize with your app id Vungle.create("your_vungle_id", [“placement1”, “placement2”, “placement3”]); } catch (error:Error) { // could not create extension. Are you running on something besides iOS/Android? }

Carregue um anúncio de posicionamento

Para reproduzir um anúncio de posicionamento, você deve carregar um anúncio para aquele posicionamento. Observe que seu posicionamento armazenado em cache automaticamente não requer que você chame este método. O SDK tentará carregar internamente o posicionamento armazenado em cache automaticamente.

Vungle.vungle.loadAd(“non_auto_cached_placement”);

Reproduza um anúncio de posicionamento

Você saberá quando o anúncio estiver pronto para ser reproduzido através dos monitores de evento. Uma vez que o posicionamento estiver disponível para ser reproduzido, você pode reproduzir um anúncio.

If (Vungle.vungle.isAdAvailable(“placement_id”)) { Vungle.vungle.playAd(“placement_id”); }

Adicionar monitores de evento

A extensão Vungle emite quatro eventos: VungleEvent.AD_PLAYABLE, VungleEvent.AD_STARTED, VungleEvent.AD_FINISHED, VungleEvent.AD_FAILED, VungleEvent.AD_INIT e VungleEvent.AD_LOG.

  1. O AD_PLAYABLE é enviado quando um anúncio está pronto para ser reproduzido.
    Vungle.vungle.addEventListener(VungleEvent.AD_PLAYABLE, onAdPlayable); function onAdPlayable(e:VungleEvent):void { if (e.isAdPlayable) { trace(“ad is playable for placement: “ + e.placement); Vungle.vungle.playAd(e.placement); } else { trace(“ad not playable for placement: “ + e.placement); } }
  2. Os eventos AD_STARTED e AD_FINISHED são enviados quando um anúncio é exibido e rejeitado, respectivamente:
    Vungle.vungle.addEventListener(VungleEvent.AD_STARTED, onAdStarted); Vungle.vungle.addEventListener(VungleEvent.AD_FINISHED, onAdFinished); function onAdStarted(e:VungleEvent):void { trace("ad displayed for placement: " + e.placement); } function onAdFinished(e:VungleEvent):void { trace("ad dismissed for placement: “ + e.placement + “, CTA = " + e.wasCallToActionClicked); if (e.wasSuccessfulView) { trace("counts a completed view - present reward."); } }
  3. O AD_INIT é enviado quando o Vungle SDK termina a inicialização.
    function onAdInit(e:VungleEvent):void { trace(“Vungle SDK is initialized: “ + e.isInitialized”); }
  4. O AD_LOG é enviado quando uma mensagem de log é enviada pelo Vungle SDK. Você pode usá-lo para depuração. O registro em log é implementado apenas no Vungle SDK para iOS, portanto, esse evento é específico da plataforma.
    Vungle.vungle.setLoggingEnabled(true); Vungle.vungle.addEventListener(VungleEvent.AD_LOG, onAdLog); private function onAdLog(e:VungleEvent):void { log("ad log: " + e.message); }

Mais opções

Como você já viu, você pode passar um objeto com opções de configuração ao chamar o método playAd().

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".

Estas são as propriedades disponíveis em VungleAdConfig:

Opção

Valor

Descrição

orientation

VungleOrientation

Android

VungleOrientation.AUTO_ROTATE

VungleOrientation.ANDROID_MATCH_VIDEO

iOS

VungleOrientation.IOS_LANDSCAPE

VungleOrientation.IOS_PORTRAIT

soundEnabled

Booleano

Se for true (padrão), o som é ativado durante a reprodução do anúncio de vídeo, conforme as configurações de som do dispositivo. Se for false, a reprodução do vídeo começa muda. O usuário pode silenciar ou ativar o som durante a reprodução.

backButtonImmediatelyEnabled

Booleano

Para Android apenas, se definido como verdadeiro, permite que o usuário saia imediatamente de um anúncio através do botão de voltar. Se definida como falso (padrão), 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.

immersiveMode

Booleano

Para Android apenas, se definido como verdadeiro, habilita modo imersivo em KitKat+ dispositivos. É definido como falso por padrão)

incentivizedUserId

String

Você pode definir o ID de usuário exclusivo, que será passado ao seu aplicativo, para verificar se esse usuário deve ser recompensado por assistir a um anúncio com incentivo.

flexViewCloseTimeInSec

Int

Use esta opção para fazer com que os anúncios Flex View sejam desativados automaticamente após um determinado número de segundos.
Esta função só funciona com anúncios Flex View.

incentivizedCancelDialogTitle

String

Você pode personalizar uma mensagem para ser exibida aos usuários quando tentarem fechar o vídeo antes da sua conclusão.

 

Nota: Esta opção aplica-se apenas ao tipo padrão de anúncio Vungle e não a anúncios de modelo dinâmico. A opção que aplica-se a anúncios de modelo dinâmico está disponível no painel para especificação e tem as mesmas opções.

incentivizedCancelDialogBodyText

incentivizedCancelDialogCloseButtonText

incentivizedCancelDialogKeepWatchingButtonText

Exemplo de código:

var adConfig:VungleAdConfig = new VungleAdConfig(); adConfig.orientation = VungleOrientation.ANDROID_MATCH_VIDEO | VungleOrientation.IOS_LANDSCAPE; adConfig.soundEnabled = false; android: { adConfig.backButtonImmediatelyEnabled = true; adConfig.immersiveMode = true; }; adConfig.incentivizedUserId = "vungle_test_user"; adConfig.incentivizedCancelDialogBodyText = "body_text"; adConfig.incentivizedCancelDialogCloseButtonText = "close_button_text"; adConfig.incentivizedCancelDialogKeepWatchingButtonText = "continue_button_text"; adConfig.incentivizedCancelDialogTitle = "title_text"; Vungle.vungle.playAd(placement, adConfig);

Padrões globais

Você pode usar o objeto de configuração global para definir valores padrão para estas opções:

// set any configuration options you like VungleAdConfig.globalConfig.orientation = VungleOrientation.ANDROID_MATCH_VIDEO; VungleAdConfig.globalConfig.soundEnabled = false;

Depois, cada novo objeto VungleAdConfig é criado com esses valores definidos por padrão. playAd() sem opções sempre usa a configuração global.

Nota: Enquanto seu aplicativo estiver em modo de teste, não será possível baixar nenhum dos aplicativos anunciados. Além disso, o Dashboard não informará o número de impressões. Isso acontece porque os anúncios de teste são usados somente para verificar se você integrou o SDK corretamente. Essa funcionalidade se torna disponível depois que seu aplicativo for publicado em modo ativo.

Anúncios Flex View

Para fechar programaticamente um anúncio Flex View, chame a função closeFlexViewAd depois que o anúncio tiver começado:

Vungle.vungle.closeFlexViewAd(placement);

Esta função só funciona com anúncios Flex View e apenas no Vungle SDK para iOS.

 

Outras observações

Instruções para a implementação recomendada do RGPD

Para usar as APIs da Vungle para atualizar ou consultar o status de consentimento do usuário (como recomendado na Opção 1 do RGPD: Implementação recomendada da Vungle), use as funções a seguir:

Atualização do status de consentimento

Vungle.vungle.updateConsentStatus(VungleConsent.ENUMSTATE);

Estados possíveis:

Aceito - VungleConsent.OPTED_IN // 1

Negado - VungleConsent.OPTED_OUT // 0

 

Como obter um status do consentimento atual

//Returns a VungleConsent enum

var status:int = Vungle.vungle.getConsentStatus();

 

Uso do VungleExample.as Classe de documento em Animate ou Flash Professional CS6

  1. Primeiro, crie o aplicativo e adicione a extensão seguindo as etapas de 1 a 3 deste artigo de integração.
  2. Copie e cole os anúncios na mesma pasta do seu .fla. Não copie e cole o conteúdo na linha do tempo.
  3. Altere os ids de posicionamento do aplicativo na linha 20 para serem os seus próprios Ids Vungle.
  4. Nas propriedades de Flash, em Document Class, digite VungleExample e clique em OK.
  5. Faça o build e instale o aplicativo.

Instalação de uma nova versão do SDK AIR (4.0 ou superior) em Flash Professional CS6

Siga este link para encontrar o último SDK AIR. Se você já instalou o AIR 4.0 ou superior, pode pular essa etapa. Caso contrário, siga as instruções abaixo:

  1. Descompacte o pacote SDK AIR 4.0, ou superior, em um local do seu disco rígido.
  2. Inicie o Flash Professional CS6.
  3. Selecione Help → Manage AIR SDK...
  4. Clique no botão + (adição) e navegue até o local do SDK AIR descompactado.
  5. Clique em OK.
  6. Selecione File → Publish Settings.
  7. Selecione o SDK AIR para iOS mais recente no menu suspenso Target.

Instalação de uma nova versão do SDK AIR (4.0 ou superior) em Flash Builder

Siga este link para encontrar o último SDK AIR. Se você já instalou o AIR 4.0 ou superior, pode pular essa etapa. Você pode também usar as últimas instruções da Adobe para atualização de SDKs do Flash Builder AIR.

Resolução do erro 'Adobe Animate Invalid Input'

Se estiver recebendo um erro como o que aparece na imagem abaixo, consulte este artigo.

image2.png

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

Comentários