[iOS] in-App Purchase

Fala galera no último encontro do [self SP] fiz uma apresentação improvisada de última hora falando sobre o in-App Purchase, na verdade foi um live coding. No video vou mostrar todos os passos para se trabalhar com in-App Purchase e testar sua aplicação.

A apresentação é bem simples e a galera que estava presente ajudou bastante, espero que gostem do video



Depois que subi o video achei um erro de português na frase “Bem improvisado meso” deveria ser “Bem improvisado mesmo”, vou subir outra versão corrigindo isso :)

abraço

[Objective-C] Leituras recomendadas

Fala galera, sempre me deparo tweets perguntando quais livros eu recomendo para aprender Objective-C e desenvolvimento iOS/MAC. Pensando nisso resolvi escrever esse post com os materiais de referencia que utilizo no meu dia-a-dia.

Particularmente gosto muito dos livros da Apress, eles são bem simples e com uma boa didática, outra vantagem é que você encontra os exemplos mostrados no livro disponível para download do site da Apress.


Learn C on the Mac

Antes de começar aprender Objective-C é legal que você tenha algum conhecimento em outra linguagem, eu recomendo fortemente uma boa leitura sobre C.


Learn Objective-C on Mac

Uma boa leitura sobre a linguagem para começar é sempre bom, esse livro trata especificamente a linguagem Objective-C utilizando o Mac como plataforma de aprendizado.


Objective-C for Absolute Beginners
iPhone, iPad and Mac Programming Made Easy

O legal desse livro é que ele aborda um pouco sobre cada plataforma, isso te da um horizonte para onde seguir durante o desenvolvimento.

A Apress possui livros específicos para Desenvolvimento iPhone e Desenvolvimento iPad, para quem preferir sei que a Apress já fez tradução da maioria de seus livros para português.

Além dos livros acima recomendo uma boa leitura na documentação oficial da Apple que pode ser acessada pelo endereço http://developer.apple.com e também uma boa leitura sobre o LLVM que é o compilador utilizado hoje em dia pela Apple http://clang.llvm.org/.

Espero ter ajudado muitos com essas dicas de leitura.

Abraço

iPhone 4S – Problemas com o sinal

Fala galera, tenho visto muitas pessoas reclamando do sinal do iPhone 4S, até eu mesmo tenho reclamado de problemas com o sinal do aparelho.

O caso

Durante o dia sempre percebia que meu aparelho estava com a mensagem “Sem serviço” no lugar do sinal da operadora. Muitas vezes o problema era resolvido colocando o aparelho em Modo Avião, mas haviam casos que o sinal só voltava quando eu reiniciava o aparelho e isso me deixava cada vez mais estressado.

Cheguei a fazer mutia pesquisa na internet para tentar achar uma solução para esse problema, até mesmo no forum restrito da Apple para tentar achar uma solução, porém as buscas não tinham nenhum resultado com uma solução para o problema.

Esses dias resolvi voltar a procurar sobre possíveis soluções para esse problema e enfim encontrei este artigo no Razorianfly que trazia uma possível solução para o problema.

Segundo o post o problema está no software e não no hardware como acontecia com o iPhone 4.

A solução é bem simples, porém não encontrei uma lógica de porque isso resolve o problema. Vamos ver o passo a passo


Acesse as configurações do aparelho

Clique no menu Telefone

SIM PIN

Ative o SIM PIN

Nesse ponto será pedido a senha PIN do seu chip, essa senha vem no cartão do chip quando compramos na operadora, caso você tenha esquecido ou perdido segue uma lista de números padrões de PIN, mas cuidado se você errar 3 vezes será necessário utilizar o código PUK para desbloquear seu SIM CARD, então faça esse procedimento com cuidado. Caso ache mais seguro ligue em sua Operadora pedindo o código PIN e PUK do seu chip.

PIN padrão por operadora

TIM – 1010
Claro – 3636
OI – 8888
BrT GSM – 1414
Amaz/Telemig – 1414
CTBC – 1212
VIVO – 8486

Digite a senha e clique em concluir

Agora basta desativar o PIN ele vai pedir a senha PIN novamente para poder desativar e pronto, agora basta reiniciar seu aparelho e ver a diferença.

