Architecture IOS 5 et cadres SDK

Précédent Table des matières Suivant
L’histoire d’iOS Rejoindre le programme de développement Apple iOS 5

Apprenez SwiftUI et faites passer votre développement iOS au niveau supérieur
SwiftUI Essentials – le livre Édition iOS 14 est maintenant disponible en éditions imprimées (39,99$) et eBook (29,99$). En savoir plus…

 Acheter Imprimer  Livre de prévisualisation

Lorsque nous développons des applications pour l’iPad, Apple ne nous permet pas d’accéder directement à ce matériel. En fait, toute interaction matérielle se fait exclusivement à travers un certain nombre de couches de logiciels différentes qui agissent comme intermédiaires entre le code de l’application et le matériel de l’appareil. Ces couches constituent ce qu’on appelle un système d’exploitation. Dans le cas de l’iPad, ce système d’exploitation est connu sous le nom d’iOS.

Afin de mieux comprendre l’environnement de développement de l’iPad, ce chapitre examinera en détail les différentes couches qui composent le système d’exploitation iOS 5 et les frameworks qui nous permettent, en tant que développeurs, d’écrire des applications iPad.

Contenu

iPhone OS devient iOS

Avant la sortie de l’iPad en 2010, le système d’exploitation fonctionnant sur l’iPhone était généralement appelé iPhone OS. Étant donné que le système d’exploitation utilisé pour l’iPad est essentiellement le même que celui de l’iPhone, il n’avait pas beaucoup de sens de le nommer iPad OS. Au lieu de cela, Apple a décidé d’adopter un nom plus générique et non spécifique à l’appareil pour le système d’exploitation. Étant donné la prédilection d’Apple pour les noms préfixés par la lettre ‘i’ (iTunes, iBookstore, iMac, etc.), le choix logique était bien sûr iOS. Malheureusement, iOS est également le nom utilisé par Cisco pour le système d’exploitation de ses routeurs (Apple, semble-t-il, a également une prédilection pour ignorer les marques). Lorsque vous effectuez une recherche sur Internet pour iOS, soyez donc prêt à voir un grand nombre de résultats pour l’iOS de Cisco qui n’ont absolument rien à voir avec l’iOS d’Apple.

Un aperçu de l’architecture iOS 5

Comme mentionné précédemment, iOS se compose d’un certain nombre de couches logicielles différentes, chacune fournissant des cadres de programmation pour le développement d’applications qui s’exécutent sur le matériel sous-jacent.

Ces couches de système d’exploitation peuvent être présentées schématiquement comme illustré à la figure 4-1:

 L'architecture d'iOS 5

Figure 4-1

Certains diagrammes conçus pour représenter graphiquement la pile logicielle iOS montrent une boîte supplémentaire positionnée au-dessus de la couche tactile Cocoa pour indiquer les applications en cours d’exécution sur l’appareil. Dans le diagramme ci-dessus, nous ne l’avons pas fait car cela suggérerait que la seule interface disponible pour l’application est Cocoa Touch. En pratique, une application peut appeler directement l’une des couches de la pile pour effectuer des tâches sur le périphérique physique.

Cela dit, chaque couche de système d’exploitation fournit un niveau d’abstraction croissant loin de la complexité du travail avec le matériel. En tant que développeur iOS, vous devez donc toujours rechercher des solutions à vos objectifs de programmation dans les frameworks situés dans les couches iOS de niveau supérieur avant de recourir à l’écriture de code qui atteint les couches de niveau inférieur. En général, plus le niveau de couche que vous programmez est élevé, moins vous aurez d’efforts et moins de lignes de code à écrire pour atteindre votre objectif. Et comme tout programmeur vétéran vous le dira, moins vous avez de code à écrire, moins vous avez l’occasion d’introduire des bogues.

Maintenant que nous avons identifié les différentes couches qui composent iOS 5, nous pouvons maintenant examiner plus en détail les services fournis par chaque couche et les frameworks correspondants qui mettent ces services à notre disposition en tant que développeurs d’applications.

La couche tactile Cocoa

