domingo, 28 de agosto de 2016

Como tornar seu aplicativo compatível com iPv6 no iOS


A partir de 01 de julho de 2016 a AppStore tornou como requisito obrigatório de aprovação a compatibilidade do seu aplicativo com redes iPv6 , protocolo que substituirá o IPv4 porque este já está chegando em seu limite máximo de combinações.


Para isso, a Apple disponibilizou um guia de como verificar e testar se seu aplicativo está compatível. Este guia explica um pouco dos motivos dessa mudança, as vantagens do novo protocolo iPv6 bem como como a internet irá mudando aos poucos para esse novo padrão. 

Em um resumo deste guia, basicamente, deve-se evitar colocar endereços de IP de forma direta nos seu código. Como exemplo , evite colocar https://127.0.0.1 e coloque a url completa https://www.meusite.com , desta forma os servidores já devem estar preparados para fazer a modificação necessária no roteamento desse endereço.

Além disso, para obter uma forma mais segura de validar isso, é possível aplicar um teste na sua aplicação utilizando o seu Mac através do compartilhamento da internet.

1 - Vá na aba de compartilhamento do seu Mac e clique na opção de compartilhamento “segurando a tecla Option" 



2 - Depois disso, crie um compartilhamento da internet usando o Wi-fi




3 - Após clicar nesta opção, você já pode liberar a tecla Option. Por causa dela a opção Habilitar IPv6 NAT64 irá aparecer!



Pronto! Agora é só proceder com os testes dos seus serviços, usando a sua conexão para servir seu aplicativo.

Este guia é uma ponto básico, você poderá aprofundar mais no assunto no link da documentação da Apple. 

terça-feira, 22 de setembro de 2015

iOS 9 Novas regras de segurança obrigam webservices somente em https (TLS)

21 de setembro de 2015 




Com a chegada do iOS9 a Apple tomou várias medidas para aprimorar a segurança em seu sistema operacional móvel, chamada de App Transport Security , essa feature força seu aplicativo a manter conexões seguras quando consumir webservices. Todas as conexões que utilizam as classes NSURLConnectionCFURL, or NSURLSession   
 são obrigadas a utilizar HTTPS (TLS) , e se não o fizer, o seu executável irá lançar uma exceção. 

Agora, para continuar utilizando sua conexão em http normal, você deverá lançar uma propriedade específica no seu arquivo Info.plist para que seu aplicativo não entre nesta validação de segurança, ou por domínio,ou para a app inteira. 

Ao compilar o projeto no novo XCode 7, seu projeto já deverá contar com isso. Caso seu aplicativo esteja na loja esse comportamento não irá comprometê-lo, a menos que você envie uma nova atualização que foi compilada pelo XCode 7. 

Para utilizar conexões seguras  sem problemas, você deverá verificar os certificados HTTPS do seu servidor. A Apple considera alguns padrões mínimos de segurança que seu certificado deve fornecer para atender essas exigências. Isto é muito sério, já tivemos graves problemas quando certificados que não possuem as cadeias completas não atendiam no iOS e simplesmente não efetuada a conexão.

Para validar o certificado do seu servidor HTTPS, acesse este site https://cryptoreport.websecurity.symantec.com/checker/views/certCheck.jsp e confira se o resultado do teste da sua url atende as exigências da documentação da Apple, que você encontrará aqui : https://developer.apple.com/library/prerelease/ios/technotes/App-Transport-Security-Technote/


Considere seriamente no ciclo de vida da sua aplicação que muito em breve a Apple pode tornar isso um padrão, sem caminho para remover essa validação,forçando seu webservice ser obrigatóriamente em HTTPS. 

quarta-feira, 9 de setembro de 2015

iOS : Como ajustar o Auto Layout de uma view dinamicamente para sobrepor um outro que foi escondido (hidden).




Aplicar o autolayout  costuma ser algo delicado, há diversas formas de criar as regras de restrições conforme os espaçamentos entre os objetos.  Uma das coisas que acontece com frequencia é a necessidade de atualizar a distancia de um objeto em relação a um outro, quando este não precisa aparecer por não ter um conteúdo. Veja por exemplo a célula abaixo : 





Estou aplicando as regras de auto layout na imagem no objeto UIImageView , note a definição de largura e altura. 

Essa minha célula, poderá ou não vir com esta imagem, ou seja, o objeto ora estará visível ou ora estará escondido (hidden). 

O resultado que espero no tempo de execução, é que a label se estique até o final, caso o conteúdo de nossa UIImageView esteja escondido, para isso, vamos usar uma classe que é uma categoria que auxilia a definir dinamicamente as regras de constrain do autolayout de qualquer view : https://github.com/damienromito/UIView-UpdateAutoLayoutConstraints

Agora , basta importar a categoria e usar o método para mudar a propriedade desejada do auto layout da view, que em nosso exemplo, é a constante de largura, quando o objeto não aparecer : 
          [imageView setConstraintConstant:0 forAttribute:NSLayoutAttributeWidth];

Com isso, toda vez que uma imagem não estiver disponível, o autolayout da nossa label vai estivcar até o limite da célula sobrepondo a área vazia deixada pela nossa UIImageView


O resultado acima simula o que acontecerá em tempo de execução. Uma observação importante, se o compilador mostrar diversos warning’s, é porque a regra da constante para o campo que você estará alterando, deve ser flexível, ou seja, permitir um valor entre 0 até o máximo definido, veja na imagem, que o <= mostra que nossa restrição pode estar de 0 até o máximo definido, que anteriormente foi de 64. 

Essa técnica é muito útil na hora de construir as views, reduzindo a necessidade de fazer células diferentes para layout diversos. 


quarta-feira, 26 de agosto de 2015

Canvas iOS : Faça elementos animados apenas configurando seu UIView via Interface Builder


Quando falamos em animações no desenvolvimento iOS, há uma diversidade de técnicas que foram evoluindo desde a versão inicial do iOS e posteriormente no iOS 6, iOS 7 iOS8 e agora mais recentemente no iOS9.  São transições diversas, e formas de criar animações cada vez mais complexas. 

Essa dica é de um componente que tem a proposta de fazer o animações de forma simples e prática, apenas configurando seu elemento de UI via Interface Builder.

Ela é muito útil quando você precisa de uma implementação rápida e simples de animações em sua UIVIew.

Clique no link do projeto : http://canvaspod.io/