Páginas

segunda-feira, 24 de setembro de 2012

Testflight : teste sua app em um dispositivo remotamente

Muitas vezes é necessário que beta testers tenha acesso a sua app rapidamente, mas quando se trata de desenvolver para iOS esse trabalho é realmente muito tedioso e demorado. É necessário cadastrar todos os devices no portal do desenvolvedor, além de ter que fazer um build e enviar para os testers, frequentemente não dá muito certo, por vários motivos, incluindo conhecimento do usário ou do cliente.

O que é o Testflight?

É um portal que oferece um serviço de distribuição da sua app para os usuários que irão testá-la. É possível ainda que você implemente o SDK do testflight na sua aplicação para que você tenha acesso aos dados estatísticos da sessão de cada usuário que testou. Através da API você pode fazer uploads automáticos para o portal, automatizando todo o processo.

Como funciona?

Ao criar sua conta você pode convidar os usuários testadores ou desenvolvedores, criar times. Para que os usuários cadastrem os dispositivos basta que eles acessem o portal usando o device, que passa a ser vinculado a conta. Depois dessa vinculação o desenvolvedor que convidou recebe um arquivo contendo as informações necessárias para cadastrar no centro de desenvolvimento da Apple, bastanto apenas importar o arquivo.

Após fazer um upload de um build adhoc e seu profile adhoc, os usuários autorizados podem instalá-los no device acessando o portal através do dispositivo.

conclusão

Conheci o testflight no macincloud, pois era a única forma de testar uma app no device. E realmente foi uma excelente experiência que utilizo até hoje!

Links

[1] Testflight

domingo, 23 de setembro de 2012

Macincloud: uma boa alternativa?

Desenvolver aplicativo para iOS é no mínimo um pouco caro para um desenvolvedor indie, é necessário ter um Mac e o mais barato, o mini MAC é no mínimo R$ 2000,00. Depois do Mac você vai precisar de um device, um iPod que agora está custando um pouco mais que R$ 1000,00. Com certeza você deve imaginar que pagar tudo isso não compensa, já que você só quer um Mac para testar e publicar sua app.

O que é?

Macincloud oferece um Mac nas nuvens, com preços que variam entre $12,00 a $49,00. Muito compensador! Várias ferramentas já vêm instaladas e caso você utilize a Unity, como eu, é só pedir para eles instalarem.

Experiência própria.

Utilizei o Macincloud por 1 semana para publicar minha primeira app (The Shuffle Puzzle) na App Store. Uma aplicação feita na Unity3D. Tudo que eu precisava era gerar o projeto no XCode e integrar o Admob, no entanto foi uma péssima experiência, pois:
  1. Testar é muito trabalhoso, a Unity não é suportada pelo simulador e sempre era necessário fazer um Build e enviar para um Device remotamente, levava uns 30min para tudo isso. Meu plano só oferecia 4horas por dia.
  2. Lentidão, embora com uma internet de 15mb a latência de 200ms me faziam sentir trabalhar em câmera lenta.

Conclusão

Se você não vai produzir jogos, com certeza me parece uma solução viável! Pois o ponto que mais pesa é a fase de teste durante o desenvolvimento.

Links

terça-feira, 18 de setembro de 2012

Ferramenta Analítica: AppAnnie

Problema

Como desenvolvedor para iOS frequentemente preciso saber como estão indo meus downloads, mas infelizmente o itunesconnect é uma porcaria para isso, os dados ali apresentados são muito simplificados e não dá uma possibilidade de uma análise estatística mais apurada.

Solução

AppAnnie é uma ótima solução para você visualizar todos os dados sobre sua aplicação no mercado, desde de número de downloads, até mesmo raking, downloads por países e etc. Não só para iOS, mas também para Android.

Link: AppAnnie

quinta-feira, 13 de setembro de 2012

sábado, 8 de setembro de 2012

Unity3D : Carregar, Ler e Salvar um arquivo XML

Há diversas aplicações para o uso de um arquivo XML, em geral, quando se necessita carregar configurações pré-definidas.

Como carregar?

Uma vez com um arquivo XML dentro da pasta Resources,
exemplo:
<achievement>
<uniqueid>0</uniqueid>
<referencename>My Achievement</referencename>
<goal>Solve until 10 seconds</goal>
<points>10</points>
</achievement>
using UnityEngine;
using System.Collections;
using System.Xml;