La couche tactile Cocoa se trouve en haut de la pile iOS et contient les frameworks les plus couramment utilisés par les développeurs d’applications iPad. Cocoa Touch est principalement écrit en Objective-C, est basé sur l’API Mac OS X Cocoa standard (comme on le trouve sur les ordinateurs de bureau et portables Apple) et a été étendu et modifié pour répondre aux besoins du matériel iPad.

La couche tactile Cocoa fournit les frameworks suivants pour le développement d’applications iPad :

Cadre UIKit (UIKit.framework)

Le framework UIKit est une interface de programmation basée sur Objective-C vaste et riche en fonctionnalités. C’est, sans aucun doute, le cadre avec lequel vous passerez le plus clair de votre temps à travailler. Des livres entiers pourraient, et le seront probablement, être écrits sur le seul framework UIKit. Certaines des principales caractéristiques d’UIKit sont les suivantes:

  • Création et gestion de l’interface utilisateur (champs de texte, boutons, étiquettes, couleurs, polices, etc.)
  • Gestion du cycle de vie des applications
  • Gestion des événements d’applications (p.ex. interface utilisateur tactile)
  • Multitâche
  • Impression sans fil
  • Protection des données par cryptage
  • Fonctionnalité de coupe, de copie et de collage
  • Présentation et gestion du contenu Web et texte
  • Gestion des données
  • Intégration inter-applications
  • Notification Push en conjonction avec le Service de notification Push
  • Notifications locales (mécanisme permettant à une application exécutée en arrière-plan d’attirer l’attention de l’utilisateur)
  • Accessibilité
  • Accéléromètre, batterie, capteur de proximité, Interaction avec l’appareil photo et la photothèque
  • Reconnaissance des gestes à l’écran tactile
  • Partage de fichiers (possibilité de mettre à disposition des fichiers d’application stockés sur l’appareil via iTunes)
  • Connectivité peer-to-peer basée sur Blue tooth entre les appareils
  • Connexion à des écrans externes

Pour avoir une idée de la richesse de ce cadre, il vaut la peine de passer du temps à parcourir les écrans externes d’Apple Matériel de référence UIKit disponible en ligne à l’adresse suivante ::

http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIKit_Framework/index.html

Cadre de kit de carte (MapKit.framework)

Si vous avez passé un temps appréciable avec un iPad, il est probable que vous ayez eu besoin d’utiliser l’application Maps plus d’une fois, soit pour obtenir une carte d’une zone spécifique, soit pour générer des itinéraires pour vous rendre à votre destination prévue. Le framework Map Kit fournit une interface de programmation qui vous permet de créer des fonctionnalités basées sur des cartes dans vos propres applications. Cela vous permet, entre autres, d’afficher des cartes déroulantes pour n’importe quel emplacement, d’afficher la carte correspondant à la position géographique actuelle de l’appareil et d’annoter la carte de différentes manières.

Service de notification Push

Le service de notification Push permet aux applications d’informer les utilisateurs d’un événement même lorsque l’application n’est pas en cours d’exécution sur l’appareil. Depuis l’introduction de ce service, il a le plus souvent été utilisé par des applications basées sur les actualités. En règle générale, lorsqu’il y a des nouvelles de dernière minute, le service génère un message sur l’appareil avec le titre des nouvelles et offre à l’utilisateur la possibilité de charger l’application de nouvelles correspondante pour lire plus de détails. Cette alerte est généralement accompagnée d’une alerte audio et de vibrations de l’appareil. Cette fonctionnalité doit être utilisée avec parcimonie pour éviter d’ennuyer l’utilisateur avec des interruptions fréquentes.

Cadre d’interface utilisateur de message (MessageUI.framework)

Le framework Message UI fournit tout ce dont vous avez besoin pour permettre aux utilisateurs de composer et d’envoyer des messages électroniques depuis votre application. En fait, le cadre fournit même les éléments d’interface utilisateur par lesquels l’utilisateur entre les informations d’adressage électronique et le contenu du message. Alternativement, ces informations peuvent être prédéfinies dans votre application, puis affichées pour que l’utilisateur puisse les modifier et les approuver avant de les envoyer.

Cadre d’interface utilisateur du carnet d’adresses (AddressUI.framework)

