Appnext para Monetizar sua APP Android

Investir em Você é Barra de Ouro a R$ 2,00. Cadastre-se e receba grátis conteúdos Android sem precedentes! Você receberá um email de confirmação. Somente depois de confirma-lo é que eu poderei lhe enviar os conteúdos semanais exclusivos. Os artigos em PDF são entregues somente para os inscritos na lista.

Email inválido.
Blog /Android /Appnext para Monetizar sua APP Android

Appnext para Monetizar sua APP Android

Vinícius Thiengo
(6148) (2)
Go-ahead
"O método consciente de tentativa e erro é mais bem-sucedido que o planejamento de um gênio isolado."
Peter Skillman
Prototipagem Android
Capa do curso Prototipagem Profissional de Aplicativos
TítuloAndroid: Prototipagem Profissional de Aplicativos
CategoriasAndroid, Design, Protótipo
AutorVinícius Thiengo
Vídeo aulas186
Tempo15 horas
ExercíciosSim
CertificadoSim
Acessar Curso
Quer aprender a programar para Android? Acesse abaixo o curso gratuito no Blog.
Lendo
TítuloManual de DevOps: como obter agilidade, confiabilidade e segurança em organizações tecnológicas
CategoriaEngenharia de Software
Autor(es)Gene Kim, Jez Humble, John Willis, Patrick Debois
EditoraAlta Books
Edição1ª
Ano2018
Páginas464
Conteúdo Exclusivo
Investir em Você é Barra de Ouro a R$ 2,00. Cadastre-se e receba gratuitamente conteúdos Android sem precedentes!
Email inválido

Tudo bem?

Neste artigo será apresentado como gerar ganhos em seu aplicativo Android com anúncios que permitem instalações de outros aplicativos.

Mais precisamente... vamos estar falando sobre a plataforma de anúncios mobile (e Web), Appnext.

Antes de prosseguir, não deixe de se inscrever 📩 na lista de emails do Blog para ter acesso aos conteúdos exclusivos sobre desenvolvimento Android e à versão em PDF dos artigos (libero essa versão somente aos inscritos da lista de e-mails).

Abaixo os tópicos que estaremos abordando em artigo:

Sendo assim... podemos prosseguir.

O que é? Como funciona?

Diferente de algumas outras plataformas de anúncios mobile já apresentadas aqui no Blog, o Appnext trabalha com o formato CPI (Cost-Per-Install - Custo por instalação).

O mais comumente trabalhado é o formato CPC (Cost-Per-Click) ou o CPM (Cost-Per-Thousand-Impressions).

Ok, mas qual é a vantagem desse CPI para os outros formatos?

A vantagem é principalmente enxergada pelos anunciantes. Pois muitos desses têm como objetivo engajar usuários para instalarem seus aplicativos.

Com o Appnext o pagamento somente ocorre se o aplicativo chegar a ser instalado pelo user.

Ou seja, para anunciantes é algo excelente, pois esses não perdem dinheiro com cliques e impressões que não geram instalações.

Algo que é prometido pela plataforma são os ganhos sendo tão bons quanto outras plataformas de anúncios mobile.

No caso de anúncios no ambiente Web, o Appnext promete até 8x mais ganhos que os anúncios convencionais (AdSense, por exemplo).

Note que com o Appnext é possível também colocar anúncios em seu Web site e IOS app.

Tem alguma lógica de negócio para a apresentação dos anúncios?

Quando no device mobile, a API do Appnext trabalha no background para conhecer os tipos de apps instalados no device e então apresentar aplicativos similares para ele nos anúncios, aumentando ainda mais as chances de instalacão do aplicativo anunciante.

Construindo o projeto de anúncios Appnext

O projeto aqui será simples, somente com o objetivo de apresentar as principais formas de trabalhar anúncios do Appnext em nossos aplicativos Android.

Comece criando um projeto com o nome "AppNext Ads Test".

Logo depois nosso primeiro passo é com as configurações do projeto. No Gradle Top Level, build:gradle(Project: AppNextAdsTest), temos:

buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.2.0-rc1'
}
}
allprojects {
repositories {
jcenter()
maven { url "http://repo.appnext.com/" } /* ADICIONE ESSA LINHA. */
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}

 

Então seguimos com as configurações do Gradle App Level, build:gradle(Module: app):

apply plugin: 'com.android.application'

android {
compileSdkVersion 24
buildToolsVersion "24.0.2"

defaultConfig {
applicationId "br.com.thiengo.appnextadstest"
minSdkVersion 14
targetSdkVersion 24
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}

buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})

compile 'com.android.support:appcompat-v7:24.2.1'
testCompile 'junit:junit:4.12'
compile('com.appnext.sdk:appnext-sdk:+') /* ADICIONE ESSA LINHA */
}

 

Note que a API Android mínima é a 14.

Agora as permissões no AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="br.com.thiengo.appnextadstest">

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

...
</manifest>

 

Com isso podemos ir ao Appnext dashboard.

Comece criando uma conta entrando em http://www.appnext.com/ e logo depois clicando em "JOIN NOW".

Depois de preencher o formulário você terá de confirmar o email para então ter acesso ao dashboard.

Confirmado o email, acesse o Appnext e então uma box de configuração será apresentada.

Pode fechar essa box, você terá algo similar a:

Dashboard Appnext

Clique no botão "add new app". Logo depois clique no símbolo do Android e em seguida marque a opção "My app is not yet published".

Caso seu aplicativo já esteja em produção, preencha o campo "Store Listing URL" ou "App Package" e desmarque a opção "My app is not yet published".

Então clique em "Next":

Selecionando a plataforma de um novo aplicativo no Appnext

Agora coloque o nome de seu aplicativo em "App name" e forneça uma "imagem logo" dele, respeitando as dimensões informadas. Essa imagem é opcional.

Então clique em "Next":

Configurando um novo aplicativo no Appnext

Agora selecione três categorias que correspondem ao conteúdo de seu aplicativo.

Então clique em "Next":

Selecionando a categoria de um novo aplicativo no Appnext

Para finalizar a inscrição de seu aplicativo, coloque uma descrição nele.

Inclua na descrição o número de usuários ativos, instalações e tudo mais que puder informar aos anunciantes o porquê de anunciar em seu app:

Descrição, para anunciantes, um novo aplicativo no Appnext

Mas eu tenho de conseguir anunciantes na "lábia"?

Não, não. Isso é somente para caso algum anunciante queira anunciar diretamente com seu aplicativo, ele poderá comprar um pacote de anúncios nele.

Preenchendo esse conteúdo de descrição e um outro de valores mínimos de CPI (que vamos apresentar no decorrer do conteúdo), seu aplicativo ficará disponível no Appnext Market:

Appnext Market

Agora copie o "Placement ID", que apareceu depois de clicar em "Next" na última tela de inscrição, e coloque em seu aplicativo, mais precisamente na MainActivity, como comentário:

public class MainActivity extends AppCompatActivity {

// 8f176c19-25a6-4086-be10-7756ff7baf75

...
}

 

Logo depois clique em "Go to Tools":

Finalizando a configuração de um novo aplicativo Android no Appnext

O "Create Campaigns" é para quem vai anunciar o app.

Depois do clique em "Go to Tools" você será direcionado para a documentação.

Essa parte fornece o passo a passo para colocarmos os anúncios do Appnext em nosso aplicativo, incluindo alguns projetos prontos no GitHub deles.

Aqui vamos seguir o tutorial sem precisar voltar na documentação.

Somente note que há três opções de implementação para o Android:

  • Interstitial SDK:
    • Permite apresentarmos um anúncio interstitial na tela. Mais de um aplicativo é apresentado nesse anúncio;
  • Fullscreen Video SDK:
    • Pode ser Fullscreen ou Rewarded Video, ambas as opções apresentam um vídeo fullscreen, porém na opção Rewarded podemos, junto a lógica de negócio de nosso app, dar incentivos ao usuário para assistir ao vídeo anúncio até o final;
  • Native SDK:
    • Essa permite que criemos nossos próprios modelos de apresentação de anúncio. Essa versão é um pouco mais "core", logo não vamos apresentá-la aqui.

Note que em "Rewarded Video" nós não podemos criar incentivos para a instalação do aplicativo que será apresentado no vídeo anúncio.

