Divulgação de aplicativos com AdMob

Olá pessoal, hoje vou falar um pouco sobre a plataforma AdMob e o seu uso na divulgação de aplicativos para dispositivos móveis. Originalmente eu pensava em abordar este tópico durante um dos diversos posts sobre desenvolvimento Android, mas resolvi fazer essa separação visto que o AdMob também pode ser utilizado em outros sistemas.

Antes de tudo, gostaria de deixar claro que minha experiência utilizando o AdMob foi bem superficial, onde efetuei a veiculação de anúncios por apenas alguns dias. O que pretendo expor aqui engloba diversos aspectos positivos e negativos dessa experiência para que você possa avaliar o mais importante: Vale à pena investir? Confira!

Facilidade de Uso

A interface disponibilizada pelo serviço para a criação de anúncios me pareceu muito bem trabalhada, havendo poucos pontos onde me senti sem qualquer orientação. O processo segue um padrão Wizard conduzindo o usuário e dando dicas com relação ao orçamento investido no anúncio. Um ponto de destaque são as opções de segmentação do anúncio, que permitem definir desde os modelos de aparelho, faixa etária e região onde ele será veiculado. Como ponto negativo acredito que alguns termos utilizados não estão bem explicados o que pode deixar o usuário meio inseguro, o que não chega comprometer o uso apresentando uma interface muito mais amigável que o AdWords

Relatórios

Confesso que não explorei muito os relatórios fornecidos, mas o que pude observar é que não existe uma diversidade muito grande. O principal relatório (e mais útil) é o chamado “Campaign Report” que apresenta as informações “Visualizações”, “Clicks”, “% de Clicks por visualização”, “Custo” e “Custo médio por Click”. Estas informações são apresentadas por dia no formato gráfico e tabular, sendo a forma mais simples de acompanhar o andamento da publicação e seu retorno. Durante o uso percebi que os dados possuem um delay muito variável para serem atualizados, o que em algumas vezes atrapalhou o acompanhamento.  Neste quesito minha avaliação pende mais pro lado negativo.

Custo

Ao iniciar o uso da ferramenta me deparei com algumas condições impostas que eram um tanto quanto “chatas”. Existe um valor mínimo de carga para a veiculação de anúncios que naquele momento era de 50 dólares (não sei se esse valor foi alterado). Além de estipular um valor mínimo para a carga existem outras regras semelhantes como um orçamento mínimo diário de 10 dólares e um custo por click mínimo de 4 cents. Uma publicação como a minha que use todos os “mínimos” estipulados pelo sistema consegue uma veiculação diária até 250 clicks durante 5 dias o que dependendo do seu aplicativo pode ser o bastante para fazer ele ficar conhecido.

Sendo esse um dos pontos chave para a decisão de usar ou não o serviço vou expor algumas opiniões. No primeiro momento me pareceu lógico que para medir o nível de aceitação e interesse das pessoas pelos anúncios seria interessante verificar a informação % de Clicks por visualização (CTR). Assumindo que quanto maior a porcentagem maior o interesse dos usuários pelo anúncio uma vez que isso denotava que menos visualizações foram necessárias para atingir o limite de clicks. Comecei a analisar esse cenário sob outro enfoque assim que notei o tempo necessário  para estourar o orçamento diário. Em alguns dias isso ocorreu em menos de 1 hora de veiculação o que me assustou bastante no início, mas é perfeitamente compreensível dado o tamanho da plataforma e a quantidade de aparelhos ligados à internet nos dias de hoje, contudo, uma analise mais fria me levou a crer que o melhor era ter um numero muito maior de visualizações e uma mensagem de impacto no anúncio. O usuário poderia não clicar no banner o que prolongaria sua veiculação visto que pagamos apenas pelos clicks, porém o simples fato de o usuário ter visualizado e memorizado o anúncio permitiria que ele procurasse informações posteriores sobre o aplicativo.

Vale deixar claro ainda que existem outras modalidades de cobrança e definição de custos para os anúncios, as quais eu não utilizei,  e podem se encaixar melhor diferentes perfis orçamentários.

Conclusão