Étant donné qu’une fonction clé de l’iPad est un appareil de communication et un assistant numérique, il ne devrait pas être trop surprenant qu’un framework entier soit dédié à l’intégration des données du carnet d’adresses dans vos propres applications. L’objectif principal du cadre est de vous permettre d’accéder, d’afficher, de modifier et de saisir les informations de contact du carnet d’adresses iPad à partir de votre propre application.

Cadre de kit de jeu (GameKit.framework)

Le framework de kit de jeu fournit une connectivité peer-to-peer et une communication vocale entre plusieurs appareils et utilisateurs permettant à ceux qui exécutent la même application d’interagir. Lorsque cette fonctionnalité a été introduite pour la première fois, Apple prévoyait qu’elle serait principalement utilisée dans des jeux multi-joueurs (d’où le choix du nom), mais les applications possibles de cette fonctionnalité vont clairement bien au-delà du développement de jeux.

Cadre iAd (iAd.framework)

L’objectif du framework iAd est de permettre aux développeurs d’inclure des bannières publicitaires dans leurs applications. Toutes les publicités sont diffusées par le propre service publicitaire d’Apple.

Cadre d’interface utilisateur du Kit d’événements

Le cadre d’interface utilisateur du Kit d’événements a été introduit dans iOS 4 et est fourni pour permettre l’accès et la modification des événements du calendrier à partir d’une application.

Cadre des comptes (Comptes.framework)

iOS 5 introduit le concept de comptes système. Ceux-ci permettent essentiellement de stocker les informations de compte d’autres services sur l’appareil iOS et d’y accéder à partir du code de l’application. Actuellement, les comptes système sont limités aux comptes Twitter, bien que d’autres services tels que Facebook apparaîtront probablement dans les futures versions d’iOS. L’objectif du Cadre des comptes est de fournir une API permettant aux applications d’accéder et de gérer ces comptes système.

Cadre Twitter (Twitter.framework)

Le framework Twitter permet d’ajouter l’intégration de Twitter aux applications. Le cadre fonctionne conjointement avec le Cadre des comptes pour accéder aux informations du compte Twitter de l’utilisateur.

La couche multimédia iOS

Le rôle de la couche multimédia est de fournir à iOS des capacités audio, vidéo, d’animation et graphiques. Comme pour les autres couches comprenant la pile iOS, la couche multimédia comprend un certain nombre d’infrastructures qui peuvent être utilisées lors du développement d’applications iPad. Dans cette section, nous examinerons chacun à son tour.

Cadre vidéo de base (CoreVideo.framework)

Le Framework Vidéo de base prend en charge la mise en mémoire tampon du framework multimédia de base. Bien que cela puisse être utilisé par les développeurs d’applications, il n’est généralement pas nécessaire d’utiliser ce framework.

Cadre de texte principal (CoreText.framework)

Le framework de texte de base iOS est une API basée sur C conçue pour faciliter la gestion des exigences avancées de mise en page du texte et de rendu des polices.

Cadre d’E/S d’image (ImageIO.framework)

Le framework d’E / S d’image, dont le but est de faciliter l’importation et l’exportation de données d’image et de métadonnées d’image, a été introduit dans iOS 4. Le framework prend en charge un large éventail de formats d’image, notamment PNG, JPEG, TIFF et GIF.

Infrastructure de bibliothèque d’actifs (Bibliothèque d’actifs.framework)

La bibliothèque d’actifs fournit un mécanisme de localisation et de récupération de fichiers vidéo et photo situés sur l’appareil iPad. En plus d’accéder aux images et aux vidéos existantes, ce cadre permet également d’enregistrer de nouvelles photos et vidéos dans l’album photo de l’appareil standard.

Cadre graphique principal (CoreGraphics.framework)

Le framework graphique iOS Core (également connu sous le nom d’API Quartz 2D) fournit un moteur de rendu bidimensionnel léger. Les fonctionnalités de ce framework incluent la création et la présentation de documents PDF, le dessin vectoriel, les calques transparents, le dessin basé sur le chemin, le rendu anti-aliased, la manipulation et la gestion des couleurs, le rendu d’image et les dégradés. Ceux qui connaissent l’API Quartz 2D fonctionnant sur macOS X seront heureux d’apprendre que l’implémentation de cette API est la même sur iOS.

