Advertisement
  1. Code
  2. iOS

Atualize seu app para o iOS 10

by
Difficulty:IntermediateLength:MediumLanguages:

Portuguese (Português) translation by David Batista (you can also view the original English article)

Neste artigo, eu gostaria de falar sobre o iOS 10 e o que é necessário para preparar seus apps para ele.

Como em todo lançamento, o iOS 10 introduz uma serie de mudanças e melhorias. Algumas são obrigatórias, outras são recomendadas, e há também algumas mudanças que podem melhorar a experiência do usuário em seu aplicativo. Vamos começar com uma visão geral do que é obrigatório caso você construa seu aplicativo focado no iOS 10.

1. App Transport Security está chegando

A mudança mais importante não esta estritamente relacionada ao iOS 10, mas é importante o suficiente para eu querer falar sobre ela primeiro. Apesar do App Transport Security (ATS) ter aparecido desde o iOS 9, sempre foi fácil de optar por tirar o ATS, adicionando o trecho a seguir no Info.plist do seu app.

Mas isso está prestes a mudar. A partir de 1 de janeiro de 2017, todo aplicativo enviado à App Store, incluindo as atualizações de aplicativos existentes, precisarão cumprir as diretrizes da ATS. Isso significa que seu aplicativo precisa se comunicar de forma segura com os serviços web através do HTTPS.

Se você leu meu artigo detalhado do App Transport Security, então você deve lembrar que o App Transport Security define um grupo de regras. Os servidores que se comunicam com seu aplicativo precisam cumprir essas regras. Em outras palavras, fazer pedidos de rede em HTTPS não é suficiente. Cada servidor que seu aplicativo conversa precisa estar seguro e cumprir os modernos padrão de segurança.

Você ainda pode definir exceções de domínios na Info.plist, mas não é mais permitido optar por tirar o App Transport Security completamente.

Conexões locais

Eu recentemente encontrei um problema relacionado ao App Transport Security. O aplicativo de um cliente precisava se comunicar com outro aparelho em uma mesma rede. Ele se comunica com outro aparelho usando seu endereço IP, que não é suportado pelas exceções de domínios do App Transport Security. E para tornar as coisas um pouco mais complicadas, o endereço IP de um aparelho não é fixo. Ele pode e mudará toda hora.

Felizmente, com o iOS 10, é possível resolver esse problema adicionando um par de palavra-chave no dicionário NSAppTransportSecurity na Info.plist. Definindo o valor Yes ao NSAllowsLocalNetworking, é possível desabilitar o App Transport Security para tráfego local de rede.

Outras opções

Se você já lutou com o App Transport Secutiry no passado, então eu recomendo que dê uma olhada na documentação de atualização do App Transport Secutiry. A Apple adicionou algumas chaves adicionais que tornam o trabalho com o ATS menos trabalhoso.

Por exemplo, muitos aplicativos carregam conteúdo da internet em um web view. Seu aplicativo muitas vezes não sabe quais websites o usuário irá visitar, o que torna impossível definir exceções de domínios na Info.plist para o App Transport Security. Com o iOS 10, você pode desativar o App Transporte Security para os web views definindo YES para o NSAllowsArbitraryLoadsInWebContent na Info.plist.

O App Transport Security é obrigatório

O que você precisa se lembrar é que App Transport Security será obrigatório para todos os aplicativos enviados à App Store após 31 de dezembro. Não é mais possível optar por tirar o App Transport Security. Note que o time de revisão da App Store requer uma explicação se você optar por tirar parcialmente o App Transport Security usando uma exceção, tal como NSAllowsLocalNetworking ou NSAllowsArbitraryLoadsInWebContent. Você pode ler mais sobre isso na documentação da Apple.

2. Privacidade

A Apple continua investindo na proteção da privacidade de seus consumidores e esse compromisso também tem consequências para os desenvolvedores. O que isso significa para você?

Se seu aplicativo acessar um sistema de serviços ou um dispositivo que requer a permissão explicita do usuário, o usuário vê um alerta do sistema em que o aplicativo pede sua permissão. Caso você não tivesse especificado um conteúdo para o alerta, o sistema operacional costumava fornecer um. Isso mudou no iOS 10.

Apple Continues to Invest In Privacy and Security

