Na arquitetura do iOS, as camadas superiores são responsáveis por oferecer tecnologias e serviços sofisticados.
Nas camadas superiores estão os frameworks que implementam uma abstração orientada a objetos para as camadas inferiores, isto é, são oferecidos mecanismos orientados a objetos para acessarem as camadas inferiores.
Podemos dizer que essa abstração permite encapsular características complexas, tal como o uso de threads no processamento, que habitualmente é uma codificação complexa.
Essas interfaces são chamadas de camadas e são a base da arquitetura do iOS, oferecendo um conjunto de frameworks que podem ser utilizados para melhorar o desenvolvimento de aplicativos; tais camadas são:
- Cocoa Touch: nesta camada residem os frameworks, ferramentas e tecnologias para o desenvolvimento de aplicativo;
- Media;
- Core Services;
- Core OS.
Camada Cocoa Touch
A camada Cocoa Touch é a mais externa da arquitetura, estando presentes:
- Os principais frameworks;
- As ferramentas;
- A tecnologia;
- As chamadas de sistema para o desenvolvimento de aplicativos.
Podemos concluir que é nesta camada que os aplicativos interagem com o iOS.
A camada Cocoa determina a infraestrutura para as tecnologias essenciais, aos serviços de notificação da Apple, serviços multitarefas e outros diversos e de alto nível, voltados ao desenvolvimento de aplicativo. Nesta camada é onde os aplicativos desenvolvidos interagem com o sistema iOS.
Camada Media
Após a camada Cocoa Touch temos a de Media. Habitualmente, é comum um aplicativo utilizar sons, imagens e vídeos, de modo que a camada de Media visa disponibilizar recursos, tecnologias e frameworks voltados para elementos gráficos, tais como sons e vídeos. Assim, os frameworks disponibilizados nessa camada tornam mais fácil o desenvolvimento de aplicativo multimídia.
Acessando os frameworks de nível superior, os desenvolvedores de aplicativo podem utilizar tecnologias que tornam mais fácil a criação de elementos gráficos e animados. Todavia, acessando os frameworks das camadas inferiores, os desenvolvedores podem contar com tecnologias que os ajudarão a criar aplicativos mais robustos, seguros e completos na questão de recursos (MENDONÇA; NETO, 2021).
Especificaremos as ferramentas que estão nesta camada e que podem ser úteis para os desenvolvedores de aplicativo.
Tecnologias de Gráficos
Nesta camada, os desenvolvedores podem utilizar uma série de frameworks empregáveis no desenvolvimento de aplicações multimídia. Assim, esta camada visa disponibilizar aos desenvolvedores recursos específicos de áudio, vídeo e gráfico.
Podemos observar que esta camada foi projetada para tornar mais prático e eficiente o desenvolvimento de aplicativo multimídia com o uso do framework UIKit – User Interface Kit. Este framework possui uma gama de tecnologia de gráfico e animação. Se a sua ideia é desenvolver um aplicativo com recursos de animações simples, você conseguirá desenvolvê-lo facilmente utilizando esse framework, no qual os desenvolvedores podem encontrar as seguintes tecnologias:
- Core Graphics: permite renderizar vetores com base em imagens bidimensionais (2D);
- Core Animation: é capaz de fornecer animação visual e entre os conteúdos;
- OpenGL: tecnologia que fornece suporte para renderização 2D e tridimensional (3D);
- Texto Core: visa fornecer layouts de textos sofisticados;
- bImagem I/O: fornece interfaces de leitura e escrita para a maior gama de formatos de imagem;
- Framework Assets Library: aqui o desenvolvedor encontrará acesso à biblioteca de fotos e vídeos do usuário – por exemplo, permite inserir uma foto na galeria de fotos dos usuários.
Tecnologias de Áudio
Esta camada fornece recursos para a gravação de áudio e vídeo. Sabe aqueles áudios que você envia e recebe pelo aplicativo de mensagens, semelhantes ao WhatsApp?, é esta camada que disponibiliza recursos para tal
A seguir veremos alguns frameworks disponíveis para a reprodução e gravação de áudio – começaremos com os frameworks mais simples de se usar e seguiremos para os mais difíceis de se usar.
Os frameworks para se trabalhar com áudios são os seguintes:
- Media Player: permite fácil acesso à biblioteca iTunes do usuário para reproduzir faixas e playlists;
- AV Foundation: fornece um conjunto de interfaces escritas em Objective-C para a gravação e reprodução de áudio;
- Core Audio: oferece uma interface simples e sofisticada para o desenvolvedor, podendo-se utilizar os recursos disponibilizados para provocar vibrações, reproduzir e gravar áudios locais, ou criar um streaming de áudio.
Tecnologias de Vídeo
A camada de Media também oferece frameworks para gravar e reproduzir vídeos. Assim, se o dispositivo mobile tiver um hardware apropriado para vídeos, o desenvolvedor poderá facilmente agregar funções de gravar e reproduzir vídeos em seus aplicativos. Vejamos os frameworks para a reprodução e gravação de vídeo – dos mais fáceis de se manusear para os mais difíceis – mais baixos níveis:
- Comecemos pela classe UI ImagePickerController, presente no framework UIKit e que fornece uma interface padrão para a gravação de vídeo em dispositivos com câmera;
- Já o framework Media Player disponibiliza um conjunto de interfaces que podem ser utilizadas pelos desenvolvedores para apresentar filmes em seus aplicativos;
- Entretanto, o framework AV Foundation disponibiliza uma gama de interfaces em Objective–C para a captura e reprodução de vídeos;
- 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 das mídias. Podemos dizer que o Core Media é responsável por fazer o gerenciamento das mídias, tanto áudio quanto vídeo, além de fornecer interfaces para a manipulação das mídias.
Camada Core Services
Nesta camada são encontrados serviços essenciais do iOS que todos os aplicativos utilizam, destacando-se os frameworks Core Foundation, Foundation, Grand Central, Dispatch, In-App Purchase, SQLite e XML Support.
Vejamos um pouco mais sobre as tecnologias encontradas nesta camada, começando pelo Grand Central Dispatch, tecnologia que permite aos desenvolvedores gerenciarem a execução de tarefas em seus aplicativos
Podemos dizer que essa tecnologia combina modelos de programação assíncrona com um núcleo altamente otimizado para oferecer uma alternativa mais eficiente a threading.
Sobre In-App Dispatch, permite que os desenvolvedores utilizem serviços para vender os seus conteúdos e serviços dentro de aplicações. É implementado usando o Kit Store, que fornece a infraestrutura necessária para processar as transações financeiras usando a conta do iTunes do usuário.
Camada Core OS
Chegamos à última camada da arquitetura iOS, em que encontramos elementos de baixo nível e que são utilizados para a implementação de serviços das camadas superiores. Pode-se dizer que essa camada visa disponibilizar frameworks para que o desenvolvedor lide com aspectos de segurança ou comunicação com os acessórios de hardware externo.
Entre os frameworks disponibilizados nesta camada, encontra-se o Accelerate, contendo interfaces para realizações de cálculos matemáticos
Outro framework que não podemos deixar de mencionar é o External Acessory, o qual disponibiliza interfaces de comunicação com acessórios de hardware conectados a um dispositivo iOS.