Após os 5 dias de uso do sistema cheguei a algumas conclusões:

  • Apesar de parecer barato pagar 4 cents por click a taxa de retorno é muito baixa e no final o custo é muito maior tendo em vista o valor mínimo de carga
  • A velocidade com que os anúncios são disparados é muito alta e isso pode afetar positiva e negativamente sua campanha dependendo do tipo de anúncio e de aplicativo. É preciso focar muito bem e produzir banners de acordo com a intenção da campanha (clicks ou visualizações)
  • De maneira geral a divulgação de uma campanha atinge um pico que vai diminuindo com o tempo uma vez que seu anúncio deixa de ser novidade.
Respondendo sua pergunta: Valeu à pena usar? Sim e não. Sim pela experiência e não pelo retorno.
Até breve.

Posted in Uncategorized | Leave a comment

Desenvolvimento e publicação de aplicativos para Android – Parte 1

E ai pessoal, tudo certo? Em primeiro lugar gostaria de me desculpar pela ausência excessiva. Foram semanas de muito trabalho e aprendizado em projetos pessoais e claro alguns momentos de descanso e lazer. Nada como curtir bons shows de Rock para recarregar as energias, e ao final de todo esse período nada melhor que ver seu trabalho sendo reconhecido como tenho visto ultimamente.

Com base em todo esse esforço quero começar hoje uma serie de posts trazendo um pouco dos desafios que tenho encontrado na publicação deste projeto, focando principalmente em dois seguimentos: desenvolvimento e métricas. Acredito que toda essa experiência acumulada nas últimas semanas, tanto na construção do sistema quanto em palestras e materiais de leitura ajudaram a construir uma bagagem sólida, a qual vou dividir com todos nessa sequência de posts. Contudo, não pretendo apresentar um passo a passo de como construir aplicativos com códigos e outros materiais dessa natureza, e sim colocar e discutir situações que acredito serem comuns para todos que desenvolvem na plataforma Android, mostrando soluções adotadas para tratar os problemas encontrados.

Para começar vou expor um dos primeiros problemas que enfrentei durante a criação de aplicativos para Android que fazem acesso a banco de dados SQLite: Como manter a compatibilidade entre versões durante a evolução da base de dados. Sempre que lançamos uma atualização de aplicativo temos que gastar uma parcela de tempo com testes de compatibilidade entre as versões mais antigas e a versão atualizada, de modo a garantir que as correções ou novas funcionalidades não gerem erros  ao serem utilizadas com dados armazenados em versões anteriores.

Apenas para demonstrar o problema, imagine uma aplicação versão 1 que contem uma simples tabela com dois campos. Em uma atualização para a versão 2, o desenvolvedor necessita acrescentar um campo na mesma tabela.  É ai que vem a dúvida: Como efetuar a alteração de modo que afete tanto pessoas que não possuem o aplicativo quanto as que já possuem o aplicativo instalado?

A resposta para essa pergunta esta na classe SQLiteOpenHelper, que além de fornecer todo o contexto necessário para o acesso a base de dados, fornece dois métodos muito úteis para o controle de alterações de banco, os quais devem ser sobre escritos para implementar a lógica adequada a nossa realidade:

  • onCreate: Método chamado quando a base de dados é criada pela primeira vez.
  • onUpgrade: Método chamado quando a base de dados precisa ser atualizada.

Para entendermos ainda o processo de atualização da base, é interessante conhecermos, também, o construtor utilizado pela classe SQLiteOpenHelper. Em sua versão simplicada ele recebe 4 parametros: (Context context, String name, SQLiteDatabase.CursorFactory factory, int version). Para efeitos de atualização da base devemos nos atentar para o quarto parâmetro “version”. Ele informa qual é a versão do banco de dados que desejamos abrir e é através deste número que o sistema controla quando a base necessita ser atualizada ou não. Vamos imaginar o seguinte fluxo para entender melhor o processo:

Sabemos que um aplicativo pode sofrer diversas alterações ao longo de sua vida e, além disso, sabemos que atualizações  subseqüentes podem ser lançadas antes mesmo de o usuário efetuar a primeira atualização, o que gera diversos cenários a serem tratados (versões X, Z, W para Y), o que dificulta a definição de um único código que atenda a  todos os usuários de sua aplicação. Felizmente, com base no fluxo apresentado e o auxílio do número da versão da base, podemos desenvolver um comportamento que facilite o controle de todas as alterações independente da versão atual do usuário como podemos ver abaixo:

