Receba em primeira mão o conteúdo exclusivo do Blog, além de promoções de livros e cursos de programação. Você receberá um email de confirmação. Somente depois de confirmar é que poderei lhe enviar o conteúdo exclusivo por email.

Email inválido.
Blog /Android /Monetizando Sua APP Android Com AppJolt no Uninstall

Monetizando Sua APP Android Com AppJolt no Uninstall

Vinícius Thiengo01/02/2016, Segunda-feira, às 00h
(1031) (19) (21)
Go-ahead
"Construa uma voz e uma opinião em primeiro lugar e, em seguida, se essas ressoam com o público, então você vai ter uma audiência."
Adam Carolla
Código limpo
Capa do livro Refatorando Para Programas Limpos
TítuloRefatorando Para Programas Limpos
CategoriaEngenharia de Software
AutorVinícius Thiengo
Edição
Ano2017
Capítulos46
Páginas598
Comprar Livro
Conteúdo Exclusivo
Receba em primeira mão o conteúdo exclusivo do Blog, além de promoções de livros e cursos de programação.
Email inválido

Opa, blz?

Nesse post vamos trabalhar a library da startup AppJolt. A library vai nos permitir disponibilizar conteúdo (anúncios em sua maioria) logo depois de o user de nossa APP desinstala-la ou atualiza-la, O conteúdo é apresentado no navegador mobile.

Essa é uma maneira inovadora de obtermos mais ganhos com nossas APPs e também poder saber de nossos ex-users o porquê de eles estarem deixando a APP. Em muitos casos, o saber porque os users estão deixando a APP pode ser muito mais importante, pois a retenção deles junto a melhoria da APP no caminho correto (de acordo com a resposta do questionário de desinstalação) é a principio mais importante para o sucesso da APP.

A AppJolt é uma startup nova, tem menos de um ano que o produto deles esta liberado e o principal foco é em desenvolvedores de games, mas qualquer APP pode utilizar a library (.jar) do AppJolt.

Fique ligado que para utilizar o AppJolt você não precisará remover o APPODEAL ou qualquer outra library que anúncios no contexto padrão (dentro da APP), pois o AppJolt trabalha como se fosse uma library de complemento para aumentar os ganhos ou entendimento do porquê os users estão deixando a APP.

Assim que realizar o cadastro você já ganha 50 dólares, não é para gastar com anúncios, é seu, porém somente pode ser resgatado assim que você atingir um total de 100 dólares. Para cada amigo que se cadastrar com seu link (encontrado no menu do topo, lado direito, botão "Referral Program") e ainda colocar uma APP na PlayStore utilizando o AppJolt você ganha 25 dólares.

Abaixo vou lhe guiar na configuração e utilização do AppJolt. No fnal do post tem um vídeo com o conteúdo completo e comentado.

Primeiro entre no site http://www.appjolt.com/, logo depois no menu superior, lado direito, clique em "Sign Up". Crie sua conta e novamente no menu, no lado esquerdo, clique em "Log In". Entre com suas credenciais e conecte-se ao AppJolt.

 

O próximo passo é baixar o AppJolt Android SDK. No menu lateral esquerdo clique em "Android SDK". Logo depois clique no botão de download da Android SDK (o primeiro de cima para baixo). Realizado o download, descompacte o .zip e em seu projeto (assumindo que já criou um projeto vazio - Empty project) coloque a visualozação de hierarquia do projeto em modo "Project" (o padrão é "Android") como abaixo:

 

Coloque dentro do folder "libs" o arquivo .jar que estava dentro do .zip como na figura abaixo:

 

Agora é setar no Gradle (Module: app) a referência ao arquivo .jar como abaixo:

...
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.1.1'

compile files('libs/appjolt-sdk-2.8.72.jar')
}
...

 

Logo depois, abara o AndroidManifest.xml e coloque as seguintes permissões (fora da tag <application>):

...
<!-- Appjolt - Required -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<!-- Appjolt - Highly Recommended -->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
...

 

Note que se já estiver desenvolvendo para Android 6 (Marshmallow) e compilando com API 23 ou maior, terá de utilizar requisição de permissão em tempo de execução como nesse vídeo do Blog: Sistema de Permissões em Tempo de Execução, Android M.

Agora, ainda no AndroidManifest.xml coloque as seguintes configurações dentro da tag <application> (coloque no final dela):

...
<!-- Appjolt -->
<!-- Appjolt Activity -->
<activity android:name="com.appjolt.sdk.AppjoltActivity"
android:taskAffinity="com.appjolt.sdk.twentyeight"
android:configChanges="orientation|keyboardHidden|screenSize"
android:hardwareAccelerated="false"/>

<!-- Appjolt Service -->
<service
android:name="com.appjolt.sdk.AppjoltService"
android:enabled="true"
android:process=":appjolt" />

<!-- Appjolt BOOT receiver -->
<receiver
android:name="com.appjolt.sdk.AppjoltReceiver"
android:enabled="true"
android:exported="true">

<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.intent.action.MY_PACKAGE_REPLACED" />
</intent-filter>
</receiver>
...

 

