5 Mudanças para atualizar seu projeto XCode para o iOS10
Autor: Felipe FMMobile | Publicado: 2016-10-09T13:06:00-03:00


<!--?xml version="1.0" encoding="UTF-8" standalone="no"?-->









A cada lançamento de um novo iOS é normal a necessidade de atualizar o nosso código (Objective-C ou Swift) de nossos projetos para compatibilizar com a nova versão. Métodos ou classes depreciadas ou novas instruções são comuns. E tem sempre alguma UIView ou Autolayout que quebra e não funciona mais.








Infelizmente, nem todos os detalhes são encontrados facilmente ou centralizados em um tópico apenas na WWDC 2016 ou em algum guia da Apple.






Resolvi escrever uma lista de coisas que tive que lidar para atualizar em nossos projetos para que tudo funcione no iOS10. Vamos lá :






Aviso de privacidade para acesso a câmera.



Uma das coisas irritantes é que quando você vai tentar acessar a câmera pela primeira vez ele apresenta um alerta para o usuário para permitir ou não o acesso, e nesse momento, como seu código legado não tem o aviso, ele quebra. É necessário agora colocar como parâmetro em sua Info.plista frase deaviso do porque você estará utilizando o acesso.

A chave é :Privacy - Photo Library Usage Description &amp; Privacy - Camera Usage Description




Aviso de privacidade para acesso ao calendário.



Outro que vai precisar de atenção nesse ponto é o calendário do app, agora também é necessária a frase de aviso.

A chave é :Privacy - Calendars Usage Description






Ativar a capacidade de Push Notifications no Xcode para registrar o device token &amp; Atualizar o framework UserNotifications para lidar com as ações do usuário.








Esse ajuste quase passou batido. Mesmo assistindo as duas sessões sobre notificações da WWDC nem vi menção alguma dessa “obrigatoriedade”. Agora no iOS 10, ele se você não ativar a capacidade de Push Notificationno seu projeto, ele não vai gerar o device token. Além disso, ele cria uma chave no seu arquivo entitlements.














Mais sobre você encontra nesse documento da Apple : https://developer.apple.com/library/content/documentation/Miscellaneous/Reference/EntitlementKeyReference/Chapters/EnablingLocalAndPushNotifications.html



Para lidar com as ações de clique do usuário na notificação, tanto em background como em foreground, você deverá utilizar o novo framework UserNotifications que integra-se com as ações básicas e novas formas de interações com as notificações que temos no iOS10.&nbsp;

Para isso, deverá alterar a forma que seu código registra essas notificações e trata as ações dela. Vou deixar um link para uma thread do StackOverflow que resume a implementação &nbsp;e sugiro também assistir a WWDC 2016 com o tema Introducing to Notifications





Agora Views sem constraints se comportam como o definido no AutoResizingMask.







Pretendo escrever um artigo apenas sobre essa mudança, mas de cara, toda view que é adicionada de forma dinâmica, ou seja, através do método addSubviewdeve ser revista para que sua proporção e comportamento não seja inesperado no iOS 10 e em diferente tamanhos de telas de devices.Você pode conferir na secão What's New in Autolayout WWDC 2016.












Xcode agora irá assinar e gerar os profiles automaticamente no seu projeto.





Uma mudança para melhor no Xcode é o fato de ele cuidar sozinho da assinatura de provisioning profile do seu projeto. Isso é muito bacana, mas ao mesmo tempo, se seu projeto legado já tinha todos os parâmetros de provisioning profileajustados, você deve conferir se as configurações foram mantidas adequadamente. No meu caso, foi melhor mudar para a forma automática e deixar ele se econtrar sozinho. Além disso, na Build Settings temos duas chaves para definir os Provisioning's, um depreciado e outro atual, ficou meio bagunçado a meu ver. Você pode conferir na secão What's New in Code Signing WWDC 2016.
















Pode haver muitas outras coisas dependendo do framework que estiver utilizando, mas até o momento essas foram as principais que encontrei ao mudar meu projeto legado para o iOS 10.&nbsp;