Cadre d’image de base (CoreImage.framework)

Un nouveau framework introduit avec iOS 5 fournissant un ensemble de fonctionnalités de filtrage et de manipulation de vidéos et d’images pour les développeurs d’applications.

Cadre de noyau de quartz (QuartzCore.framework)

L’objectif du framework Quartz Core est de fournir des capacités d’animation sur l’iPad. Il fournit la base de la majorité des effets visuels et de l’animation utilisés par le framework UIKit et fournit une interface de programmation basée sur Objective-C pour la création d’animations spécialisées dans les applications iPad.

Cadre OpenGL ES (OpenGLES.cadre)

Depuis de nombreuses années, la norme de l’industrie pour le dessin graphique 2D et 3D haute performance est OpenGL. Développée à l’origine par la défunte Silicon Graphics, Inc (SGI) au cours des années 1990 sous la forme de GL, la version ouverte de cette technologie (OpenGL) est maintenant sous la responsabilité d’un consortium à but non lucratif comprenant un certain nombre de grandes entreprises, dont Apple, Inc., Intel, Motorola et ARM Holdings.

OpenGL pour systèmes embarqués (ES) est une version allégée de la spécification OpenGL complète conçue spécifiquement pour les appareils plus petits tels que l’iPad.

iOS 3 ou version ultérieure prend en charge OpenGL ES 1.1 et 2.0 sur certains modèles d’iPhone (tels que l’iPhone 3GS et l’iPhone 4). Les versions antérieures d’iOS et des modèles d’appareils plus anciens ne prennent en charge que la version 1.1 d’OpenGL ES.

Cadre GLKit (GLKit.framework)

Le framework GLKit est une API basée sur Objective-C conçue pour faciliter la tâche de création d’applications basées sur OpenGL ES.

Cadre NewsstandKit (NewsstandKit.framework)

L’application Kiosque est une nouvelle fonctionnalité d’iOS 5 et est conçue comme un emplacement central permettant aux utilisateurs d’accéder aux journaux et aux magazines. Le framework NewsstandKit permet le développement d’applications qui utilisent ce nouveau service.

Prise en charge audio iOS

iOS est capable de prendre en charge l’audio aux formats AAC, Apple Lossless (ALAC), A-law, IMA/ ADPCM, PCM linéaire, µ-law, DVI/Intel IMA ADPCM, Microsoft GSM 6.10 et AES3-2003 grâce au support fourni par les frameworks suivants.

Cadre de fondation AV (AVFoundation.framework)

Un framework basé sur Objective-C conçu pour permettre la lecture, l’enregistrement et la gestion de contenu audio.

Cadres audio principaux (CoreAudio.cadre, AudioToolbox.cadre et AudioUnit.framework)

Les frameworks qui composent Core Audio pour iOS définissent les types audio pris en charge, la lecture et l’enregistrement de fichiers et de flux audio et donnent également accès aux unités de traitement audio intégrées de l’appareil.

Bibliothèque audio ouverte (OpenAL)

OpenAL est une technologie multiplateforme utilisée pour fournir des effets audio 3D de haute qualité (également appelés audio positionnel). L’audio positionnel peut être utilisé dans une variété d’applications, mais il est généralement utilisé pour fournir des effets sonores dans les jeux.

Cadre de lecteur multimédia (MediaPlayer.cadre)

Le cadre du lecteur multimédia iOS est capable de lire des vidéos.mov, .mp4, .m4v, et.formats 3gp à une variété de normes de compression, de résolutions et de fréquences d’images.

Framework Midi de base (CoreMIDI.framework)

Introduit dans iOS 4, le framework MIDI Core fournit une API permettant aux applications d’interagir avec des périphériques compatibles MIDI tels que des synthétiseurs et des claviers via le connecteur dock de l’iPad.

La couche iOS Core Services

La couche iOS Core Services fournit une grande partie de la base sur laquelle les couches précédemment référencées sont construites et se compose des frameworks suivants.

Cadre de carnet d’adresses (Carnet d’adresses.cadre)

Le cadre du carnet d’adresses fournit un accès programmatique à la base de données de contacts du carnet d’adresses iPad permettant aux applications de récupérer et de modifier les entrées de contacts.