Note que na tag <service> não utilizamos o atributo android:exported="true". Caso esteja você com o AndroidStudio atualizado, não terá problemas quanto a isso, caso não esteja e os anúncios não sejam apresentados, tente colocando esse atributo.

Agora é criar uma application personalizada para que seja possível a inicialização do AppJolt. Segue código de MyApplication.java que está na rais do projeto como a MainActivity.java:

import android.app.Application;
import com.appjolt.sdk.Appjolt;

public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();

Appjolt.init( this );
}
}

 

Se não entende o que é uma Application, veja esse vídeo do Blog: Application Class no Android, Entendendo e Utilizando

Agora é voltar ao AndroidManifest.xml e atualizar a tag <application> colocando o atributo android:name com a referência de nossa MyApplication:

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

 

Segue código da MainActivity:

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import com.appjolt.sdk.Appjolt;

public class MainActivity extends AppCompatActivity {

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

/* Appjolt - Show EULA only in Google Play Installs (and Debug mode) */
/* Please make sure this is added to the Activity onCreate and not Application like the init() method. */
if (Appjolt.isGooglePlayInstall(this))
{
Appjolt.showEULA(this);
}

Appjolt.addUserSegment(this, "Buyer");
}
}

 

No código acima note que tem um trecho de verificação do Google Play e logo depois, dentro do condicional, a chamada a showEULA(). Esse showEULA se refere a uma dialog que devemos apresentar ao user da APP antes que ele prossiga com a utilização dela. Pois como vamos apresentar conteúdo proveniente da APP depois de ele já ter desinstalado ela, essa apresentação da dialog sobre End User License Agreement (EULA) para confirmação dele é necessária, caso contrário o Google tende a remover nossa APP da PlayStore.

Alias esse é um dos pontos negativos da APP, pois nessa parte pode ocorrer algumas desistências em continuar com a APP, isso por parte dos users. Mas é aquilo, primeiro devemos testar para termos os verdadeiros números, para então tomar uma decisão quanto a continuar ao não com o AppJolt. Veja abaixo como é a tela de verificação e informação do EULA:

 

O trecho de código que tem a chamada a addUserSegmente() está ali somente para mostrar a maneira que podemos colocar tags aos users da APP de acordo com as ações tomadas por ele, nela.

Volte ao dashboard Web do AppJolt e no menu esquerdo clique em "Applications". Logo depois clique em "+ Add Application".

Vou assumir que esta com a APP ainda em ambiente de desenvolvimento, dessa forma, abaixo do "- OR -" preencha os dados de sua APP. O packagename de sua APP se encontra na tag <manifest> no atributo "package" do arquivo AndroidManifest.xml.

Preenchido o formulário, agora crie uma campanha clicando em "+ Add Campaign", no modal aberto clique em "Monetize".

Na página, terá um formulário onde no campo "Campaign name" você pode entrar com qualquer nome de sua escolha, sempre evite palavras acentuadas no AppJolt, eles ainda não programaram o site para isso (really!). No campo "Region" pode deixar "Global" ou selecionar Brazil (portuguese).

Clique em "Optional settings" e no campo "User Segments" coloque "Buyer". Logo depois clique em "Create Campaign".

Note que o status de sua APP no AppJolt provavelmente ainda estará "Awaiting SDK integration", logo depois que executar sua APP no emulador esse status vai para "Approved".

Agora é voltar ao AndroidStudio, no menu superior clique em "Build" logo depois em "Rebuild Project":

 

Agora é somente executar a APP e logo depois remove-la do device, dessa forma você deve obter algo similar ao print do emulador abaixo:

 

Well done. Agora já é possível ampliar a receita de sua APP com anúncios pós uninstall ou saber por meio de surveis (questionários) o porquê do user estar deixando a APP e então trabalhar a APP para melhorar a questão mais frequente.

No dashboard do AppJolt você tem todo esse controle, incluindo as respostas dos surveis.

Até o lançamento desse post o AppJolt ainda não trabalhava com Android Lollipop ou superior. A plataforma Web tinha ainda muitos bugs com palavras acêntuadas. Porém o suporte é muito bom e ainda tem a opção de monetização com "Marketing Research", onde nada é apresentado ao user e mesmo assim, devido aos trabalhos de coleta de dados no background, a APP está sendo monetizada.

Conteúdo completo no GitHub: https://github.com/viniciusthiengo/AdsAppJolt

Segue vídeo de implementação do projeto, note que no vídeo ainda tem a implementação da versão Survey.

Seguem links das postagens também utilizadas para estudo do AppJolt:

AppJolt

AppJolt Releases Solution for Monetizing App Uninstalls

Monetizing Uninstalls ?? AppJolt

Vlw.

Receba em primeira mão o conteúdo exclusivo do Blog, além de promoções de livros e cursos de programação.
Email inválido

Relacionado

KISS - Mantenha Isso Estupidamente SimplesKISS - Mantenha Isso Estupidamente SimplesAndroid
Iniciando com Mapbox Android SDK - Parte 1Iniciando com Mapbox Android SDK - Parte 1Android
Engenharia de Software: Código Limpo na PráticaEngenharia de Software: Código Limpo na PráticaDesenvolvimento Web
Código Limpo - Habilidades Práticas do Agile SoftwareCódigo Limpo - Habilidades Práticas do Agile SoftwareLivros