Como o iOS 10, seu aplicativo precisa informar ao usuário por que ele precisa acessar um sistema de serviços particular ou um aparelho. Você faz isso adicionando uma chave no Info.plist. Se seu aplicativo for localizado, então você precisa fornecer uma tradução para a descrição no arquivo InfoPlist.strings.

Segue uma lista completa das chaves de privacidade disponíveis no iOS 10. A maioria pode ser conhecida, mas algumas são novas no iOS 10, tal como NSSiriUsageDescription e NSAppleMusicUsageDescription.

  • HealthKit
    • NSHealthShareUsageDescription
    • NSHealthUpdateUsageDescription
  • Location
    • NSLocationUsageDescription
    • NSLocationAlwaysUsageDescription
    • NSLocationWhenInUseUsageDescription
  • NSBluetoothPeripheralUsageDescription
  • NSCalendarsUsageDescription
  • NSVoIPUsageDescription
  • NSCameraUsageDescription
  • NSContactsUsageDescription
  • NSHomeKitUsageDescription
  • NSAppleMusicUsageDescription
  • NSMicrophoneUsageDescription
  • NSMotionUsageDescription
  • NSPhotoLibraryUsageDescription
  • NSRemindersUsageDescription
  • NSSpeechRecognitionUsageDescription
  • NSSiriUsageDescription
  • NSVideoSubscriberAccountUsageDescription

Se você não adicionar uma descrição de uso para o sistema de serviços e aparelhos que seu aplicativo usa, um alerta será exibido no console e o sistema de alerta que pede permissão ao usuário não será exibido. Como resultado, seu aplicativo recusará o acesso a esse serviço especifico.

É evidente dizer que a equipe de revisão da App Store rejeita quaisquer aplicativos que violam esta política. Na verdade, compilações carregadas para a App Store que não estão em conformidade com esta política são automaticamente rejeitadas.

Se você usa bibliotecas ou framework de terceiros em seu aplicativo, então certifique-se de que a descrição do uso no Info.plist esta correta. Bibliotecas e frameworks para anúncios muitas vezes requerem muitas permissões que você pode não saber ou não estar esperando.

3. Swift 3

Se você abir um projeto existente no Xcode 8 pela primeira vez e ele for em Swift, você será questionado se deseja migrar para o Swift 3. Se você ainda não se sentir pronto, o Xcode pergunta se você deseja migrar para o Swift 2.3. Você deve escolher entre um ou outro, ja que o Xcode 8 suporta apenas estas versões do Swift. O Swift 2.2.1 e o Swift 2.3 são muito parecidos. A diferença mais importante é que o Swift 2.3 é compatível com o iOS 10, tvOS 10, watchOS 3 e o macOS 10.12.

Você deve migrar hoje?

Você deve migrar hoje para o Swift 3? Possivelmente não. Mas não espere muito. Em algum momento, a Apple irá obrigar os desenvolvedores a submeter aplicativos com o Xcode 8, que no caso não suporta o Swift 2.2.1. Você poderia ficar com o Swift 2.3, mas porque não fazer o salto?

É verdade que a migração de um projeto para o Swift 3 tem um impacto dramático na base de código do seu projeto. Quase todas as linhas de código mudaram de alguma forma. As alterações de API são substanciais. Mas o lado positivo é que você começa a usar Swift 3. Eu venho usando o Swift 3 por vários meses, e eu estou adorando. É uma grande melhoria sobre Swift 2.2.1 e Swift 2.3.

Planejar com antecedência

Se você está trabalhando com um projeto grande para um cliente, certifique-se de planejar cuidadosamente a migração para o Swift 3. Para projetos complexos, a migração pode demorar vários dias. As vantagens são que você pode começar a usar as APIs do Swift 3 e também se benefícia do compilador melhorado do Swift 3 alimentado pelo LLVM e pelo Clang.

4. Melhorias e Deprecações

Com cada lançamento do iOS, a Apple melhora a plataforma adicionando e removendo APIs. Muitos frameworks tem recebido atualizações significativas e a empresa também introduziu vários novos frameworks.

Por que isso é importante? Se você quer se destacar na App Store, vale a pena manter seus aplicativos atualizados e adicionar suporte aos novos recursos da plataforma. É sobre isso que se trata esta seção.

User Notifications