public class XMLEditor : MonoBehaviour
{

void Awake()
{
//Load
TextAsset textXML = (TextAsset)Resources.Load("myxml.xml", typeof(TextAsset));
XmlDocument xml = new XmlDocument();
xml.LoadXml(textXML.text);
}
}
Desta forma você carrega o XML como um TextAsset da Unity3D

Como ler o arquivo XML?

Ler o arquivo XML é realmente muito simples utilizando as classes da .NET framework


using UnityEngine;
using System.Collections;
using System.Xml;


public class XMLEditor : MonoBehaviour
{
void Awake()
{
//Load
TextAsset textXML = (TextAsset)Resources.Load("myxml.xml", typeof(TextAsset));
XmlDocument xml = new XmlDocument();
xml.LoadXml(textXML.text);

//Read
XmlNode root = xml.FirstChild;
foreach(XmlNode node in root.ChildNodes)
{
if (node.FirstChild.NodeType == XmlNodeType.Text)
Debug.Log(node.InnerText);
}
}
}

Obviamente essa é maneira mais simples de ler um XML, e caso o XML possua diversas hierarquias, você deverá implementar seu método de navegação através dos nós.

Como salvar em XML?


using UnityEngine;
using System.Collections;
using System.Xml;


public class XMLEditor : MonoBehaviour
{
void Awake()
{
//Load
TextAsset textXML = (TextAsset)Resources.Load("myxml.xml", typeof(TextAsset));
XmlDocument xml = new XmlDocument();
xml.LoadXml(textXML.text);

//Read
XmlNode root = xml.FirstChild;
foreach(XmlNode node in root.ChildNodes)
{
if (node.FirstChild.NodeType == XmlNodeType.Text)
node.InnerText = "none";
}

//Simple Save
xml.Save(AssetDatabase.GetAssetPath(textXML));
}
}

E através do AssetDatabase recuperamos o local do arquivo que foi carregado e salvamos por cima.

Eis a maneira mais rápida e fácil de carregar, ler e salvar arquivos XML na Unity3D

sexta-feira, 31 de agosto de 2012

The Shuffle Puzzle iOS



finalmente depois de vários dias (11 dias) de espera o The Shuffle Puzzle é aprovado na appstore! Foram 8 dias para entrar em modo "waiting for review" e 4 dias para sair do modo "in review". Mas finalmente saiu!

Dêem uma olhada! O jogo está gratuito!

itunes link: The Shuffle Puzzle

terça-feira, 28 de agosto de 2012

Gameficação - Gamification



Para quem não sabe o que é Gameficação ou Gamification: habilidade de aplicar elementos de jogos e/ou técnicas game design à um contexto que não seja um jogo. Em outras palavras, gameficar uma situação real.
Exemplo:

Há algum tempo eu havia me inscrito num curso a distância sobre Gamification e agora as aulas iniciaram. Para quem tiver interesse as inscrições ainda estão abertas e é totalmente gratuito! O curso é oferecido pela Coursera.
Iniciou em 27 de Agosto de 2012 e vai durar seis semanas com direito a certificado!
Link do curso: https://www.coursera.org/course/gamification

Para você que não conhece, a Coursera é uma compania de empreendedorismo social que oferece cursos gratuitos em parcerias com universidade do mundo inteiro, como: Princeton, Stanford, ...

Lembrei de falar quando vi o post no GameReporterUOL (=

http://gamereporter.uol.com.br/coursera-oferece-curso-gratuito-de-gameficacao/


Resumo breve sobre o curso:

About the Course

Gamification is the application of digital game design techniques to non-game problems, such as business and social impact challenges. Video games are the dominant entertainment form of our time because they are powerful tools for motivating behavior. Effective games leverage both psychology and technology, in ways that can be applied outside the immersive environments of games themselves. Gamification as a business practice has exploded over the past two years. Organizations are applying it in areas such as marketing, human resources, productivity enhancement, sustainability, training, health and wellness, innovation, and customer engagement. Game thinking means more than just dropping in badges and leaderboards; it requires a thoughtful understanding of motivation and design techniques. This course examines the mechanisms of gamification and provides an understanding of its effective use.