No meu caso funcionou normalmente, senti uma grande melhora no sinal e não está tendo mais queda de sinal como estava acontecendo antes de fazer esse procedimento.

Lembre que é de sua total responsabilidade executar o procedimento acima, em caso de duvida na hora de digitar sua senha de PIN entre em contato com a operadora solicitando esse número.

Um abraço a todos, e comentem caso tenham conseguido um resultado positivo com o procedimento.

Código PIN padrão de algumas operadoras do Brasil

Workshops Objective-C ONLINE

Fala galera,

Como muitos já sabem em dezembro a PoisonLabs fechou parceria com a Hellobits para Workshops online, e sábado (11/01) será nosso primeiro workshop Conhecendo Objective-C

Esse workshop vai ser o primeiro de uma serie e talvez um dos mais importantes, pois ele será a base de tudo que veremos nos próximos workshops. Mas não se preocupe, se você não puder participar desse primeiro, haverão outras datas para o workshop de Objective-C.

Planos Futuros

Como falei esse é apenas o inicio, temos muito mais vindo por ai. SIM, JÁ ESTOU MONTANDO AS GRADES!!!!

Da só uma olhada no que vem pela frente

  • Desenvolvimento para iOS
  • CoreAnimation
  • Quartz2D
  • CoreData
  • AVFoundation
  • Desenvolvimento para MAC OS X

….e muito outros.

E respondendo a muitas perguntas que eu recebo no Twitter. SIM, TEREMOS WORKSHOPS PRESENCIAIS =)

Sobre os workshops presenciais começaremos as turmas em Abril, em breve será anunciado com detalhes.

É isso ai galera, um post curto só para levantar os ânimos e se você se interessou pelo treinamento de Objective-C ainda da tempo de se escrever, o pagamento pode ser feito parcelado por boleto ou cartão de credito através do PagSeguro, para mais detalhes acessem http://howtocode.com.br/workshops/objective-c

Abraço a todos

Primeiro encontro oficial @selfsp

Fala galera,

Bom muitos já sabem mas quero reforçar, em Janeiro teremos o primeiro encontro oficial do @selfsp.
Para quem não conhece o grupo, o @selfsp foi um iniciativa do @lucascaton e @talesp junto comigo para criar um grupo de discussão de Objective-C em São Paulo.
Todas as segundas-feiras o pessoal costuma se reunir no Starbucks da Alameda Santos em SP próximo a Av. Paulista, para um papo descontraído e sem compromisso.

Mas agora chegou a hora de termos nosso primeiro encontro oficial \o/\o/

Sim, o primeiro encontro oficial do @selfsp vai acontecer e o melhor de tudo com apoio da @caelum , @poisonlabs e @agaelebe .

Em uma rápida conversa e sem cerimonias por intermédio do @qmx a @caelum está apoiando o encontro emprestando seu auditório para que possamos realizar o encontro.

A @poisonlabs por sua vez está patrocinando o CoffeeBreak para o encontro, e quem sabe em um próximo encontro não role um Drinkup? :)

E como de costume nos encontros do @guru_sp nosso amigo @agaelebe vai fazer a filmagem e publicação dos videos do evento.

Nesse primeiro encontro vamos ter 4 palestras de 30 minutos cada uma com temas bem variados, para conhecer e votar nas palestras basta acessar o Call4Paperz e se quiser enviar uma proposta também pode ficar a vontade :)

Quando e onde?

Segunda feira dia 23 de janeiro.
Local: Auditório Caelum – 2° andar.
Rua Vergueiro, 3169 – Vila Mariana, próximo ao metrô Vila Mariana.
Horário: das 20h00 às 23h00.

Para participar do encontro basta acessar a página do evento no AgendaTech e clicar no botão “Eu Vou!”. É muito importante cadastrar-se na AgendaTech pois uma lista será deixada na recepção da Caleum para controlar a entrada.

Espero a presença de todos vocês.

Abraços

Parceria @hellobits e @poisonlabs para treinamentos online

Fala Galera

Bom como muitos de vocês já devem estar sabendo ontem foi divulgado no Twitter a formação de uma nova parceria @poisonlabs e @hellobits.