Somente incentivos para assistir ao vídeo, isso, pois o incentivo a instalação fere os termos e condições de uso da plataforma Appnext.

Interstitial

Agora vamos a codificação.

Logo na MainActivity do projeto adicione:

public class MainActivity extends AppCompatActivity {

private Interstitial interstitial;

@Override
protected void onCreate( Bundle savedInstanceState ) {
super.onCreate( savedInstanceState );
setContentView( R.layout.activity_main );

interstitial = new Interstitial( this, "Seu Placement ID" );
interstitial.setOnAdLoadedCallback( new OnAdLoaded() {

@Override
public void adLoaded() {

Log.i( "log", "adLoaded()" );
}
});
interstitial.loadAd();
}
}

 

Veja como adicionamos o listener de anúncio carregado, setOnLoadedCallback().

Para anúncio clicado, fechado, aberto e com erro seguimos o mesmo modelo, porém com os métodos:

  • setOnAdClickedCallback();
  • setOnAdClosedCallback();
  • setOnAdOpenedCallback();
  • setOnAdErrorCallback().

Note que anúncio carregado somente indica que podemos "a partir de então" apresentá-lo, ou seja, ele ainda não está na tela.

Essa é uma ação que vamos acionar via código, mais precisamente quando o usuário do aplicativo clicar em um Button do layout abaixo, mais precisamente o Button do label "Mostrar Ad".

Então no layout, activity_main.xml, siga a seguinte configuração:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="br.com.thiengo.appnextadstest.MainActivity">

<Button
android:id="@+id/button_1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:onClick="openActivity"
android:text="Full Screen Video" />

<Button
android:id="@+id/button_2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/button_1"
android:onClick="openActivity"
android:text="Rewarded Video" />

<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/button_2"
android:onClick="displayAd"
android:text="Mostrar Ad" />
</RelativeLayout>

 

Note que os Buttons de ids: button_1 e button_2. Esses Buttons já nos indicam, junto ao onClick="openActivity", que teremos nesse projeto duas outras activities.

Antes de criar essas activities vamos trabalhar a configuração do anúncio interstitial que vamos abrir a partir da MainActivity.

Logo adicione o seguinte código a ela:

public class MainActivity extends AppCompatActivity {
...

public void openActivity( View view ){
/* TODO */
}

public void displayAd( View view ){

if( interstitial.isAdLoaded() ){
interstitial.showAd();
}
}
}

 

Veja que há a necessidade de verificarmos se o anúncio foi carregado antes de querer apresentá-lo. Isso é necessário devido a Internet do usuário. Sem Internet, sem anúncio.

Antes de prosseguir com o teste do aplicativo, vamos adicionar algumas configurações ao anúncio interstitial, mais precisamente alterar o label do Button de sair que já vem com o label "Skip".

Alterar também o label do Button de instalar que vem com o label "Install".