Cadre de réseau CFN (CFNetwork.framework)

Le framework CFNetwork fournit une interface basée sur C à la pile de protocoles réseau TCP/IP et un accès de bas niveau aux sockets BSD. Cela permet d’écrire du code d’application qui fonctionne avec des serveurs HTTP, FTP et de noms de domaine et d’établir des connexions sécurisées et cryptées à l’aide de Secure Sockets Layer (SSL) ou de Transport Layer Security (TLS).

Cadre de données de base (CoreData.framework)

Ce framework est fourni pour faciliter la création de modélisation et de stockage de données dans des applications basées sur Model-View-Controller (MVC). L’utilisation du cadre de données de base réduit considérablement la quantité de code à écrire pour effectuer des tâches courantes lorsque vous travaillez avec des données structurées au sein d’une application.

Cadre de base de la Fondation (CoreFoundation.framework)

Le framework Core Foundation est un framework basé sur C qui fournit des fonctionnalités de base telles que les types de données, la manipulation de chaînes, la gestion des données de blocs bruts, la manipulation d’URL, les threads et les boucles d’exécution, la date et les heures, la manipulation XML de base et la communication de port et de socket. Des fonctionnalités XML supplémentaires au-delà de celles incluses dans ce framework sont fournies via la bibliothèque libXML2. Bien qu’il s’agisse d’une interface basée sur C, la plupart des capacités du framework Core Foundation sont également disponibles avec des wrappers Objective-C via le framework Foundation.

Cadre multimédia de base (CoreMedia.framework)

Le framework Core Media est la base de niveau inférieur sur laquelle la couche de base AV est construite. Alors que la plupart des tâches audio et vidéo peuvent et doivent être effectuées à l’aide du framework AV Foundation de niveau supérieur, l’accès est également fourni dans les situations où un contrôle de niveau inférieur est requis par le développeur d’applications iOS.