Desta forma não importa a versão do usuário garantimos a aplicação de todas as atualizações na base do usuário. Por outro lado, temos um código que pode virar um imenso bloco caso as atualizações de banco sejam realizadas de maneira inconseqüente pelo desenvolvedor, o que não chega a ser um problema desde que tomadas devidas precauções com a inclusão dessas atualizações.

Bom por hora é isso, espero ter ajudado. Até breve!

Posted in Tecnologia | Tagged , , , , , , | Leave a comment

Extraindo dados de HTML com Python + lxml

Fala pessoal, tudo certo? O motivo do sumiço violento após o GDD é bem conhecido: projetos pessoais. Conforme a plataforma vai encorpando também vai tomando mais tempo. De qualquer forma tem sido muito bom e os posts sobre lições aprendidas já estão sendo preparados.

Desta vez gostaria de compartilhar mais algumas experiências que tive durante o desenvolvimento de uma de minhas idéias. Desta vez vou falar sobre o (re)trabalho de atualização do mecanismo do GameShop para aquisição de dados e preços de jogos. O sistema original rodava na plataforma .Net utilizando a biblioteca Html Agility Pack para realizar o garimpo dos dados além da biblioteca Quartz.Net para controlar o agendamento e execução das tarefas em períodos de tempo específicos.

Neste cenário, as tarefas de aquisição dos dados via web e “parse” do html dividiam os maiores tempos de execução. Algumas das lojas em que o sistema faz a busca de preços apresenta código html extremamente poluído e mal formatado, o que dificulta e aumenta o tempo de processamento do parser. Outro problema que preocupava eram as manutenções necessárias para corrigir pequenos desvios causados por alterações no html realizadas pelas lojas, e neste ponto não há fuga pois não podemos controlar o html gerado pelas lojas, apenas cuidar para que o impacto disso na extração dos dados não seja grande. Com impacto grande quero dizer, também, que a manutenção para corrigir estes desvios deve ser simples e mais rápida possível.

Pensando nisses problemas resolvi reescrever o sistema em Python utilizando a biblioteca lxml. A escolha do Python vem justamente pela simplicidade nas alterações e não necessidade de compilação do código fonte para que seja executado, agilizando o processo de manutenção. Com relação ao mecanismo de parser lxml, fiz algumas pesquisas na internet e acabei me deparando com este excelente artigo, onde o autor faz um benchmark entre os mais conhecidos parsers de html/xml para Python. O artigo demonstra a superioridade desta biblioteca inclusive sobre classes nativas do Python (o lxml é baseado na biblionteca libxml2 escrita em C) justificando totalmente sua escolha.

Para o agendamento da execução do serviço ainda estou estudando as possibilidades existentes em Python que permitam o mesmo grau de maleabilidade com os horários que o Quartz.net proporciona. Até o momento não encontrei nenhuma solução que se adeque ao meu servidor (Windows) mas assim que decidir postarei aqui novamente para expor a solução.

Até breve.

Posted in Tecnologia | Tagged , , , , , , , | Leave a comment

GDD2011

E ai pessoal mais um período sem posts mas a correria com meu projeto aumentou mais do que eu esperava depois do lançamento do site e posso adiantar que em breve vamos ter muitas novidades. Realmente o processo todo tem sido muito bom pelo aprendizado mas o desgaste também é grande.

Mas vamos ao que interessa, nesta última sexta-feira, dia 16/09, estive no Google Developer Day Brasil 2011 para conferir algumas das palestras. A última vez que estive no GDD foi em 2009 e comparado com este ano a impressão que tive foi de que a organização piorou e o evento cresceu. O aumento no número de participantes era evidente, contudo, o local de realização foi o mesmo de dois anos atrás que, apesar de ser muito grande, parecia mal organizado com muito empurra-empurra e palestras que as vezes davam sono, sem contar na comida que comparada com o evento da Motorola para desenvolvedores ocorrido em maio deste ano parecia dieta hehehe.