Nesse último Button vamos alterar também a cor dele, para vermelho (#FF0000).

Para realizarmos, com as alterações, precisamos utilizar uma instância de InterstitialConfig e uma outra sobrecarga de construtor de Interstitial.

Segue código atualizado:

public class MainActivity extends AppCompatActivity {
...

@Override
protected void onCreate( Bundle savedInstanceState ) {
super.onCreate( savedInstanceState );
setContentView( R.layout.activity_main );

interstitial = new Interstitial(
this,
"Seu Placement ID",
getConfig()
);
...
}
...

private InterstitialConfig getConfig(){

InterstitialConfig config = new InterstitialConfig();
config.setButtonText( "Instalar" );
config.setButtonColor( "#FF0000" );
config.setSkipText( "Sair" );

return config;
}
}

 

Com o método getConfig() conseguimos criar esse objeto de configuração de forma encapsulada.

Agora podemos executar o projeto e então temos:

Tela principal do aplicativo Android de testes com a API do Appnext

Clicando em "MOSTRAR AD" temos:

Anúncio Interstitial Android do Appnext

Lembrando que somente receberemos o pagamento do anúncio depois que o usuário instalar algum dos aplicativos indicados no anúncio interstitial.

Com isso podemos seguir com a configuração das outras activities dos outros anúncios.

FullScreenVideo

Começando com a FullScreenActivity, segue código Java:

public class FullScreenActivity extends AppCompatActivity {

@Override
protected void onCreate( Bundle savedInstanceState ) {
super.onCreate( savedInstanceState );
setContentView( R.layout.activity_content );
}
}

 

Agora o layout activity_content.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="br.com.thiengo.appnextadstest.FullScreenActivity" />

 

Por que activity_content.xml?

Porque eu alterei o nome da atividade, mas não o do layout dela. Falha minha.

Antes de prosseguir com os códigos em FullScreenActivity, atualize as tags de Activity em AndroidManifest.xml.

Segue:

<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="br.com.thiengo.appnextadstest">

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">

<activity android:name=".MainActivity">

<intent-filter>

<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>

<activity android:name=".FullScreenActivity" />

<activity android:name=".RewardedActivity" />
</application>
</manifest>

 

Assim, em FullScreenActivity, adicione os seguintes códigos:

public class FullScreenActivity extends AppCompatActivity {
private FullScreenVideo fullScreenVideo;

@Override
protected void onCreate( Bundle savedInstanceState ) {
super.onCreate( savedInstanceState );
setContentView( R.layout.activity_content );

fullScreenVideo = new FullScreenVideo( this, "Seu Placement ID" );
fullScreenVideo.setOnAdClosedCallback( new OnAdClosed() {

@Override
public void onAdClosed() {

finish();
}
});
fullScreenVideo.loadAd();
}

@Override
public void onBackPressed() {

if( fullScreenVideo.isAdLoaded() ){

fullScreenVideo.setVideoLength( FullScreenVideo.VIDEO_LENGTH_SHORT );
fullScreenVideo.showAd();
}
else{

finish();
}
}
}

 

Veja que nosso objetivo nessa atividade foi apresentar o anúncio em vídeo somente quando o usuário saísse dela, assim temos certeza de que não vamos interrompe-lo consumindo nenhum conteúdo.

Para que isso fosse possível sobrescrevemos o método onBackPressed() e somente com o fechamento do anúncio em vídeo é que saímos da atividade.

Temos um "ponto fora da curva" que é quando o anúncio não foi carregado ainda e o usuário já decidiu deixar a FullScreenActivity.

Nesse caso saímos da atividade sem apresentar anúncio.

Note que no código anterior temos a chamada a setVideoLength().

Nesse método podemos escolher dentre os vídeo do anunciante: o menor, o mais longo ou o padrão (um dos dois anterior).

Porém é importante saber que o anunciante pode ter fornecido somente um vídeo, nesse caso é somente ele que será utilizado independente da constante utilizada:

  • FullScreenVideo.VIDEO_LENGTH_SHORT;
  • FullScreenVideo.VIDEO_LENGTH_LONG;
  • FullScreenVideo.VIDEO_LENGTH_DEFAULT.

Executando o projeto, clicando em "FULL SCREEN VIDEO" temos:

Anúncio Android Full Screen do Appnext

RewardedVideo

Agora somente falta o RewardedVideo, esse é muito similar ao FullScreenVideo, somente tem métodos de Reward como opcionais a mais.

Vamos iniciar criando a RewardedActivity:

public class RewardedActivity extends AppCompatActivity {

@Override
protected void onCreate( Bundle savedInstanceState ) {
super.onCreate( savedInstanceState );
setContentView( R.layout.activity_rewarded );
}

public void displayAd( View view ){

}
}

 

E então o layout, activity_rewarded.xml.

Esse terá um button que invocará, no clique, o método displayAd():

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_rewarded"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="br.com.thiengo.appnextadstest.RewardedActivity">

<Button
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:text="Assista para ganhar mais pontos"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="displayAd"/>
</RelativeLayout>

 

Assim prosseguimos com as atualizações em RewardedActivity.

Adicione o seguinte código:

public class RewardedActivity extends AppCompatActivity {
private RewardedVideo rewardedVideo;

@Override
protected void onCreate( Bundle savedInstanceState ){
super.onCreate( savedInstanceState );
setContentView( R.layout.activity_rewarded );

rewardedVideo = new RewardedVideo( this, "Seu Placement ID" );
rewardedVideo.setOnAdLoadedCallback( new OnAdLoaded() {

@Override
public void adLoaded() {

rewardedVideo.setRewardsAmountRewarded( "1000" );
rewardedVideo.setRewardsUserId( "65s4d6v5sd4v" );
rewardedVideo.setRewardsRewardTypeCurrency( "points" );
}
});
rewardedVideo.loadAd();
}

public void displayAd( View view ){

if( rewardedVideo.isAdLoaded() ){

rewardedVideo.setVideoLength( FullScreenVideo.VIDEO_LENGTH_SHORT );
rewardedVideo.showAd();
}
}
}

 

Acredito que o único código que soa estranho a ti é o referente ao conteúdo de adLoaded(), certo?

...
rewardedVideo.setRewardsAmountRewarded( "1000" );
rewardedVideo.setRewardsUserId( "65s4d6v5sd4v" );
rewardedVideo.setRewardsRewardTypeCurrency( "points" );
...

 

Quando trabalhamos com o RewardedVideo o Appnext presume que nós vamos de alguma forma criar a lógica de negócio que premie o usuário que assistir por completo o vídeo anúncio que será apresentado depois da chamada a showAd().

Em nosso caso estamos simulando que o usuário ganhará "1000" pontos, que o ID dele em nosso sistema é "65s4d6v5sd4v" e que o tipo de prêmio é "points".

Por isso a utilização dos métodos em adLoaded().

Poderíamos colocar ainda mais métodos de configuração de premiação, mas em nosso domínio do problema somente esses são o suficiente.

Ok, mas para que esses dados e para onde eles vão?

Esse dados são necessários para que possamos realmente premiar os usuários que visualizarem o vídeo anúncio por completo.

Lembrando que ele será premiado em nosso aplicativo e não no Appnext.

Prêmios de exemplo:

  • Pontos extras;
  • Moedas para compras;
  • Partes pagas do app liberadas temporariamente.

Nós é que escolhemos.

Esses dados vão para nosso backend e não para o do Appnext, assim saberemos quem assistiu ao vídeo.

Note que os dados configurados são chamados de dados "postback".

Por que a configuração desses dados de postback é necessária antes de abrir o anúncio?

Porque essa é a forma indicada na documentação do Appnext, tendo em mente que somente quando o vídeo é finalizado é que o Appnext realiza o envio para nosso backend, ou seja, somente abrir o anúncio não é o suficiente.

Para que seja possível utilizar dados de postback é preciso configurar uma url publica na dashboard do Appnext.

Acesse, no menu superior, "Apps" e logo depois clique em "Manage Apps".

Então clique na engrenagem logo no início da linha do aplicativo que criamos no Appnext, depois clique em "Settings & Placements" como abaixo:

Área de gerenciamento de aplicativos no Appnext

Antes de clicar em "Settings & Placements" note a coluna "Set-up progress", essa é a coluna que indica que já temos tudo configurado e assim já é possível realizar os ganhos.

A opção "Integrate Tools" nos leva a página de configurações da SDK, a que acessamos logo depois de configurarmos nosso aplicativo de teste, no início do artigo.

A opção "Promote APP" é para quando você quer anunciar seu app e as opções "Set Tracking" e "Delete APP" fazem exatamente o que indicam: configuração de analise e remoção de aplicativo.

Na página aberta depois do clique em "Settings & Placement" temos possibilidades de edição, incluindo a criação de mais de um Placement ID.

Mas o que nos interessa agora está na página carregada depois do clique em "Advanced Settings", logo clique nesse botão.

Você entrará em uma página como:

Configurações avançadas no dashboard Appnext

A aba "Opt Out" permite que você filtre os tipos de campanhas que não quer que sejam apresentadas em seu aplicativo.

A aba "Minimum serving" permite que você coloque os valores mínimos aceitos de pagamentos.

Somente campanhas com valores iguais ou superiores aos definidos em seu CPI ou eCPM é que aparecerão em seu app.

A aba "Direct Buy Pricing" permite que você defina o valor de CPI mínimo aceito em seu aplicativo.

Esse é também o preenchimento que concluirá a apresentação de seu app na Appnext Market.

As abas "Minimum serving" e "Direct Buy Pricing" permitem que você defina os valores também de acordo com o país do anunciante.

A aba "App Install Postback" permite que você defina como serão enviados (e se serão) dados ao seu backend depois que algum usuário instalar algum aplicativo partindo de seu app com Appnext.

A configuração de "App Install Postback", a princípio, somente funciona se seu app já estiver em produção, caso contrário, ao menos em meus testes, nada será enviado.

Agora a aba que nos interessa, ao menos para trabalharmos com os valores de RewardedVideo.

A aba "Rewarded Video Postback" nos permite definir as configurações de backend que utilizaremos para receber dados do usuário premiado, dados enviados dos servers de Appnext.

Caso você tenha um domínio público que possa utilizar nos testes, siga em frente.

No campo "Step 1: Add your base url" coloque o caminho completo, em seu servidor, para acesso a página que processará os dados de usuário premiado.

Em meu caso estou no localhost.

Para conseguir que os servers do Appnext se comuniquem com minha máquina utilizei o Ngrok (https://ngrok.com/) que facilmente nos permite liberar nossa máquina, e localhost, na rede, Web.

Para executar o Ngrok, navego, via prompt de comando, até o diretório onde ele se encontra e executo:

./ngrok http 8888

Coloquei 8888, pois é a porta que utilizo em meu localhost, o seu provavelmente é 80.

Verifique antes. Assim tenho: 

ngrok para testes local no ambiente Android

A url que vou utilizar no campo "Step 1: Add your base url" será a: http://25948f41.ngrok.io/android-payment/package/ctrl/CtrlReward.php

Para os campos seguintes somente vou utilizar "User ID", "Reward type / Currency" e "Amount rewarded".

Aqui em nosso domínio do problema esses já serão o suficiente.

Veja como ficou:

Configurações para anúncios Android avançados com o Appnext

Logo abaixo, clicando em "Test", é possível saber se os dados realmente estão chegando ao seu backend.

Em meu caso estou com um simples backend em PHP:

<?php
$file = fopen( 'data.txt', 'w' );

foreach( $_GET as $key=>$value ){

fwrite( $file, $key.' => '.$value."\n" );
}

fclose( $file );

 

O que ele faz é gerar um arquivo com as chaves e valores dos dados GET enviados a ele. Note que o envio de Appnext é via GET.

Em meu caso rodou sem problemas, veja o conteúdo do arquivo gerado:

user-id => $appnext_rewardsUserId$
type => $appnext_rewardsRewardTypeCurrency$
amount => $appnext_rewardsAmountRewarded$

 

Clique em "Save" e logo acima deverá aparecer um check verde ao lado do termo "Active".

Agora podemos seguramente prosseguir com nosso projeto Android. Execute ele e logo depois clique em "REWARDED VIDEO" e então clique em "ASSISTA PARA GANHAR MAIS PONTOS".

Teremos algo como:

Anúncio Android Rewarded Video do Appnext

Depois de vídeo finalizado, tanto em FullScreenVideo como em RewardedVideo, temos:

Final do anúncio Android Rewarded Video do Appnext

Assim acabamos os testes com o Appnext.

Caso queira acompanhar os números (impressões, valores, cliques, instalações e outros), vá ao menu do topo e clique em "Revenue", terá algo como:

Dados de ganhos monetários no dashboard Appnext

Os dados são atualizados de hora em hora. Porém novos aplicativos levam até 48 horas para começarem a ter dados apresentados.

Plataformas complementares para monetização

A plataforma Appnext na verdade pode trabalhar como complemento a outras plataformas de anúncios já apresentadas aqui no blog.

Segue:

  • AppOdeal: plataforma de anúncio que tem foco no desenvolvedor do aplicativo, ou seja, apresenta os anúncios que mais trarão lucros a ele;
  • APPJolt: apresenta anúncio quando há remoção do app. Outro ponto é o trabalho com dados de research, ou seja, sem necessidade de apresentar anúncios a API do APPJolt coleta dados dos usuários de seu aplicativo e com isso você ganha ainda mais;
  • Huq: igualmente o APPJolt quanto ao trabalho com research data, você não apresenta anúncios e ainda ganha com a coleta de dados. Porém esse tem um modelo de negócio mais limitado. Você somente ganha se os dados de seus usuários estiverem nos dados vendidos pela Huq;
  • Smaato: como formatos similares ao AppOdeal e ao AdMob, tem a monetização no modelo convencional, CPM ou CPC.

Colocando o Appnext junto as formas de monetização citadas anteriormente, os ganhos de seu aplicativo tende a aumentar.

Note que como em outras plataformas, com o Appnext você pode receber via Paypal ou via transferência bancária.

Vídeo com implementação passo a passo

Abaixo o vídeo com a implementação passo a passo do projeto proposto aqui:

Para acessar o projeto por completo entre no GitHub a seguir: https://github.com/viniciusthiengo/appnext-ad-test.

AndroidX

Apesar do conteúdo sobre a monetização Android via Appnext ainda estar atual.

Apesar disso eu também recomendo, assim que finalizado o projeto de exemplo em sua própria instalação de IDE, que você o migre para o AndroidX.

Algo que pode ser feito com poucos cliques, como apresentado no tutorial a seguir: Migrar para o AndroidX.

Conclusão

O modelo de anúncios do Appnext tende a atrair mais anunciantes, pois o pagamento somente ocorre quando há instalação do aplicativo.

Devido a essa efetividade, digo, ao pagamento somente com a instalação, a cobrança por instalação deve ser alta, ou seja, os valores cobrados pelo Appnext devem ser mais altos que os convencionais por CPC ou CPM.

Um forte indicio disso são os questionamentos de anunciantes no fórum, comunidade da plataforma. Há reclamações de cobranças muito altas.

Com valores altos, nós desenvolvedores poderemos com isso ter ganhos maiores também.

Ganhos até mesmo maiores que os ganhos oferecidos pelo AppOdeal que foi feito para otimizar os rendimentos financeiros dos aplicativos.

Obviamente que mais testes devem ser feitos para realmente saber se os retornos com o Appnext são aceitáveis.

Tendo em mente que essa plataforma complementa muitas outras.

Então é isso.

Curtiu o conteúdo? Não esqueça de compartilha-lo. E, por fim, não deixe de se inscrever na 📩 lista de emails e garantir também às versões em PDF dos artigos Android exclusivos do Blog.

Abraço.

Fontes

Site oficial Appnext

What Is Cost-Per-Install Advertising?

Investir em Você é Barra de Ouro a R$ 2,00. Cadastre-se e receba grátis conteúdos Android sem precedentes!
Email inválido

Relacionado

Monetização sem Anúncios utilizando a Huq SDKMonetização sem Anúncios utilizando a Huq SDKAndroid
Padrão de Projeto: Template Method (Método Template)Padrão de Projeto: Template Method (Método Template)Android
ConstraintLayout, Melhor Performance no AndroidConstraintLayout, Melhor Performance no AndroidAndroid
Checkout Transparente da Web no AndroidCheckout Transparente da Web no AndroidAndroid

Compartilhar

Comentários Facebook

Comentários Blog (2)

Para código / script, coloque entre [code] e [/code] para receber marcação especifica.
Forneça seu nome válido.
Forneça seu email válido.
Forneça o comentário.
Enviando, aguarde...
Neilomar (1) (0)
13/12/2019
Como eu utilizo o appnext no construct 2?, o construct 2 e um software usado para construção de app para android e ios windows phone, e html5, e outros.
Responder
Vinícius Thiengo (0) (0)
27/12/2019
Neilomar, tudo bem?

O AppNext libera APIs para diversas plataformas de desenvolvimento de aplicativos, até mesmo plataformas de desenvolvimento de aplicativos de jogos.

Até fiz uma busca em relação a alguma API ou SDK do AppNext para o Construct 2.

Não encontrei nada de relevante.

Mas encontrei artigos sobre monetização de aplicativos desenvolvidos com o Construct 2. Monetização sem o AppNext.

Veja se algum lhe ajuda com isso:

-> https://www.construct.net/en/tutorials/how-to-monetize-your-appgame-460

-> https://www.construct.net/en/tutorials/monetizing-games-construct-362

Neilomar, é isso.

Surgindo mais dúvidas, pode perguntar.

Abraço.
Responder