Cadre de téléphonie de base (CoreTelephony.le cadre de téléphonie de base iOS est fourni pour permettre aux applications d’interroger le périphérique pour obtenir des informations sur le fournisseur de services de téléphonie cellulaire actuel et de recevoir une notification d’événements liés à la téléphonie.

Cadre EventKit (EventKit.framework)

Une API conçue pour fournir aux applications un accès au calendrier et aux alarmes sur l’appareil.

Cadre de fondation (Fondation.framework)

Le framework Foundation est le framework Objective-C standard qui sera familier à ceux qui ont programmé en Objective-C sur d’autres plates-formes (très probablement Mac OS X). Essentiellement, il s’agit de wrappers Objective-C autour d’une grande partie du cadre de base de base basé sur C.

Cadre d’emplacement principal (CoreLocation.framework)

Le framework de localisation de base vous permet d’obtenir la position géographique actuelle de l’appareil (latitude, longitude et altitude) et les lectures de la boussole à partir de vos propres applications. La méthode utilisée par l’appareil pour fournir les coordonnées dépendra des données disponibles au moment où les informations sont demandées et du support matériel fourni par le modèle d’iPad particulier sur lequel l’application fonctionne (le GPS et la boussole ne sont disponibles que sur les modèles récents). Cela sera soit basé sur les lectures GPS, les données du réseau Wi-Fi ou la triangulation de la tour cellulaire (ou une combinaison des trois).

Cadre de services de base mobiles (MobileCoreServices.framework)

Le framework iOS Mobile Core Services fournit la base du mécanisme d’identificateurs de type uniforme (UTI) d’Apple, un système de spécification et d’identification des types de données. Une vaste gamme d’identifiants prédéfinis a été définie par Apple, y compris divers types de données tels que text, RTF, HTML, JavaScript, PowerPoint.fichiers ppt, images PhotoShop et fichiers MP3.

Cadre de kit de magasin (StoreKit.framework)

L’objectif du framework Store Kit est de faciliter les transactions commerciales entre votre application et l’App Store d’Apple. Avant la version 3.0 d’iOS, il n’était possible de facturer une application à un client qu’au moment où il l’a achetée sur l’App Store. iOS 3.0 a introduit le concept d' »achat intégré à l’application », dans lequel l’utilisateur peut avoir la possibilité d’effectuer des paiements supplémentaires depuis l’application. Cela peut, par exemple, impliquer la mise en œuvre d’un modèle d’abonnement pour une application, l’achat de fonctionnalités supplémentaires ou même l’achat d’une voiture plus rapide à conduire dans un jeu de course.

Bibliothèque SQLite

Permet de créer et de manipuler une base de données légère basée sur SQL à partir de votre application iPad.

Cadre de configuration du système (SystemConfiguration.le cadre de configuration système permet aux applications d’accéder aux paramètres de configuration réseau du périphérique pour établir des informations sur  » l’accessibilité  » du périphérique (par exemple, si la connectivité Wi-Fi ou cellulaire est active et si et comment le trafic peut être acheminé vers un serveur).

Cadre d’aperçu rapide (QuickLook.framework)

Le framework Quick Look fournit un mécanisme utile pour afficher des aperçus du contenu des types de fichiers chargés sur l’appareil (généralement via une connexion Internet ou réseau) pour lesquels l’application ne fournit pas déjà de support. Les types de formats de fichiers pris en charge par ce framework incluent iWork, document Microsoft Office, Format de texte enrichi, Adobe PDF, Fichiers Image, public.fichiers texte et séparés par des virgules (CSV).

La couche iOS Core OS

La couche Core OS occupe la position inférieure de la pile iOS et, en tant que telle, se trouve directement sur le matériel de l’appareil. La couche fournit une variété de services, y compris la mise en réseau de bas niveau, l’accès à des accessoires externes et les services fondamentaux habituels du système d’exploitation tels que la gestion de la mémoire, la gestion du système de fichiers et les threads.

Cadre d’accélération (Accélérer.framework)

Le framework Accelerate fournit une API basée sur C optimisée par le matériel pour effectuer des calculs et des tâches complexes de calcul des nombres, de traitement vectoriel, de traitement numérique du signal (DSP) et de traitement d’image.

Cadre d’accessoires externes (Accessoire externe.framework)

Offre la possibilité d’interroger et de communiquer avec des accessoires externes connectés physiquement à l’iPad via le connecteur dock à 30 broches ou sans fil via Bluetooth.

Cadre de sécurité (Sécurité.framework)

Le framework de sécurité iOS fournit toutes les interfaces de sécurité que vous vous attendez à trouver sur un appareil pouvant se connecter à des réseaux externes, y compris les certificats, les clés publiques et privées, les stratégies de confiance, les porte-clés, le cryptage, les résumés et le Code d’authentification de message basé sur le hachage (HMAC).

System (LibSystem)

Comme nous l’avons mentionné précédemment, iOS est construit sur une base de type UNIX. Le composant Système de la couche OS de base fournit à peu près les mêmes fonctionnalités que tout autre système d’exploitation de type UNIX. Cette couche comprend le noyau du système d’exploitation (basé sur le noyau Mach développé par l’Université Carnegie Mellon) et les pilotes de périphériques. Le noyau est la base sur laquelle toute la plate-forme iOS est construite et fournit l’interface de bas niveau au matériel sous-jacent. Entre autres choses, le noyau est responsable de l’allocation de mémoire, de la gestion du cycle de vie des processus, des entrées/sorties, de la communication inter-processus, de la gestion des threads, de la mise en réseau de bas niveau, de l’accès au système de fichiers et de la gestion des threads.

En tant que développeur d’applications, votre accès aux interfaces système est limité pour des raisons de sécurité et de stabilité. Les interfaces qui sont à votre disposition sont contenues dans une bibliothèque basée sur C appelée LibSystem. Comme pour toutes les autres couches de la pile iOS, ces interfaces ne doivent être utilisées que lorsque vous êtes absolument certain qu’il n’y a aucun moyen d’atteindre le même objectif en utilisant un framework situé dans une couche iOS supérieure.

Apprenez SwiftUI et faites passer votre développement iOS au niveau supérieur
SwiftUI Essentials – le livre Édition iOS 14 est maintenant disponible en éditions imprimées (39,99$) et eBook (29,99$). En savoir plus…

 Acheter Imprimer  Livre de prévisualisation

Précédent Table des matières Suivant
L’histoire d’iOS Rejoindre le programme de développement Apple iOS 5

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.