Arquitetura
A arquitetura do iOS é formada por quatro camadas, sendo que cada uma delas oferece um conjunto de frameworks que podem ser utilizados durante o desenvolvimento de aplicativos para os dispositivos moveis da Apple Inc. A arquitetura do iOS é semelhante a arquitetura básica encontrada no Mac OS. No nível mais alto, o iOS atua como intermediário entre o hardware subjacente e os aplicativos que aparecem na tela, como mostrado na Figura 1:
A arquitetura do iOS é formada pelas camadas: Cocoa Touch, Media, Core Services e Core OS, como mostrado na Figura 2:
Nas camadas superiores estão as tecnologias e serviços mais sofisticados. O desenvolvedor deve olhar primeiro, sempre que possível, os serviços das camadas superiores, pois nestas camadas estão os frameworks que fornecem abstração orientada a objetos das camadas de níveis inferiores. Estas abstrações geralmente facilitam o processo de escrita de código, pois reduzem a quantidade de código que o desenvolvedor tem que escrever, e encapsula características complexas, tais como threads. Nas camadas inferiores do sistema estão os serviços fundamentais e as tecnologias dos quais todos os aplicativos dependem. Embora as tecnologias de níveis superiores resumam as tecnologias de níveis inferiores, os desenvolvedores ainda podem usar essas últimas que não estão presentes nas camadas superiores.
Camada Cocoa Touch
Os principais frameworks para a construção de aplicações são encontrados na camada Cocoa Touch. Esta camada define a infra-estrutura para as tecnologias fundamentais, tais como multitarefa, serviço de notificação Apple Push e diversos serviços de alto nível do sistema.
Ao projetar um aplicativo, os desenvolvedores devem investigar as tecnologias presentes nesta primeira camada para ver se elas atendem as suas necessidades. Nessa camada as principais tecnologias disponíveis são: multitarefa, proteção de dados e serviço de notificação Apple Push.
Quando o usuário pressiona o botão Home do iPhone, por exemplo, o aplicativo não termina, em vez disso, ele muda para um contexto de execução em segundo plano. Essa característica da multitarefa é muito importante para preservar a vida da bateria, a maioria dos aplicativos ficam suspensos pelo sistema quando entram em segundo plano.
A aplicação suspensa permanece na memória, mas nenhum código é executado. Esse comportamento permite que um aplicativo retome rapidamente quando ele é reiniciado, sem consumo de bateria no mesmo período.
A proteção de dados permite que os aplicativos que trabalham com dados confidenciais do usuário aproveitem o sistema de criptografia disponível em alguns dispositivos.
Quando um aplicativo designa um arquivo específico como sendo protegido, o sistema armazena o arquivo no disco em um formato criptografado. Enquanto o dispositivo estiver bloqueado, o conteúdo do arquivo é inacessível para o aplicativo e todos os intrusos em potencial. No entanto, quando o aparelho é desbloqueado pelo usuário, uma chave de decodificação é criada para permitir que o aplicativo acesse esse arquivo. O serviço de notificação Apple Push fornece uma maneira de alertar os usuários de novas informações, mesmo quando o aplicativo não está ativo. Através deste serviço, o desenvolvedor pode adicionar notificações de texto, adicionar um emblema no ícone do aplicativo, ou acionar alertas sonoros nos dispositivos do usuário. Essas mensagens fazem com que os usuários saibam que eles deveriam abrir o aplicativo para receber novas informações.
Camada Media
A camada Media contem as tecnologias de gráfico, áudio e vídeo. As tecnologias nessa camada foram projetadas para tornar mais fácil a implementação de aplicativos multimídia.
Os frameworks de nível superior oferecem tecnologias que tornam mais fácil a criação de gráficos e animações, enquanto os frameworks de nível inferior permitem o acesso às ferramentas fundamentais que o desenvolvedor pode utilizar para criar aplicativos mais robustos e complexos.
Tecnologias de Gráficos
Nesta camada o desenvolvedor pode utilizar o framework UIKit (User Interface Kit) que oferece varias tecnologias de gráficos e animações. Se o aplicativo exigir uma animação simples, o sistema pode fazer isso com facilidade, se houver situações onde o desenvolvedor precise ir além dos gráficos simples, ele pode usar as seguintes tecnologias:
• Core Graphics lida com renderização de vetores com base em imagens 2D.
• Core Animation fornece suporte avançado para animar visualizações e outros conteúdos.
• OpenGL ES oferece suporte para renderização 2D e 3D acelerados por hardware usando interfaces.
• Text Core fornece um leiaute de texto sofisticado e motor de renderização.
• Image I/O fornece interfaces de leitura e escrita para maioria dos formatos de imagem.
• O framework Assets Library fornece acesso a fotos e vídeos na biblioteca de imagens e vídeos do usuário.
Tecnologias de Áudio
As tecnologias de áudio disponíveis na camada Media fornecem uma capacidade de reproduzir e gravar áudio de alta qualidade, além de dispor de recursos de vibração em determinados dispositivos.
O sistema oferece varias maneiras para reproduzir e gravar conteúdo de áudio. Os frameworks na lista a seguir estão ordenados do alto nível para o baixo nível. Ao escolher uma tecnologia de áudio, o desenvolvedor tem que ter em mente que os frameworks de níveis superiores são mais fáceis de usar e são geralmente preferidos. Os frameworks de níveis inferiores ofereçam mais flexibilidade e controle, mas exigem mais trabalho da parte do desenvolvedor.
• O framework Media Player fornece acesso fácil à biblioteca do iTunes do usuário e suporte para a reprodução de faixas e playlists.
• O framework AV Foundation fornece um conjunto de interfaces escritas em Objective-C para o gerenciamento de reprodução e gravação de áudio.
• Os frameworks Core Audio oferecem interfaces simples e sofisticadas para reproduzir e gravar conteúdo de áudio. O desenvolvedor pode usar essas interfaces para reproduzir sons de alerta do sistema, provocar vibrações no dispositivo e reproduzir conteúdo local ou streaming de áudio.
Tecnologias de Vídeo
Além das tecnologias de áudio, a camada Media oferece tecnologias para reproduzir e gravar conteúdo baseado em vídeo. Em dispositivos com o hardware de vídeo apropriado, o desenvolvedor pode usar essas tecnologias para capturar e incorporar vídeos em sua aplicação. Os frameworks na lista a seguir estão ordenados do alto nível para o baixo nível.
• A classe UI ImagePickerController presente no framework UIKit fornece uma interface padrão para gravação de vídeo em dispositivos com câmera.
• O framework Media Player fornece um conjunto de interfaces que podem ser usadas para apresentar filmes completos ou parciais no seu aplicativo.
• O framework AV Foundation fornece um conjunto de interfaces em Objective-C para o gerenciamento de captura e reprodução de filmes.
• Core Media descreve os tipos de dados de baixo nível usados pelos frameworks de níveis superiores e oferece interfaces de baixo nível para a manipulação de mídias.
As tecnologias de vídeos no iOS suportam a reprodução de arquivos de filme com as extensões de arquivo mov, mp4, m4v e .3gp.
Camada Core Services
A camada Core Services contem os serviços fundamentais do sistema que todos os aplicativos utilizam. Mesmo se o desenvolvedor não usar esses serviços diretamente, muitas partes do sistema são construídas em cima deles. As principais tecnologias disponíveis na camada Core Services são: grand central dispatch, in-app purchase, SQLite e XML support. Grand central dispatch é uma tecnologia que o desenvolvedor pode utilizar para gerenciar a execução de tarefas em seu aplicativo. Essa tecnologia combina um modelo de programação assíncrona, com um núcleo altamente otimizado para oferecer uma alternativa mais eficiente para threading. O Grand central dispatch também fornece alternativas para muitos tipos de tarefas de baixo nível, como ler e escrever em arquivos, implementação de temporizadores e monitoramento de sinais e eventos do processo. In-app purchase é uma tecnologia que os desenvolvedores podem utilizar para vender seus conteúdos e serviços dentro de suas aplicações. Este recurso é implementado usando a estrutura Kit Store, que fornece a infra-estrutura necessária para processar as transações financeiras usando a conta do iTunes do usuário. A biblioteca SQLite permite incorporar um banco de dados SQL leve em sua aplicação, sem ter que executar um processo de servidor de banco de dados remoto. O desenvolvedor pode criar arquivos de banco de dados local e gerenciar as tabelas e registros nesses arquivos a partir do seu aplicativo. Essa biblioteca é otimizada para fornecer acesso rápido aos registros do banco de dados. A classe NSXMPLParser pode ser usada para recuperar elementos de um documento XML.
A biblioteca libxml2 fornece suporte adicional para a manipulação de conteúdo XML, além de fornecer suporte adicional para a transformação do conteúdo XML para HTML.
Camada Core OS
A camada Core OS contem características de baixo nível que foram utilizadas na implementação de outras tecnologias. Em situações onde o desenvolvedor precisa lidar explicitamente com segurança ou comunicação com acessório de hardware externo, ele pode fazer isso utilizando os frameworks nessa camada.
O framework Accelerate é uma tecnologia presente na camada Core OS que contem interfaces para a realização de cálculos matemáticos. A vantagem de usar esse framework são as interfaces otimizadas para todas as configurações de hardware presentes em dispositivos baseados no iOS. Portanto, o desenvolvedor pode escrever seu código uma vez e ter certeza que ele sera executado de forma eficiente em todos os dispositivos.
O framework External Accessory é uma tecnologia presente na camada Core OS que fornece interfaces de comunicação com acessórios de hardware conectados a um dispositivo baseado no iOS. Os acessórios podem ser conectados através de um conector dock de 30 pinos, ou através do Bluetooth. Através das interfaces desse framework o desenvolvedor pode manipular o acessório diretamente usando os comandos que ele suporta.
No nível do sistema esta presente o ambiente kernel, drivers e interfaces de baixo nível do sistema operacional UNIX. A biblioteca kernel é responsável por todos os aspectos do sistema operacional. Ela gerencia o sistema de memória virtual, threads, sistema de arquivos, rede e comunicação entre processos. Os drivers nesta camada também fornecem a interface entre o hardware disponível e os frameworks do sistema. O iOS fornece um conjunto de interfaces para acessar muitas características de baixo nível do sistema operacional.
O aplicativo acessa esses recursos através da biblioteca Libsystem. As interfaces são baseadas em C e fornece suporte para o seguinte:
• Threading
• Networking
• Acesso ao sistema de arquivos
• Standard I / O
• Bonjour e serviços DNS
• Informação de Locale
• Alocação de memória
• Cálculos matemáticos
Padrões UI
Uma grande interface de usuário segue os princípios de design de interface humana que se baseiam na forma como as pessoas/usuários pensam e trabalham, e não sobre as capacidades do dispositivo. Uma interface de usuário que é desinteressante, complicada, ou ilógica pode até mesmo fazer uma grande aplicação parecer um enorme fardo de se usar. Mas uma interface, bela, intuitiva e atraente para o usuário aumenta a funcionalidade de um aplicativo e inspira um apego emocional positivo nos usuários.
Integridade Estética
Integridade estética não é uma medida de quão bela é uma aplicação. É uma medida de quão boa a aparência do aplicativo integra-se com a sua função. Por exemplo, um aplicativo que permite que uma tarefa produtiva geralmente mantenha elementos decorativos sutis e em segundo plano, dando prioridade à tarefa, por fornecer controles e comportamentos padrões. Tal aplicativo fornece aos usuários uma mensagem clara e unificada sobre o seu propósito e sua identidade. Se, por outro lado, o aplicativo permite que a tarefa produtiva dentro de uma interface que parece lunática ou frívola, as pessoas podem não saber como interpretar esses sinais contraditórios.
Seja portanto coerente com o propósito da sua aplicação, vou ser enfático em dizer que é necessário e de suma importância você entender seu público alvo (seus reais usuários, o nicho, e não o mundo) avaliar o que a aplicação se propõe a fazer, e então se limitar a essas premissas e não fazer algo do qual você e exclusivamente você acha bonito. Afinal design não serve só para ser bonito, muitas vezes ele tem que ser perfeito a ponto de ser invisível, se esse é o seu propósito, causando um conforto tão grande que mal se percebe o leiaute em si, e aproveita-se os recursos da aplicação se seu objetivo.
Da mesma forma, que um aplicativo que estimule uma tarefa envolvente, como um jogo por exemplo, os usuários esperam uma aparência agradável que promete diversão e estimule a descoberta. Embora as pessoas não esperam para realizar uma tarefa séria e produtiva em um jogo, elas ainda assim esperam que a aparência do jogo interaja com a experiência.
Coerência
A coerência na interface permite transferir seus conhecimentos e habilidades de uma aplicação para outra. Uma aplicação coerente não é uma cópia servil de outras aplicações. Pelo contrário, é uma aplicação que tira vantagens dos padrões e paradigmas das quais as pessoas sentem-se confortáveis.
Para determinar se um aplicativo segue o princípio de coerência, pense sobre essas questões:
A aplicação é compatível com as normas do iOS?
Ela usa controles, visualizações, e os ícones fornecidos pelo sistema corretamente?
Ela incorpora os atributos do dispositivo de uma maneira viável?
É uma aplicação coerente em si própria?
O texto usa terminologia e estilo uniformes?
Será que os mesmos ícones sempre significam a mesma coisa?
As pessoas podem prever o que vai acontecer quando elas executam a mesma ação em locais diferentes?
Os elementos personalizados de interface do usuário aparentam e comportam-se da mesma maneira em todo o aplicativo?
Dentro da razão, a aplicação é coerente com as suas versões anteriores?
Os termos e significados permaneceram os mesmos?
Os conceitos fundamentais estão essencialmente inalterados?
Manipulação Direta
Quando as pessoas manipulam diretamente os objetos na tela em vez de usar controles separados para manipulá-los, eles estão mais envolvidos com a tarefa e mais facilmente compreendem os resultados de suas ações. Os usuários iOS desfrutam de um elevado senso de manipulação direta, devido a interface Multi-Touch. O uso de gestos dá às pessoas uma maior afinidade e senso de controle sobre os objetos que elas veem na tela, porque elas são capazes de tocá-los sem o uso de um intermediário, como um mouse.
Por exemplo, em vez de tocar controles de zoom, as pessoas podem usar os gestos de “pinça” diretamente para expandir ou contrair o conteúdo de uma área. E em um jogo, os jogadores movem e interagem diretamente com os objetos na tela. Por exemplo, um jogo pode exibir uma fechadura de combinação que os usuários podem girar para abrir.
Em um aplicativo do iOS, as pessoas podem experimentar a manipulação direta, quando:
Girar ou mover o aparelho para afetar os objetos na tela
Usar gestos para manipular objetos na tela
Podem notar que suas ações têm resultados visíveis e imediatos.
Feedback
Feedback reconhece as ações das pessoas e assegura-lhes que o processo está ocorrendo. As pessoas esperam um feedback imediato quando operam um controle, e elas apreciam os status de atualizações durante longas operações.
As aplicações nativas do iOS respondem a cada ação do usuário com alguma mudança perceptível. Por exemplo, os itens da lista destacam-se brevemente quando as pessoas os tocam. Durante as operações que duram mais de alguns segundos, aparece um controle de progresso decorrente, e se for caso, o aplicativo exibe uma mensagem explicativa.
Uma sutil animação pode dar às pessoas um feedback significativo que ajuda a esclarecer os resultados de suas ações. Por exemplo, as listas podem animar a adição de uma nova linha para ajudar as pessoas a acompanhar a mudança visualmente.
O som também pode dar às pessoas um feedback útil, mas não deve ser o mecanismo primário ou único de feedback, porque as pessoas podem utilizar os seus dispositivos em locais onde eles não podem ouvir ou precisam desligar o som.
Controle do Usuário
As pessoas, não as aplicações, devem iniciar e controlar as ações. Embora um aplicativo pode sugerir o curso de uma ação ou advertir sobre conseqüências perigosas, geralmente é um erro que o aplicativo tome decisões, isso faz com que o usuário distancie-se do aplicativo. Os melhores aplicativos encontram o equilíbrio exato entre dar às pessoas os recursos necessários, e ajudá-las a evitar resultados perigosos.
Usuários sentem-se mais no controle de um aplicativo quando os comportamentos e os controles são conhecidos e previsíveis. E, quando as ações são simples e diretas, os usuários podem facilmente compreender e gravá-los.
As pessoas esperam uma oportunidade de cancelar uma operação antes desta começar, e elas esperam poder confirmar sua intenção de executar uma ação potencialmente destrutiva. Finalmente, as pessoas esperam ser capazes de interromper graciosamente uma operação que está em andamento.
Busque mais
♦ Android versus iOS: qual é o mais seguro?
♦ Esse infográfico mostra o que mudou desde o primeiro iOS até hoje
♦ Guideline iOS – Princípios da Interface Humana
♦ Infográfico: IOS vs Android?
♦ The history and evolution of iOS, from the original iPhone to iOS 9
Comentários