A classe UILocalNotification foi depreciada com o iOS 10. O que isso significa para você? Você ainda pode usar o UILocalNotification para agendar e gerenciar suas notificações locais, mas ele provavelmente irá desaparecer em algum momento. Mas por que a Apple decidiu depreciar o UILocalNotification? Ele funciona bem, certo?

No iOS 10, a Apple introduziu o framework User Notifications. Como o nome sugere, o framework é responsável pelo agendamento, gerenciamento e controle das notificações, local e remota. É isso o que esse grande framework faz. Seu aplicativo não mais precisa fazer uma distinção entre notificações locais e remotas. O framework User Notifications oferece uma API unificada para manipular notificações locais e remotas.

A API parece e se comporta muito bem. O framework trata as notificações locais e remotas da mesma forma, pela perspectiva do desenvolvedor, o que torna fácil e transparente a adição de ações. A manipulação das ações das notificações é centralizado em um protocolo delegate conciso.

Nós temos alguns tutoriais sobre o framework User Notifications bem aqui no Envato Tuts+!

Você também pode estar interessado em meu post recente em meu blog sobre a agendamento de notificações locais e ações de notificação com o framework User Notification.

SiriKit

Um dos grandes anuncios durante este ano na WWDC foi a possibilidade de integrar seu aplicativo com a Siri através do SiriKit. Mesmo que as opções sejam limitadas por ora, se o seu aplicativo se encaixar em uma das categorias suportadas, é uma ótima maneira de destacar seu aplicativo além da concorrência. A siri atualmente suporta um número limitado de dominios, incluindo chamada VoIP, mensagem e exercícios.

Você faz a integração com o Siri adicionando uma extensão em seu aplicativo. Todo aplicativo integrado com o Siri precisa adicionar um intents extension. Isso permite que seu aplicativo execute uma tarefa em resposta à informação que Siri envia para seu aplicativo. Você pode optar por criar um intents UI extension para personalizar a aparência da interface que é apresentada ao usuário após a tarefa for concluída.

Haptic Feedback

A nova engine haptic do iPhone 7 e iPhone 7 Plus abriu aos desenvolvedores novas possibilidades. No iOS 10, é possível utilizar a engine haptic do dispositivo para proporcionar ao usuário um feedback táctil quando executam uma ação específica ou ocorre um evento particular.

Seu aplicativo pode controlar a engine haptic através da classe UIFeedbackGenerator e suas três subclasses:

  • UIImpactFeedbackGenerator
  • UINotificationFeedbackGenerator
  • UISelectionFeedbackGenerator

Cada subclasse UIFeedbackGenerator é designada para um cenário especifico. Se você adicionar suporte à engine haptic, certamente você surpreenderá os usuários do seu aplicativo. Experimente.

Core Data

O Core Data provavelmente é o meu framework Cocoa favorito e a Apple tem tornado ele mais impressionante no iOS 10 e com o lançamento do Swift 3. Esta é a maior atualização que o framework recebeu nos últimos anos.

O Swift 3 e o Xcode 8 juntaram forças para tornar o uso do Core Data mais fácil do que nunca. A Apple também introduziu a classe NSPersistentContainer, que torna a criação e o gerenciamento de uma pilha de Core Data muito simples.

A empresa até renovou os fundamentos do framework, repensando a interação do framework com o SQLite. O resultado é verdadeiramente fantastico. É ótimo ver que a Apple continua investindo no Core Data, mesmo dez anos após ter introduzido ele no macOS Tiger.

Para aprender mais sobre o Core Data, verifique alguns dos nosso outros cursos e tutoriais aqui no Envato Tuts+.

O que você deve fazer?

Caso você construa seu aplicativo usando o iOS 10, o que significa que você está no Xcode 8, então você precisa certificar-se de cobrir o App Transport Security e as diretrizes de privacidade que Apple tem posto em prática. Certifique-se de marcar as caixas primeiro.

Mesmo sendo opcionais, eu te encorajo a dar uma olhada nos outros aperfeiçoamentos e melhorias. Por exemplo, não espere muito para migrar para o Swift 3. Você pode surpreender seus usuário adicionando suporte à engine haptic. É opcional, mas é uma oportunidade para se destacar na lotada App Store.

Para aprender mais sobre o Swift 3 ou iOS 10, verifique alguns outros de nossos cursos e tutoriais.

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.