Voltando às palestras, fui ao evento com intenção de focar nos tópicos que abordavam Android e HTML5, assuntos que tenho estudado muito ultimamente. Haviam 4 salas cada uma cobrindo assuntos diferentes com 6 sessões em cada sala. Confesso que a abertura do evento deixou eu e muitos outros participantes empolgados com o que se seguiria ao longo do dia, mas o que se viu depois foi um show de apresentações repetitivas, superficiais e repletas de piadas ruins. Dessa forma, nas próximas linhas vou tentar fazer um apanhado geral do que havia de mais interessante nas palestras que assisti.

OBS: As apresentações devem ser publicadas em breve na internet através do canal YouTube do Google Brasil. Neste endereço você pode acompanhar também os videos de edições anteriores. Assim que os links de cada apresentação saírem eu atualizo este post com eles.

Android Market para desenvolvedores

De longe a melhor das palestras que assisti no evento. O conteúdo apresentado por Dan Galpin, deu noções sobre a publicação de APK’s no Android Market, citando melhores práticas de deploy e as novidades implementadas pelo Google como relatório métricas de instalação de aplicativos, novos modelos de licensiamento para aplicativos pagos e a possibilidade de publicação de múltiplos APK’s (funcionalidade que tira o peso do desenvolvedore ter que criar uma única APK funcional para todos os dispositivos). Ele ainda comentou sobre as recentes mudanças no algoritmo de ordenação de buscas do Market e as avaliações feitas pela equipe do market sobre aplicativos que alavancam a plataforma bem com o processo de certificação de aplicativos e desenvolvedores com recomendação do Google.

HTML5

Confesso que as palestras de HTML5 me decepcionaram um pouco. Lembro de quando comecei a ouvir sobre o movimento de atualização do HTML onde todos os esforços estavam voltados para manter linguagem e recursos equalizados entre os principais browsers do mercado, afinal não tem nada pior para o desenvolvedor web ter que escrever o mesmo sistema de N maneiras diferentes uma para cada browser. Ao que me parece as propostas vão continuar sendo unilaterais e cada um vai implementar o que achar legal e da maneira que bem entender.

Dentre as propostas do Google a que achei mais interessante foi a de WebIntents, conceito muito parecido com o Intent do Android que permitirá o compartilhamento de conteúdo entre sites de maneira mais fácil e controlada, recurso excelente para mídias sociais. Outro recurso interessante mas que parece mais padronizado entre os browser são as novas apis de Video e Som acessadas diretamente via javascript contendo muitos efeitos e facilidades, algo que pode causar um grande impacto no uso de plugins de terceiros para consumo de aúdio e video na web.

Construindo seu negócio baseado em plataformas móveis

Outra palestra que gostei bastante apesar de meio bagunçada. O diretor de vendas em publicidade móvel para América Latina Peter Fernandez fez uma apresentação conjunta com um dos sócios da Best, Cool & Fun Games, empresa brasileira que vem se destacando na produção de jogos para smartphones e tables Android e iOS. O apresentador mostrou numeros do crescimento do mercado Android e estratégias de investimento em propaganda nesta plataforma usando o case de um dos aplicativos da Best, Cool & Fun Games, o AntSmasher. Duas dicas de destaque apresentadas: a plataforma AdMob que foi comprada pelo Google e tem forte atuação na publicidade móvel e o site Guide to the App Galaxy que oferecem um guia detalhado para quem quer se aventurar no desenvolvimento, publicação e quem sabe até ganhar uma grana com aplicativos para Android.

Esse foi um resumo geral, aos interessados recomendo ficarem ligados na publicação dos videos do evento no youtube. Espero ter passado um pouco do que presenciei e que ano que vem o evento seja melhor organizado e conduzido.

Até mais

Posted in Tecnologia | Tagged , , , , , , , , , , , , , | Leave a comment

Essa semana no GDD2011

Finalmente consegui arranjar algum tempo para escrever novamente. Esses últimos dias foram de muita correria para lançar meu novo projeto pessoal. Testes do aplicativo para Android, montagem de gráficos para as páginas do site, ajuste de conteúdo, mas tudo isso teve um lado bom que foi o aprendizado principalmente com relação a publicação de aplicativos no Android Market. Espero num momento oportuno compartilhar aqui um pouco desse conhecimento adquirido.

