Quelle structure pour quelle App ?

Contexte

Ce cours est destiné à vous faire comprendre comment est structurée une application iOS. Avant de commencer à développer une application, ou même de choisir quelle architecture vous allez employer, il est important de comprendre comment est formé un projet Xcode, et surtout comment il est structuré.

Nous verrons également à quoi servent les fichiers Swift initialement disponibles sur votre xcodeproj.

Introduction

Lorsque vous lancez Xcode sur votre Mac, la première fenêtre qui s'affiche est celle présentée sur la figure.1 :

Figure 1 : accueil de Xcode 12

À ce moment précis, vous avez plusieurs possibilités :

  • Créer un nouveau projet ;

  • Cloner depuis un repository Git un projet existant ;

  • Ouvrir un projet localement depuis le disque interne de votre machine.

Dans notre cas, nous allons créer un nouveau projet et c'est une étape importante car il faut que vous sachiez exactement ce que vous allez proposer comme application, pour vous assurer que le template choisi sera le bon.

Quelle plateforme pour mon application ?

Maintenant que vous avez créé votre projet, vous allez devoir faire vos premiers choix pour créer votre app iOS.

Figure 2  : Xcode propose le template que vous souhaitez

utiliser pour développer

À ce moment précis, vous aurez de très nombreuses options. Ces options vont déterminer la structure de votre application iOS.

Le premier élément à déterminer est la plateforme de votre application :

Vous avez la possibilité de proposer une application multiplatform.

Cette possibilité offre à votre application une compatibilité avec :

  • iOS ;

  • macOS ;

  • iPadOS ;

  • watchOS ;

  • tvOS.

Mettre en place une application multi platform est intéressant dans le sens où vous êtes prêt à adapter absolument toute votre application sur chaque appareil Apple.

Vous aurez ensuite la possibilité d'adapter votre application pour la plateforme qui vous intéresse : iOS/iPadOS - mac OS - tvOS - watchOS.

Remarque

Il est bien évidemment possible, une fois qu'une application iOS est développée, d'ajouter la fonctionnalité watchOS ultérieurement.

Seulement, ce choix s'applique au moment où vous souhaitez déterminer votre code.

Quel template pour mon application ?

Revenons sur notre figure 2.

Nous avons sélectionné la plateforme iOS. Maintenant, nous avons deux possibilités qui s'offrent à nous :

Application

App

Xcode me propose la possibilité de sortir un template d'Application ; historiquement, lorsque nous voulions une simple application, le paramètre était : « Single View App ».

Depuis Xcode 11, Apple a passé cette fonction à « App ».

Cette fonction permet de créer un template d'application simple. Sans ajout particulier, les éléments fondamentaux sont simplement présents.

Document App

Sur certaines applications, il est parfois nécessaire de sélectionner des documents pour pouvoir les lire/modifier comme sur la figure 3.

Figure 3  : exemple d'un document App

Ces templates d'App utilisent le code nécessaire pour ouvrir un fichier en local, sur iCloud Drive, ou encore sur un Drive en ligne.

À la compilation, ce type d'app affiche un UIDocumentBrowserViewController qui vous permettra de naviguer et choisir un fichier de travail dès le lancement.

Game

Il sert effectivement à développer des jeux. Dans ce template, vous trouverez tous les éléments nécessaires à Metal, et à toutes les APIs + Frameworks nécessaires pour développer un jeu.

Augmented Reality App

Sans aucun suspens, ce template vous permet de créer une app utilisant l'API ARKit proposé par Apple.

De plus, dans le cas où vous avez un iPhone 12 Pro ou 12 Pro Max, le template intégrera l'utilisation des capteurs LiDAR.

Sticker Pack App

Ce template permet l'installation de stickers sur l'application Messages.app

Messages App

Ce dernier template, comme vous pouvez le comprendre sans trop de difficultés, permet de mettre en place une iMessage App grâce a l'API Messages d'Apple.

Vous n'êtes pas sans savoir que Xcode permet le développement d'applications mais également le développement d'API et/ou de Framework. Des templates seront également disponibles.

Dans notre cas, nous utiliserons le simple template d'une Application, et nous verrons ensemble comment elle se compose et à quoi elle va servir.