A um tempo já estava rolando uma conversa entre eu e o @fnando para fecharmos uma parceria para treinamentos online. Eu que já estava ministrando treinamentos presenciais tinha muito interesse em expandir para o online e agora já está tudo certo e melhor já temos datas para treinamentos de iOS a partir da terceira semana de janeiro \o/.

A @hellobits que é comandada pelo @fnando criador do HowToCode e CodePlane está com um escritório se preparando para receber treinamentos presenciais a partir de janeiro.

Primeira visita comercial na @hellobits

A @poisonlabs para quem ainda não conhece é minha empresa, no momento estou atuando com consultoria, treinamentos presenciais e coaching para times de desenvolvimento em empresas. E muito breve teremos alguns aplicativos próprios na AppStore.

Versão alpha do logo da @poisonlabs

Então aguardem, em janeiro treinamentos presenciais de Rails da @hellobits http://howtocode.com.br/workshops/rails e treinamentos online de iOS da @poisonlabs.

Esse é so o inicio de uma parceria que tem muito a crescer.

Abraços

iPhone 4S aquecimento e duração da bateria

Fala pessoal, depois de muito tempo sem postar vamos falar um pouco aqui sobre o recém lançado no Brasil o iPhone 4S.
Estou vendo muitas pessoas reclamando do aquecimento do device, duração de bateria e etc. Não vou falar sobre o que todo mundo já sabe que foi o que rolou durante o lançamento nos blogs e sites gringos pois especificação técnica todo mundo já sabe.

Aqui vai algumas dicas para manter seu iPhone frio e com maior tempo de duração de bateria.

1 – Muita gente estava reclamando de aquecimento ao carregar o device.

O ideal é deixar carregando em uma superfície que não retenha temperatura como por exemplo: sofas, camas, blusas, cobertores etc. Sempre mantenha seu iPhone carregando em locais ventilados e de preferencia em superfícies mais frias mesas, balcões e por ai vai.
Para quem estava acostumado a utilizar aplicativos como Sleep Cycle e deixar o iPhone ligado na tomada durante a noite e colocar o device embaixo do travesseio não é uma boa idéia.

Resolvendo problema do aquecimento :)


2 – Consumo de bateria

Nas primeiras horas com o iPhone 4S minha bateria não estava durando nada foi então que percebi que o GPS estava ligado o tempo todo e isso também estava deixando o device um pouco quente.
Bom foi ai que percebi que o LocationServices do SIRI estava ativado o tempo todo, foi só desativar e o problema foi solucionado. Porém para quem vai para o EUA por exemplo não vale apena deixar esse serviço desligado, estão vai uma dica para corrigir esse problema do do GPS sempre ligado. Basta desligar a localização para o SIRI, desligar e ligar o iPhone e ativar o serviço de localização do SIRI novamente, veja a baixo.

Acesse as configurações do device

Acesse o menu Location Services(Serviço de localização)

Desative o serviço de localização para o SIRI

Agora basta desligar e ligar o iPhone….

Ative o serviço de localização para o SIRI

Pronto feito isso o problema deve estar solucionado, para fazer o teste diga ao SIRI para encontrar por exemplo “Chinese Food” o GPS vai ativar no canto superior do device você vai receber a informação que não é possível encontrar estabelecimentos no Brasil e em seguida o GPS vai desativar normalmente.

E para fechar, bom sempre que temos um lançamento em nossas mãos é normal nos primeiros dias a bateria não durar e o dispositivo aquecer um pouco, pois não paramos de utilizar o device para ver seu potencial. Eu mesmo no primeiro dia com ele ligado na tomado estava jogando InfinityBlade 2 ao mesmo tempo que ele estava fazendo Sync via Wifi com o iTunes fora que eu não sabia e o GPS estava ligado pois eu ainda não sabia desse bug do SIRI ou seja eu estava usando muitos recursos ao mesmo tempo do aparelho e em nenhum momento eu senti queda de performance durante o jogo e a sincronização não parou o único problema foi o aquecimento mesmo. Fora nesse caso e nas situações que citei durante o post o aparelho não teve nenhum tipo de aquecimento quando estava com ele no bolso ou fazendo ligações.