Por falar em Android essa semana estarei no GDD2011, evento voltado para desenvolvedores organizado pelo Google. Estou ansioso para saber as novidades da plataforma ainda mais após a compra da Motorola Mobility pela empresa de Mountain View. O Android vem ganhando muito espaço mas ainda existem diversos aspectos falhos com relação a distribuição de conteúdo e aplicativos.

As apresentações de  HTML5 são outro ponto interessante, afinal esta tecnologia promete facilitar o desenvolvimento de aplicativos que funcionem online e offline, impulsionando um crescimento no número dos softwares e o principal: sem dependência de plataforma, podendo rodar em smartphones Android, Windows e iPhone.

Com o iminente lançamento de meu projeto espero que as coisas possam ir se ajeitando (ou não) nas próximas semanas e eu possa postar todas as novidades que encontrar no evento nessa próxima sexta feira. Para isso, conto com a ajuda da galera para sugestões e críticas sobre o projeto assim que ele for ao ar. Enquanto isso não acontece, bora trabalhar. Até mais

Posted in Tecnologia, Uncategorized | Tagged , , , , | Leave a comment

Um relato sobre a tecnologia DLNA Parte I

Ano passado adquiri um PS3 com a intenção de passar algum tempo jogando Resident Evil e alguns outros jogos que gosto. Logo que comprei fiquei curioso em encontrar o PS3 listando meu computador como um servidor de mídia para fotos, músicas e vídeos. Apesar de alguns amigos terem me falado desta possibilidade não tive curiosidade de mexer com a funcionalidade e procurar mais informações a respeito da tecnologia por trás disso, já que a ideia do videogame era simplesmente jogar.

Algum tempo depois precisei trocar de TV e acabei adquirindo uma Sony em promoção. O mais interessante foi ver a integração TV<->PS3 uma vez que as TV’s da linha em questão possui a mesma interface do PS3 (XMB) que é baseada no linux, e a possibilidade de controlar o PS3 pelo controle remoto da TV. Também fiquei intrigado quando vi que a TV também exibia as mesmas opções de foto, áudio e vídeo que o videogame. Desta vez fui pesquisar a respeito e descobri que a tecnologia por trás disso respondia pelo nome de DLNA, uma “evolução” dos serviços uPnP para stream utilizado por servidores de mídia.

As primeiras tentativas de uso oscilaram entre euforia e decepção já que apesar de funcionalidades legais como reproduzir um vídeo na TV diretamente pelo PC através de wireless, os constantes erros quanto tentava ouvir música por um tempo maior ou a limitação de formatos possíveis para transmissão de vídeos eram desanimadoras.

Após algum tempo precisei trocar meu roteador e novo aparelho possuía uma funcionalidade para conectar um dispositivo de armazenamento com o intuito de compartilhar os arquivos na rede sem a necessidade de um PC constantemente ligado e ainda atuar como…. um servidor uPnP/DLNA!!! Nesse mesmo tempo, fuçando no meu celular encontrei um ícone com o nome DLNA e para minha supresa ele conseguia atuar tanto como um reprodutor de mídias como um servidor de arquivos podendo ser acessado pela TV/PS3/PC ou enviando conteúdo para reprodução na TV.

Foi ai que resolvi estudar melhor o assunto e para não perder tempo configurei o roteador como servidor de arquivos com todas as minhas músicas, fotos e filmes nele. Decepção novamente. A TV listava o servidor mas raras vezes exibia o conteúdo, e quando exibia sempre apresentava erros na hora de executar os arquivos. Não entrava na minha cabeça que um padrão tão divulgado nas embalagens dos produtos pudesse ser tão ruim até encontrar este artigo onde o autor cita sua experiencia com o protocolo usado em servidores uPnP/DLNA. Nesse instante estava claro que as coisas não iriam funcionar 100% como eu achava e o melhor era me contentar em fazer funcionar o possível.

Fui em busca de melhores resultados e resolvi pegar um desktop que tinha encostado aqui em casa e instalar o Linux nele para testar alguns softwares que prometiam funcionar como servidores de conteúdo no padrão DLNA. Como não sou muito familiarizado com ambientes Linux tive ajuda de um amigo na escolha da melhor distribuição e acabei instalando o Xubuntu. Depois disso comecei os testes dos programas e quanto mais programas eu testava mais me desanimava. Os mais diferentes problemas aconteciam e eu nunca conseguia ver fotos ou ouvir musica através da rede.