Compartilhar

Comentários Facebook (5)

Comentários Blog (14)

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...
Lucas Rafael Madeira (0) (0)
03/02/2016, Quarta-feira, às 11h
Primeiramente parabéns pelos vídeos, sempre acompanho. Gostaria de saber fazer com que sua aplicação inicializa junto ao smartphone?
Obrigado !
Responder
Vinícius Thiengo (1) (0)
04/02/2016, Quinta-feira, às 02h
Fala Lucas, blz?
Vc diz sua APP? Pois terá de ter acesso ao código fonte com a dica que vou dar. Dê uma olhada no conteúdo de BOOT_COMPLETED junto ao broadcastReceiver. Veja esse vídeo (http://www.thiengo.com.br/broadcastreceiver-no-android-executando-tarefas-no-background). Abraço
Responder
02/02/2016, Terça-feira, às 15h
Fala Thiengo.
Segui todos os passos mas a aplicação ainda não foi aprovada. Demora algum tempo? O app tem que estar publicado na play store?
Não acontece nada, nem mesmo a tela de licença ao iniciar o app.
Responder
Vinícius Thiengo (0) (0)
02/02/2016, Terça-feira, às 18h
Fala Luhan, blz?
Certificou-se de que não está compilando para Android 6 e API 23+? Caso essa seja a configuração, terá de solicitar permissões em tempo de execução. Como nesse vídeo: http://www.thiengo.com.br/sistema-de-permissoes-em-tempo-de-execucao-android-m

O status da APP no dashboard de AppJolt está como "Approved" ou "Awating SDK Integration"?

Verifique se no LogCat não está sendo printado nenhum warning. Fez a jogada de remover o atributo android:exported="true"? Abraço
Responder
02/02/2016, Terça-feira, às 21h
Sobre a configuração, meu gradle está exatamente igual ao do vídeo.
Removi o atributo android:exported="true", e na dashboard os status está como "Awaiting SDK Integration".
Estou utilizando o play-services, pois a aplicação envolve maps e location. Isso interfere?
Muito obrigado. Abraço.
Responder
Vinícius Thiengo (0) (0)
03/02/2016, Quarta-feira, às 02h
Luhan, o nome do package que tem de fornecer no dashboard do AppJolt, colocou o correto? Está compilando com qual API, 23.0.2?
Responder
03/02/2016, Quarta-feira, às 13h
Sim, estou com tudo atualizado (23.0.2, targetVersion: 23). No entanto, o emulador em que estou rodando o app está com API 21 e ainda assim não funciona.
Responder
Vinícius Thiengo (0) (0)
04/02/2016, Quinta-feira, às 02h
É, esse está estranho. Faça o seguinte se possível, rode o exemplo que disponibilizei no GitHub (https://github.com/viniciusthiengo/AdsAppJolt). Veja se com ele vai sem problemas. Se possível altere o package do project. Depois informe se deu certo. Abraço
Responder
04/02/2016, Quinta-feira, às 19h
Estranho, o seu projeto funcionou. Alterei o nome do pacote e foi tranquilo.
O AppJolt exige um padrão no nome dos pacotes pra funcionar?
Responder
Vinícius Thiengo (0) (0)
05/02/2016, Sexta-feira, às 02h
Não exigem ao menos na documentação não. Deve ter sido um detalhe que esqueceu de implementar... acontece. Abraço
Responder
Luhan Mairink (1) (0)
05/02/2016, Sexta-feira, às 17h
Realmente, detalhe, pra variar.
Já está aparecendo o EULA, porém, quando desinstalo a app o browser não abre, mesmo com aquele lance de remover o android:exported="true". O chat do AppJolt não está me ajudando muito.
Muito obrigado pela ajuda. Abraço.
Responder
Vinícius Thiengo (0) (0)
05/02/2016, Sexta-feira, às 18h
Inicio de startup... o máximo que conseguir relatar a eles como bug melhor para a correção da library. O EULA já tem como colocar em português, veja essa resposta de Noa do AppJolt:

"Thank you for this.
So, you can create your own EULA, we are OK with the translation you?ve sent us.
In our SDK, you?ll find 2 functions named: ?useCustomEULA? and  ?userAcceptedCustomEULA?. You?ll need to call the first function after the init function and the second function whenever the user accepts your EULA.
If you need any help with that, Michael, cc?d will be happy to assist you."
Responder
edriano (1) (0)
02/02/2016, Terça-feira, às 13h
quem tem e usa admob pode usar essa lib tbm ou tem q substituir?
parabéns pelo post....
Responder
Vinícius Thiengo (2) (0)
02/02/2016, Terça-feira, às 18h
Fala Edriano, blz?
A principio pode utilizar ambas sem problemas, pois até mesmo na doc do AppJolt não há nenhuma observação quanto a isso (algo que se houvesse problemas seria provavelmente já informado). Abraço
Responder