Curso de iPhone
LCG/UFRJ
DCC/IM

Acessos a esta página desde 10/07/2011: Page Visit Counter

Índice


Por que Implementar para iPhone/iPad/iTouch?

Dispositivos móveis são os instrumentos de trabalho do futuro. Pequenos, leves e portáteis, deixaram de ser ficção científica para povoar os lares do presente. Tablets, smart phones e ipods são objetos de desejo de quase todas as pessoas, independentemente do seu nível social.

A Apple foi, sem dúvida, uma empresa de vanguarda na disseminação deste tipo de tecnologia, principalmente pela qualidade e robustez do seu hardaware, o pioneirismo do seu sistema de interface, e um sistema operacional sólido como uma rocha, baseado em Unix (BSD).

Ao introduzir um modelo de vendas online integrado ao desktop (App store e iTunes) permitiu que, pela primeira vez, aplicações fossem vendidas a um custo muito baixo, mas em larga escala. O serviço de venda de músicas pela Internet do iTunes é responsável por 26.7% de todas a músicas vendidas nos Estados Unidos. Algumas aplicações relativamente simples chegam a bater marcas surpreendentes de 2 milhões de cópias vendidas a um preço de $1.99, por exemplo, o Alarm Clock Radio.

O sucesso de vendas da Apple é tão grande que a Apple Store da quinta Avenida (The Cube), em Nova Iorque (a Disneylandia dos adultos), nunca fecha, e é necessário agendar uma visita com antecedência, para conseguir ser atendido por um vendedor.


The Cube.

Me in The Cube.

In The Cube.

Módulos Disponíveis

O curso está dividido em dezessete módulos, podendo ser estendido, caso haja uma maior disponibilidade de tempo (ementa). Os módulos estão disponíveis no formato .ppt (Powerpoint), ou .pdf (Adobe).

Apresentações


Objective C

Objective-C é uma linguagem de programação orientada a objeto que adiciona o sistema de troca de mensagens do Smalltalk à linguagem de programação C. Amplamente utilizada nos sistemas operacionais Mac OS X e iOS, trata-se, primordialmente, de uma linguagem para acessar a API do Cocoa, um framework que automatiza vários aspectos de uma aplicação, de acordo com as diretivas de Interface com o Usuário da Apple.

A princípio, é possível desenvolver uma aplicação completamente em C ou C++, e usar Objective C/Objective C++ apenas para acessar o sistema de interface. O único cuidado é que qualquer arquivo que acesse um objeto C++ deve possuir extensão .mm, para forçar o uso do compilador g++, ao invés do gcc.

Por ser uma uma extensão, Objective C não adiciona nenhuma "funcionalidade" não suportada pela linguagem C. Por exemplo, a iniciação de parâmetros de procedimentos com valores default.

Caso funcionalidades típicas de C++ sejam necessárias, a alternativa é programar em Objective C++, e então poder empregar simultaneamente, por exemplo, strings e exceções de C++ e do Foundation Framework.


Swift

Swift é uma linguagem compilada, multi-paradigma, criada pela Apple Inc. para desenvolvimento em ambiente iOS e OS X.

Introduzida pela Apple em 2014 na conferência mundial de desenvolvedores (WWDC), Swift foi projetada para funcionar com os frameworks Cocoa e Cocoa Touch e com a grande quantidade de código Objective-C já existente para os produtos da Apple.

Swift é supostamente mais tolerante ("mais seguro") a código "descuidado" do que Objective-C, e também mais concisa. Foi implementada com o compilador LLVM incluído no Xcode 6, e usa as bibliotecas de execução do Objective-C, permitindo que códigos C, Objective-C, C++ e Swift rodem, eficientemente, dentro de uma mesma aplicação. Porém, sua natureza proprietária pode impedir sua adoção fora do ambiente da Apple.

Swift não expõem pointeiros e outros meios de acesso não seguros, diferentemente de Objective-C, que emprega pointeiros pervasivamente para referenciar instâncias de objetos. Além disso, o uso da sintaxe de Smalltalk em Objective-C, para chamada de métodos, foi substituída por um estilo que emprega notação com ponto e um sistema de espaço de nomes (namespace) mais familiar a programadores acostumados a linguagens dos anos 2000, como JavaScript, Java ou C#.

Swift introduz verdadeiramente parâmetros nomeados e mantém conceitos chave de Objective-C, incluindo protocolos, closures (blocos) e categorias, sempre substituindo a sintaxe anterior por outra versão mais clara, e permitindo que esses conceitos sejam aplicados a outras estruturas da linguagem, como enums.


Links Úteis

Apple Developer
Foundation Framework Reference
Swift Language Reference
Swift Resources
Objective-C: Guide and Resources
LearnSwift.tips
CocoaDev
Using iOS Simulator
Using The Debugger
Techotopia
Stanford iPhone Application Development - IOS 4
Stanford iPhone Application Development - IOS 5
Stanford iPhone Application Development - IOS 6
Stanford iPhone Application Development - IOS 7
Stanford iPhone Application Development - IOS 9
Beginning ARC in iOS 5 Tutorial Part 1
Singletons, AppDelegates and Top-level Data
Code Signing
Changing The Name of The View Controller
Apache PHP and MySQL on Leopard
How to Turn Your Mac Into a Web Server
Manage Users and Groups Using a GUI Tool
GLUI 2.35 Framework for Mac OS X
How to Create a Shortcut in Mac OS X
Using Any .png File as a Desktop Icon
How to do Print Screen in Mac OS X
OpenVPN for MAC OS X
NFS mounts
EngineerGuy