Bom espero que tenha ajudado.

Se voce tem problemas com o sinal do iPhone 4S leia esse post

Abraços

[iOS Dev] Internacionalização de Aplicativos com ajuda do Linguan

Não importa a plataforma em que você está desenvolvendo seu projeto de software, se você deseja alcançar um grande público e consequentemente alcançar suas metas, que na maioria das vez são financeiras, você deve fornecer mais de um idioma em seu software para que ele seja útil para o público espalhado pelo mundo.

A plataforma mobile, talvez seja onde seu aplicativo possa atingir o público mais variado em relação a idiomas. Hoje um aplicativo em inglês tem uma grande chance de ser um sucesso global, pois em todos os mercados terá grande aceitação do público. Mas ter só um idioma, mesmo que seja o inglês, é um fator de limitação do alcance e também da experiência do seu aplicativo, fazendo que você perca uma parcela do que você poderia alcançar atendendo a mais idiomas.

No desenvolvimento de aplicativos para iOS e Mac OS X, o processo de internacionalização de aplicativos é facilitado por uma série de recursos disponíveis na plataforma. Basicamente o que você precisa fazer é administrar arquivos onde os textos de cada idioma pode ser editado e de onde eles serão lidos.

Nesse artigo, farei um tutorial básico sobre internacionalização em aplicativos para iOS e apresentarei o aplicativo Linguan da Cocoanetics, aplicativo este que faz o trabalho de internacionalização ser mais leve e preciso.

Hora de Criar o Aplicativo

Abra o Xcode, e crie um novo aplicativo. Neste caso criarei um aplicativo do tipo “Single View”, com o nome de “Localized”:

Criando o arquivo com os textos

Para criar o arquivo que irá conter os textos para cada idioma, é preciso ir em File > New > New File > Resource > Strings File:

Após selecionar o tipo do arquivo, vamos nomeá-lo, uma boa prática é usar o nome Localizable para o arquivo:

Feito isso, é só criar o arquivo e ele irá aparecer dentro do projeto. Mas ainda não temos idiomas dentro desse arquivo de strings, dessa forma, o idioma utilizado dentro do arquivo será o idioma oficial do aplicativo. Será preciso adicionar idiomas nele, assim ele funcionará como se fosse um diretório com vários arquivos de texto com diversos idiomas. Iremos criar 3 idiomas: Português, Inglês e Espanhol. Para adicionar os idiomas é preciso abrir a barra lateral direita e adicioná-los na aba Localization:

Editando os arquivos

A edição dos arquivos de idioma é simples, basicamente você insere chave = valor, e também pode adicionar comentários:

/* hello */
"helloKey" = "hello";

Isso deve ser replicado para idioma que você deseja traduzir, dessa forma, você teria o seguinte:

/* English */
/* hello */
"helloKey" = "hello";

/* Portuguese */
/* hello */
"helloKey" = "olá";

/* Spanish */
/* hello */
"helloKey" = "hola";

Feito isso, o seu projeto já possui strings traduzidas e para traduzir é simples, basta utilizar a função NSLocalizedString com a chave para a string que você deseja exibir:

NSLocalizedString(@"helloKey", @"")

Exibir a string

Vamos fazer um pequeno teste, vamos adicionar um UILabel no meio da tela para exibir o texto que precisamos, abra o arquivo .xib do seu view controller e posicione um UILabel no meio da tela. Após isso abra o header (.h) do view controller e declare o outlet para acessar o UILabel:

@interface ViewController : UIViewController

@property (nonatomic, strong) IBOutlet UILabel *label;

@end

Feito isso, não esqueça de conectar o UILabel ao seu outlet no arquivo .xib.

Abra o arquivo .m (implementação) do view controller, faça o @synthesize e defina o texto do UILabel:

implementation ViewController

@synthesize label = _label;

- (void)viewDidLoad
{
    [super viewDidLoad];
	
    _label.text = NSLocalizedString(@"helloKey", @"");
}

@end

Dessa forma, já está tudo certo, você só precisa testar o aplicativo e mudar o idioma do dispositivo de testes para visualizar as modificações sendo feitas:

Versão em Inglês

Versão em Inglês

Versão em Português

Versão em Português

Versão em Espanhol

Versão em Espanhol

É muito simples até mesmo traduzir um aplicativo que já está em desenvolvimento. Mas mesmo assim, o fato de ter de replicar chave = valor para todos os arquivos, podem se tornar um pouco insustentável depois um tempo de desenvolvimento e algumas dezenas de strings para serem administradas.

Simplificando com Linguan

Para resolver esse problema de replicação, o pessoal do Cocoanetics criou um aplicativo matador para administração de arquivos de tradução chamado Linguan. O Linguan é um aplicativo super simples de ser utilizado, tem uma interface bem amigável e cumpre o que promete. Na minha opnião, é mais um aplicativo do tipo “Como eu desenvolvia sem isso” que redefine como você trabalha com strings traduzidas.

Para começar, ele está disponível na Mac App Store e custa $4,99 (uma barbada), após comprar/instalar ele, ao abrir verá a seguinte tela:

No Linguan, você não abre arquivos, você abre seu projeto do Xcode inteiro, e o aplicativo varre ele atrás de strings traduzidas e as organiza por chaves x idiomas. Abri o projeto do Localized no linguan e olhe como ficou:

Nessa tabela, será possível alterar traduções, adicionar novas chaves com suas traduções e também remover as chaves, e o melhor, tudo isso está sendo sincronizado com os arquivos originais, você pode trabalhar seu código fonte no Xcode e editar as traduções diretamente no Linguan.

O Linguan possui também as possibilidade de exportar arquivos com traduções. Dessa forma, é possível enviar ao seu tradutor um arquivo de texto com todas as chaves que estão sem tradução para ele traduzir. Quando ele enviar de volta para você, você pode importar esse arquivo e o aplicativo irá automaticamente sincronizar suas traduções. Além das possibilidades de importação e exportação de strings, o Linguan possui um validador e um “Wizard” que ajuda você a traduzir suas strings.

Para conhecer um pouco mais sobre o Linguan, o desenvolvedor dá um grande destaque a ele no seu site e também está disponível na Mac App Store.

Para finalizar, recomendo muito a criação de aplicativos com localização mesmo que você não vá traduzir o aplicativo imediatamente, dessa forma, você precisará de poucos minutos para transformar seu aplicativo de um idioma em um aplicativo com vários idiomas. E recomendo muito também, o uso do Linguan, foi um aplicativo que me chamou a atenção desde seu lançamento, pois eu acho um saco administrar arquivos de strings, pois o processo de replicação das alterações é lento e falho por depender exclusivamente de uma cabeça humana.


Filed under: devrockr, Internacionalização, iOS Dev, Objective-C

Apresentação Desenvolvimento iOS

Na última sexta-feira, dia 13/11, fiz uma apresentação sobre desenvolvimento iOS na Semana Acadêmica da Computação da Sociesc em Joinville, a apresentação consiste em apresentar alguns elementos básicos no desenvolvimento de aplicativos para dispositivos iOS e mostrar como começar por nessa tecnologia.


Filed under: Apresentações, iOS Dev, Objective-C

[iOS 5] Utilizando a integração nativa com o Twitter

Uma das novidades mais interessantes para os usuários do iOS 5 é a integração nativa com o Twitter, fazendo-se possível compartilhar praticamente qualquer tipo de conteúdo a partir de qualquer aplicativo, desde que o desenvolvedor tenha utilizado a integração nativa como opção de compartilhamento em seu aplicativo.

A intenção desse artigo é criar um aplicativo comum para compartilhar um conteúdo comum como um texto.

Criando o Aplicativo

Escolher o template do projeto

Escolher o template do projeto

Configurando o Projeto

Configurando o Projeto

Projeto Criado

Projeto Criado

Integrando o Twitter em seu Aplicativo
Para conseguir integrar o Twitter dentro do seu aplicativo, é preciso utilizar o Framework Twitter.framework disponibilizado junto com o SDK do iOS 5. Para isso, vá para as configurações do “target” do projeto em Summary e role o conteúdo até fim:

Configurações de Frameworks

Configurações de Frameworks

