Mobile

19 out, 2015

Um papo sobre iOS 9 e Xcode 7

Publicidade

Aqui na Concrete, toda sexta-feira batemos um papo sobre as melhores práticas, novidades e assuntos gerais relacionados a mobile. Em uma semana falamos sobre iOS, na outra sobre Android. Recentemente, o assunto foi o iOS 9 e o Xcode 7, que foram lançados essa semana, e os problemas que o pessoal daqui encontrou nas versões beta das atualizações. Em geral, os problemas relatados foram referentes a códigos terceiros. Antigas versões de SDKs ainda não possuem compatibilidade com iOS 9, então é necessária a atualização.

A partir da versão 3.12, O Google Analytics (GoogleAnalytics-iOS-SDK) não apresentou problemas para iOS 9, entretanto essa versão consta como deprecated. Na versão mais atual (3.13), o Google Analytics e o Google Tag Manager foram separados, então precisamos fazer a instalação de ambos para o uso do GTM.

O NewRelic, por sua vez, lançou uma versão que deve ser ponto de atenção. Como a volta ao Xcode 6 teve alguns erros, eles lançaram uma nova versão que é compatível, mas só roda em Xcode 7 e não está disponível via Cocoapod. Vamos aguardar novas informações.

https://discuss.newrelic.com/t/build-failure-in-ios-9/25963/36

Outro assunto abordado nessa talk foi o App Transport Security (ATS), que a Apple já havia anunciado a adoção para reforçar as boas práticas em conexões seguras entre o app e o backend. Por padrão, os apps desenvolvidos para iOS 9 ou OSX v10.11 deverão usar exclusivamente HTTPS e, além disso, o protocolo TLS dos servidores devem ser atualizados para a versão 1.2. A Apple ainda sugere que todos os aplicativos adotem essa prática o quanto antes.

Caso seu aplicativo necessite utilizar request HTTP, é preciso fazer uma configuração no Info.plist, onde os domínios exceções serão listados. A sintaxe para isso será algo como:

<key>NSAppTransportSecurity</key>
<dict>
 <key>NSExceptionDomains</key>
 <dict>
   <key>yourserver.com</key>
   <dict>
     <!--Include to allow subdomains-->
     <key>NSIncludesSubdomains</key>
     <true/>
     <!--Include to allow insecure HTTP requests-->
     <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
     <true/>
     <!--Include to specify minimum TLS version-->
     <key>NSTemporaryExceptionMinimumTLSVersion</key>
     <string>TLSv1.1</string>
   </dict>
 </dict>
</dict>

Caso sua aplicação precise de acesso inseguro há também a conexão arbitrária a hosts, mas não é aconselhável.

<key>NSAppTransportSecurity</key>
<dict>
   <!--Connect to anything (this is probably BAD)-->
   <key>NSAllowsArbitraryLoads</key>
   <true/>
</dict>

É importante ressaltar que os links de terceiros que não atendem às novas especificações também devem ser adicionados à exceção. Se você quiser saber mais, pode dar uma olhada nessa Library, neste post do Steven Peterson sobre o ATS ou neste texto do Tim Ekl.

Também vale lembrar as configurações do SDK do Facebook, que já correu para se adequar às novidades na versão 4.6.0 (beta). Novamente, você precisará configurar uma Whitelist para os domínios e para seus apps no info.plsit. Tem mais informações neste site aqui. E abaixo seguem alguns Pods com as versões atualizadas dos SDKs do Facebook:

Por fim, vale ressaltar as novas features. O destaque vai para as Search APIs, que implementamos em nossos projetos e se mostraram muito poderosas. O Google App Index e o Facebook DeepLink também prometem ajudar bastante na interoperabilidade do novo iOS, além de atuar na criação de campanhas que dão mais visibilidade aos apps. Ainda sobre deep linking, vale ler esse artigo aqui, no Medium do Nirav Savjani.

Para terminar, também foram citadas features como Storyboard References, UIStack View, Xcode Code Coverage Tools, Split Screen Multitasking e UI Testing. Neste link também tem um checklist completo, feito pelo Denys Zhadanov, para seu app se adequar ao iOS 9.

E foi isso! Ficou alguma dúvida ou tem alguma coisa a acrescentar que não abordamos aqui? Fique à vontade nos campos abaixo. Até a próxima!