Exemplos

Por tópicos:


Projetos

Todos os projetos foram desenvolvidos com xcode 4.6.3 e sdk 6.1.


iPhone na UFRJ.

iTunes.


Livros


Instalação

A instalação básica requer apenas o Xcode.

Para compilar código Objective-C em ambiente Linux (Fedora), é necessário ativar o repositório releases/updates, e fazer:

yum install 
       gcc-objc
       gcc-objc++
       gnustep-base-devel


Hardware para Desenvolvimento

Na prática, existem três opções:


Jail Break

Qualquer aplicação para rodar num iphone/ipad precisa estar assinada por um desenvolvedor cadastrado na Apple. A verificação da assinatura é feita a nível de kernel, o que torna muito difícil contornar a restrição. Para se tornar um desenvolvedor da Apple é necessário desembolsar uma quantia de 100 dólares por ano. No entanto, para os fortes de coração, é possível quebrar a jaula da Apple, ao custo da instalação de um firmware modificado no dispositivo. Após o desbloqueio, aplicações não assinadas podem rodar normalmente.

Para criar um ipa sem assinatura, clique com o botão direito do mouse sobre o .app da aplicação no xcode (Products) e selecione Reveal in Finder. Em seguida, arraste o .app para algum outro diretório, por exemplo, o Desktop. Depois crie um diretório chamado Payload e mova o .app para dentro dele. Finalmente, crie um ícone de tamanho 512x512 pixels no formato png e renomeie-o (no terminal) para iTunesArtwork (sem extensão). Opcionalmente, o seu ícone pode possuir um fundo transparente. Agora, é só comprimir no formato zip:

zip -r nome_do_projeto.ipa ./Payload ./iTunesArtwork

Para instalar a sua aplicação, selecione no iTunes, o tab File -> Add to Library ... e aponte para o seu novo ipa. Na próxima sincronização, o iTunes instalará automaticamente o seu ipa no dispositivo (iPhone, iPad ou iTouch).

Aplicações sem assinatura precisam de um sincronizador (Appsync) modificado para serem instaladas via iTunes. A forma mais simples é instalando o Installous do repositório Hackulo.us

Nota: Todas as aplicações (.ipa) deste site NÃO estão assinadas.

Como desbloquear:

A Apple só assina os últimos firmwares disponíveis. Portanto, sempre que sair um firmware que seja "desbloqueável", deve-se agir o mais rápido possível.

Antes de começar saiba que existem dois tipos de desbloqueio: Tethered x Untethered. No tethered jaibreak, toda vez que seu iPhone ou iTouch for reiniciado, ou a bateria perder a carga, é necessário conectar (tether) o dispositivo a um computador, para que o hardware possa partir (boot) com o auxílio da aplicação de jailbreak. Já o untethered jaibreak requer uma conexão a um computador apenas para o processo inicial de jailbreak. Após isso, o dispositivo pode ser reiniciado quantas vezes se fizer necessário sem estar conectado a computador algum.

Dispositivos que vieram de fábrica com iOS 4/iOS 5 possuem a partição / de 1GB/1.5GB, respectivamente. Aqueles que vieram com iOS 3 possuem uma partição / de apenas 750MB. Isso pode causar transtornos no jailbreak e obrigar a movimentação de alguns diretórios para a outra partição e o uso de links simbólicos. Para este caso, é melhor usar um site de desbloqueio que permita alterar o tamanho das partições durante o processo de desbloqueio, ou então restaurar o dispositivo (no iTunes) à configuração de fábrica (claro que perdendo todo o conteúdo pré-existente), para que as partições sejam recriadas. Note-se que Iphones/ipods 3 não podem ir além do iOS 5.1.1, e o greenpois0n (untethered) requer apenas que baixe-se um aplicativo e clique-se sobre um botão.

Uma vez que o dispositivo esteja desbloqueado, recomenda-se instalar:

É possível salvar a assinatura do seu dispositivo (SHSH blob) para poder retornar a uma versão anterior do firmware, mesmo que este não esteja mais sendo assinado. O aplicativo TinyUmbrella pode salvar o seu blob nos servidores do Cydia, e restaurar um firmware antigo via iTunes. Para isto ele redireciona (altera o arquivo /etc/hosts do seu computador) o site da Apple para um endereço do Cydia, que assinará o firmware no lugar da Apple.

Sites para desbloqueio:


Pré-requisitos para Assistir o Curso

Nota: temos um iMac no LCG e quatro outros no LUG3 (laboratório de uso geral) da sala H-319, que podem ser usados pelos alunos do curso.


Turmas do Prof. Paulo Roma

Para aqueles matriculados no curso de Computação Gráfica II (MAB-222) ou Tópicos Especiais em Computação Gráfica II (MAB-001), por favor inscrevam-se no curso: MAB-222 ou MAB-001. A sala de aula é o LCG. As notas dos trabalhos podem ser obtidas neste local: MAB222 ou MAB001. A sexta nota (nota 6) é a média final. Há também um grupo de discussão no google.