Clique no botão de adicionar (+) frameworks, e procure pelo framework Twitter.framework:

Adicionando o framework Twitter.framework

Adicionando o framework Twitter.framework

Selecione o framework Twitter.framework e clique em add, feito isso, o framework já está disponível dentro do seu projeto.

Mantendo a Compatibilidade

Para manter seu aplicativo compatível com versões anteriores do iOS, se for preciso é claro, é possível configurar o framework para não ser obrigatório seu carregamento. Se você executar o projeto como está no iOS 4 irá ocorrer esse erro: dyld: Library not loaded: /System/Library/Frameworks/Twitter.framework/Twitter, para evitá-lo, vá onde está a configuração dos frameworks e selecione a opção de required para optional no framework:

Mantendo seu projeto compatível com iOS 4

Mantendo seu projeto compatível com iOS 4

Essa configuração somada a alguns cuidados com o código fonte deverá garantir um funcionamento tranquilo para o aplicativo.

Criando a tela com o conteúdo

Para começarmos, vamos criar a parte visual da tela que vamos usar para montar o texto e enviar para o Twitter. Para esse exemplo, não irei usar o storyboard, pois o visual do exemplo é simples e possui apenas uma tela. Vamos criar um campo de texto e um botão para enviar para o Twitter:

Tela de conteúdo

Tela de conteúdo

E agora, no arquivo TwitterViewController.h vamos criar o outlet para o campo de texto e a action para o botão:

//
//  TwitterViewController.h
//  Twitter
//

#import <UIKit/UIKit.h>

@interface TwitterViewController : UIViewController

@property (nonatomic, strong) IBOutlet UITextField *textField;

- (IBAction)tweet:(id)sender;

@end

Passe para o arquivo TwitterViewController.m para fazer a implementação da propriedade e da action:

//
//  TwitterViewController.m
//  Twitter
//

#import "TwitterViewController.h"

@implementation TwitterViewController

@synthesize textField = _textField;

- (IBAction)tweet:(id)sender
{
    
}

Após isso, vá até o arquivo da interface, conecte a outlet textField ao UITextField e a action ao evento “Touch Up Inside” do botão.

Twitando

A parte mais simples já passou, agora vem a parte simples =). Vamos começar o arquivo TwitterViewController.m onde vamos importar o framework do Twitter, vamos testar sua disponibilidade e vamos tentar postar algo no twitter:

//
//  TwitterViewController.m
//  Twitter
//

#import "TwitterViewController.h"
#import <Twitter/Twitter.h>

@implementation TwitterViewController

@synthesize textField = _textField;

- (IBAction)tweet:(id)sender
{
    Class twitterClass = NSClassFromString(@"TWTweetComposeViewController");
    if (twitterClass) {
        TWTweetComposeViewController *composer = [[TWTweetComposeViewController alloc] init];
        [composer setInitialText:_textField.text];
        [self presentViewController:composer animated:YES completion:NULL];
    }
}

A partir desse código, já é possível enviar um texto para o Twitter utilizando a API nativa do iOS 5. Caso o usuário já tenha configurado sua conta no iOS, ele irá ver um balão onde ele poderá editar o texto antes de enviar ao Twitter, caso ele não tenha configurado, ele receberá um alerta, e poderá decidir se quer configurar ou não:

Tela de compartilhamento

Tela de compartilhamento

Tela de alerta do usuário

Tela de alerta do usuário

Além do básico

Além do básico demonstrado aqui, é possível fazer mais com esse framework, como adicionar um “block” para ser executado ao final do processo e deve ser atribuído à propriedade completionHandler.

Também existem outros métodos específicos para anexar imagens e links:

- (BOOL)addImage:(UIImage *)image;
- (BOOL)removeAllImages;
- (BOOL)addURL:(NSURL *)url;
- (BOOL)removeAllURLs;

Para finalizar, é importante dar esse tipo de recurso para os usuários para eles poderem compartilhar conteúdos a partir do seu aplicativo, pois é óbvio que isso terá um impacto positivo para o usuário e para seu aplicativo.

Caso queira baixar o código fonte, ele está disponível no github: http://github.com/xorna/Twitter.


Filed under: Uncategorized