Aprendendo Programação iOS Alasdair Allan Novatec Authorized Portuguese translation of the English edition of titled Learning iOS Programming, 3rd edition, ISBN 9781449359348 © 2013 Alasdair Allan. This translation is published and sold by permission of O'Reilly Media, Inc., the owner of all rights to publish and sell the same. Tradução em português autorizada da edição em inglês da obra Learning iOS Programming, 3rd edition, ISBN 9781449359348 © 2013 Alasdair Allan. Esta tradução é publicada e vendida com a permissão da O'Reilly Media, Inc., detentora de todos os direitos para publicação e venda desta obra. © Novatec Editora Ltda. [2013]. Todos os direitos reservados e protegidos pela Lei 9.610 de 19/02/1998. É proibida a reprodução desta obra, mesmo parcial, por qualquer processo, sem prévia autorização, por escrito, do autor e da Editora. Editor: Rubens Prates Tradução: Rafael Zanolli Revisão técnica: Aurelio Jargas Revisão gramatical: Marta Almeida de Sá Editoração eletrônica: Carolina Kuwabata ISBN: 978-85-7522-363-5 Histórico de impressões: Julho/2013 Primeira edição Novatec Editora Ltda. Rua Luís Antônio dos Santos 110 02460-000 – São Paulo, SP – Brasil Tel.: +55 11 2959-6529 Fax: +55 11 2950-8869 Email: [email protected] Site: www.novatec.com.br Twitter: twitter.com/novateceditora Facebook: facebook.com/novatec LinkedIn: linkedin.com/in/novatec Sumário Prefácio..................................................................................................................11 Terceira edição.......................................................................................... 11 Notas da segunda edição........................................................................... 11 Quem deveria ler este livro?....................................................................... 12 O que você já deve saber?.......................................................................... 12 O que você aprenderá?.............................................................................. 12 O que há neste livro?................................................................................. 12 Convenções utilizadas neste livro............................................................... 14 Uso de exemplos de código........................................................................15 Como entrar em contato conosco..............................................................16 Agradecimentos........................................................................................16 capítulo 1 ▪ Por que seguir o caminho nativo?..........................................................17 Os prós e os contras.................................................................................. 18 Por que escrever aplicativos nativos?..................................................... 19 O ciclo de lançamento...............................................................................20 Desenvolva e eles virão.............................................................................. 21 capítulo 2 ▪ Como se tornar um desenvolvedor.........................................................23 Registro como desenvolvedor iOS..............................................................23 Inscrição no iOS Developer Program.........................................................26 Mac Developer Program............................................................................27 Instalação do SDK do iOS.........................................................................28 O que acontece quando houver um beta?..............................................32 Preparação de seu dispositivo iOS..............................................................32 Criação de um certificado de desenvolvimento......................................33 Obtenção do UDID de seu dispositivo de desenvolvimento...................36 Criação de uma App ID.......................................................................37 Criação de um perfil de aprovisionamento móvel..................................38 Tornando seu dispositivo disponível para desenvolvimento...................39 6 Aprendendo Programação iOS capítulo 3 ▪ Seu primeiro aplicativo iOS....................................................................42 Introdução à Objective-C..........................................................................42 Programação orientada a objetos..........................................................42 Modelo de objetos da Objective-C........................................................45 Introdução à sintaxe da Objective-C.....................................................47 Criação de um projeto...............................................................................48 Exploração do projeto no Xcode...........................................................52 Nosso projeto no Interface Builder.......................................................60 Construção da interface de usuário...................................................... 61 Conexão da interface de usuário com o código......................................63 Execução do aplicativo no simulador....................................................67 Colocação do aplicativo em seu iPhone................................................ 68 capítulo 4 ▪ Codificação em Objective-C....................................................................70 Declaração e definição de classes...............................................................70 Declaração de uma classe com a interface............................................. 71 Definição de uma classe com a implementação.....................................72 Tipagem de objetos..............................................................................73 Propriedades........................................................................................73 Síntese de propriedades........................................................................75 Sintaxe de ponto..................................................................................76 Declaração de métodos........................................................................76 Chamada de métodos..........................................................................77 Chamada de métodos em nil................................................................78 Gerenciamento de memória......................................................................78 Criação de objetos...............................................................................79 Pool de liberação automática................................................................79 Ciclo alloc, retain, copy e release...........................................................80 Contagem de referência automática...................................................... 81 Método dealloc....................................................................................82 Resposta a avisos de memória..............................................................83 Padrões de projeto iOS fundamentais........................................................83 Padrão Modelo-Visão-Controlador.......................................................84 Visões e controladores de visão.............................................................85 Delegados e o padrão DataSource.........................................................86 Conclusão................................................................................................87 capítulo 5 ▪ Aplicativos com base em visão de tabela................................................88 Criação do projeto................................................................................... 88 Criação de uma visão de tabela.................................................................89 Execução do código.............................................................................94 Preenchimento da visão de tabela..............................................................95 Sumário Construção de um modelo........................................................................97 Inclusão de cidades no guia................................................................ 100 Inclusão de imagens em seus projetos................................................. 103 Conexão do controlador ao modelo......................................................... 105 Simulação de funcionalidade com janelas de alerta............................. 108 Inclusão de controles de navegação no aplicativo...................................... 109 Inclusão de uma visão de cidade...............................................................112 Modo de edição...................................................................................... 122 Exclusão de uma entrada de cidade.................................................... 126 Inclusão de uma entrada de cidade..................................................... 127 Interface “Add New City”....................................................................131 Captura dos dados de cidade............................................................. 138 capítulo 6 ▪ Outros controladores de visão..............................................................145 Aplicativos utilitários.............................................................................. 145 Desenvolvimento do aplicativo de monitoramento de bateria................147 Aplicativos de barra de guias................................................................... 158 Inclusão de outro item de barra de guias............................................. 160 Combinação de controladores de visão.................................................... 164 Controladores de visão modal..................................................................171 Modificação do aplicativo City Guide..................................................171 Controlador de visão do seletor de imagens...............................................181 Inclusão do seletor de imagens no aplicativo City Guide.......................181 Aplicativos Master-Detail........................................................................ 192 Criação de um aplicativo universal..................................................... 192 Controladores popover............................................................................ 199 capítulo 7 ▪ Conexão com a rede............................................................................201 Detecção de status de rede....................................................................... 201 Classe Reachability da Apple.............................................................. 201 Embutindo um navegador web em seu aplicativo..................................... 215 Um controlador de visão web simples................................................. 216 Apresentação de arquivos HTML estáticos..........................................226 Obtenção de dados a partir de uma UIWebView................................. 227 Envio de emails.......................................................................................227 Obtenção de dados da internet................................................................ 233 Solicitações síncronas......................................................................... 234 Solicitações assíncronas..................................................................... 234 Uso de web services........................................................................... 235 7 8 Aprendendo Programação iOS capítulo 8 ▪ Manipulação de dados........................................................................254 Entrada de dados....................................................................................254 UITextField e seu delegado................................................................. 255 UITextView e seu delegado................................................................. 257 Processamento XML................................................................................ 259 Processamento XML com libxml2...................................................... 259 Processamento XML com NSXMLParser............................................ 261 Processamento JSON..............................................................................263 NSJSONSerialization.........................................................................263 Framework JSON..............................................................................265 Recuperação de trends do Twitter.......................................................266 Uso do framework Social...................................................................268 Aplicativo Twitter Trends....................................................................269 Expressões regulares................................................................................ 278 Introdução às expressões regulares...................................................... 278 Armazenamento de dados.......................................................................284 Uso de arquivos simples.....................................................................284 Armazenamento de informações em um banco de dados SQL.............286 Core Data..........................................................................................294 capítulo 9 ▪ Uso de sensores...................................................................................295 Suporte de hardware...............................................................................295 Disponibilidade de rede.....................................................................295 Disponibilidade de câmera.................................................................297 Disponibilidade da entrada de áudio..................................................297 Disponibilidade de GPS.....................................................................298 Disponibilidade do magnetômetro.....................................................298 Configuração de capacidades exigidas de hardware..................................298 WiFi persistente.................................................................................300 Modos de segundo plano...................................................................300 Diferenças entre iPhone e iPad................................................................. 301 Uso da câmera........................................................................................302 Framework Core Motion.........................................................................303 Recepção de dados de movimento......................................................304 Envio de dados de movimento...........................................................305 Acelerômetro.....................................................................................306 Giroscópio......................................................................................... 311 Magnetômetro....................................................................................314 Acessando o sensor de proximidade..........................................................318 Uso da vibração...................................................................................... 320 Sumário capítulo 10 ▪ Geolocalização e mapeamento..........................................................321 Framework Core Location........................................................................321 Direção do dispositivo....................................................................... 324 Weather dependente de localização.......................................................... 325 Geocodificação reversa....................................................................... 327 Geocodificação progressiva................................................................ 327 Objetos CLPlacemark........................................................................ 328 Modificação do aplicativo Weather..................................................... 328 Localização de usuário e MapKit............................................................. 337 Anotações em mapas............................................................................... 345 capítulo 11 ▪ Introdução ao iCloud.........................................................................354 Como posso utilizar o iCloud?................................................................ 354 Backup no iCloud.............................................................................. 355 Provisionamento de seu aplicativo para o iCloud................................. 356 Utilização de armazenamento de chave-valor............................................ 358 Conclusão..............................................................................................366 capítulo 12 ▪ Integração de seu aplicativo..............................................................368 Preferências de aplicativo.........................................................................368 Framework Accounts...............................................................................380 Framework Social...................................................................................382 Envio de tuítes...................................................................................382 Realização de postagens no Facebook.................................................384 Esquemas de URL personalizados...........................................................385 Uso de esquemas personalizados........................................................385 Registro de esquemas personalizados..................................................386 Reprodução de mídia...............................................................................391 Uso do Address Book (Contatos).............................................................396 Seleção interativa de pessoas.............................................................. 397 Seleção programática de pessoas......................................................... 401 Envio de mensagens de texto...................................................................402 capítulo 13 ▪ Distribuição de seu aplicativo............................................................404 Inclusão de funcionalidades faltantes.......................................................404 Inclusão de um ícone.........................................................................404 Inclusão de uma imagem de inicialização............................................408 Alteração do nome de apresentação.................................................... 412 Habilitação de rotação....................................................................... 413 Compilação e assinatura......................................................................... 415 Distribuição ad hoc........................................................................... 415 Distribuição de desenvolvedor para desenvolvedor.............................. 421 9 10 Aprendendo Programação iOS Distribuição na App Store..................................................................422 Envio à App Store.................................................................................... 423 Compilação de seu aplicativo para distribuição na App Store...............430 App Store Resource Center.................................................................434 Razões para rejeição................................................................................434 capítulo 14 ▪ Indo além.........................................................................................438 Cocoa e Objective-C................................................................................438 SDK do iOS....................................................................................... 439 Aplicativos Web...................................................................................... 439 PhoneGap.........................................................................................440 Core Data...............................................................................................440 In-App Purchase..................................................................................... 441 MKStoreKit.......................................................................................442 Core Animation......................................................................................442 Game Kit................................................................................................442 Elaboração de jogos................................................................................443 Visual e comportamento.........................................................................443 Acessórios de hardware...........................................................................444 Sobre o autor..........................................................................................445 Colofão..................................................................................................446