Foi então que me deparei com o PS3 Media Server, o único com interface visual e tão completo que provia até soluções para comportamentos inerentes ao protocolo DLNA. A facilidade de configuração aliada a recursos como transcodificação de formatos e incorporação de legendas (sim o protocolo é muito restrito com formatos e não agrega legendas nativamente) me fizeram crer que foi a melhor escolha para o tipo de integração que desejava fazer entre os aparelhos.

Na parte II irei descrever maiores detalhes sobre a estrutura montada, a adição de um Torrent Client e o controle total do media center pelo celular. Até breve

Posted in Tecnologia | Tagged , , , , , , | Leave a comment

Propriedade Intelectual X Domínio Público

Olá pessoal vamos começar logo com posts polêmicos para movimentar o lugar. Nas últimas semanas tenho lido diversas notícias sobre a chamada “Guerra das Patentes” entre Google, Microsoft e Apple, assunto esse que despertou minha curiosidade sobre o teor das mesmas. Nota-se, claramente, que o aquecimento do mercado de dispositivos móveis (smartphones, tablets, GPS entre outros) os ânimos das empresas estão bastante acirrados e a competição chegou aos tribunais.

Acusações de quebras de patente chovem todos os dias e não é raro também lermos alguma notícia sobre um determinado produto que teve sua venda proibida, mas o que me parece mais preocupante é que a competição que na maioria das vezes é benéfica ao usuário está tomando outro rumo e dificultando a inovação tecnológica, uma vez que as patentes registradas chegam a declarar como propriedade das empresas ações cotidianas banais como, por exemplo, mexer um dedo.

Antes que me entendam errado, defendo fortemente a propriedade intelectual das empresas e acho que é importante valorizar as pessoas que fazem novas descobertas e invenções, pois isso é um dos fatores que motivam as pessoas no processo de criação em qualquer que seja a área. Contudo, devemos notar que um acenar de dedo pra esquerda não é algo que pode ser classificado como qualquer uma das palavras em destaque acima. Concordo que uma patente de como o gesto do usuário é capturado é valida, pois a tecnologia esta sempre evoluindo e com certeza irão surgir diversas novas formas que capturar a entrada do usuário e baratear o seu custo com novos materiais ou o emprego de novas técnicas.

No entanto, patentear o gesto do usuário em si me parecer controlador demais. O que me impede de patentear outras coisas banais como abrir a boca ou levantar o braço? Quer dizer que todos os dispositivos que fizerem uso disso vão ter que me pagar royalties? Não me parece correto. As empresas deviam se focar em trazer o melhor para o usuário e não impedir que os seus concorrentes façam isso. Se você é o melhor no que faz, e por melhor devemos entender o conjunto produto, preço e suporte, as pessoas irão te procurar por isso independente de existirem outros fornecendo algo semelhante ao que você oferece.

Neste contexto, precisamos entender também que sempre vão existir pessoas que preferem uma marca em detrimento de outra, seja por uma experiência ruim, ou por conselho de amigos ou até mesmo influenciado pela mídia e que essa “rixa” também motiva as empresas a conquistar novos seguidores. O que não podemos aceitar é que proíbam determinados produtos por motivos incoerentes e às vezes até se utilizado de alegações falsas e evidências manipuladas.

Posted in Tecnologia | Tagged , , , , , | Leave a comment

Vamos começar

Bom pessoal essa é minha segunda tentativa de escrever um Blog. Confesso que na oportunidade anterior não levei muito a sério a idéia (foram uns 4 posts no máximo), contudo, dessa vez pretendo fazer algo um pouco maior que um simples Blog e publicar aqui todo o meu portifólio e experiência adquirida ao longo dos anos trabalhando na área de TI. Sou entusiasta de tecnologia desde os 13 anos estou sempre procurando novas idéias e experimentos para realizar nesta área. Aqui você vai encontrar desde exemplos de soluções e experiências que desenvolvo até desabafos sobre coisas cotidianas. Espero que seja uma forma de ajudar outras pessoas e mostrar um pouco das minhas idéias para quem estiver interessado. Por hora é isso fiquem ligados nos próximos capítulos.

Até logo.
Posted in Pessoal | Tagged , , , | Leave a comment