Création d'une app iOS

Remonter à Guide des applications FireMonkey

Remonter à Développement d'applications mobiles iOS


Pour créer votre app iOS :

Fichier > Nouveau > Application mobile FireMonkey - Delphi
Fichier > Nouveau > Application mobile FireMonkey - C++Builder

Fiches iOS

En utilisant la fiche mobile FireMonkey, vous pouvez ajouter des fiches supplémentaires de la même façon que vous le faites avec les applications de bureau.

La fiche iOS a des propriétés spécifiques dépendantes du matériel. Par exemple, la fiche iOS a une forme différente de la fiche de bureau FireMonkey standard, comme suit :

  • Dans le cas d'une application FireMonkey iOS, la fiche a une forme verticale :
    • ClientHeight = 480 pixels
    • ClientWidth = 320 pixels
  • Pour une application de bureau FireMonkey, la fiche a une forme horizontale :
    • ClientHeight = 480 pixels
    • ClientWidth = 600 pixels

Libération de fiches dans les apps iOS

En général, il est préférable que les applications mobiles ne conservent pas simultanément plusieurs fiches en mémoire. Les périphériques mobiles ont une mémoire limitée, et les fiches sont des objets gourmands en mémoire.

La stratégie recommandée est d'afficher une fiche puis, lorsqu'elle n'est plus visible, de la libérer (en utilisant le gestionnaire d'événement OnClose et en définissant CloseEvent sur caFree, ou en appelant la méthode System.TObject.DisposeOf de la fiche).

L'utilisation d'un contrôle onglet avec plusieurs pages pour afficher plusieurs contrôles de type fiche peut être utile pour diminuer la consommation de mémoire.

Flux de travail FireMonkey iOS

Lors des différentes étapes du processus de développement FireMonkey iOS, vous devez travailler soit sur votre plate-forme de développement, soit sur le Mac. Après avoir accompli les étapes requises et compilé votre projet dans l'EDI de RAD Studio, l'exécution de votre projet transfère l'exécutable et les bibliothèques nécessaires sur le Mac.

Important : Démarrer ici

  • Avant de commencer votre premier projet iOS, vous devez exécuter plusieurs étapes importantes d'installation et de configuration à la fois sur Windows et le Mac. Par exemple, vous devez fournir un profil d'approvisionnement de développement pour tous les périphériques de développement iOS spécifiques que vous voulez utiliser pour le test de votre application sur le Mac.

Développez ensuite votre projet dans la séquence générale suivante :

Etapes dans RAD Studio :

  1. Commencez votre projet en utilisant l'un des experts FireMonkey iOS :
    Fichier > Nouveau > Autre > Projets Delphi > Application mobile FireMonkey
    Fichier > Nouveau > Autre > Projets C++Builder > Application mobile FireMonkey
  2. Sélectionnez l'un des modèles ou l'une des applications présentés, comme par exemple Onglets ou Application vide.
  3. La fiche iOS est affichée dans le Concepteur de fiches.
    Utilisez le Concepteur de fiches et l'éditeur de code dans RAD Studio pour ajouter des contrôles à la fiche, définir les valeurs des propriétés et des événements, et écrire le code sous-jacent.
Conseil : Commencez à créer votre app iOS en suivant le tutoriel Tutoriels mobiles : Développement d'applications mobiles (iOS et Android).

Etapes sur le Mac et sur le simulateur iOS ou un périphérique iOS attaché

  1. A des fins de prototypage, exécutez ou déboguez votre projet en utilisant la plate-forme cible Simulateur iOS.
    • Conseil : Exécutez votre application sur le simulateur iOS au moins une fois après la création du projet (et à chaque fois que vous effectuez des changements ou ajoutez de nouveaux fichiers au projet).
  2. Sélectionnez le périphérique qui doit exécuter votre app, tel que :
    • Le simulateur iOS intégré à des fins de débogage initial.
    • Un périphérique iOS physique, connecté au Mac.

Pour exécuter votre app iOS sur un périphérique iOS :

  • Votre périphérique iOS doit être connecté au Mac par un câble USB.
  • Vous devez ajouter un nouveau SDK à partir de la page Gestionnaire de SDK. Après avoir ajouté le nouveau SDK, la version du SDK iOS que vous avez sélectionnée est extraite du Mac sur votre système de développement.
  • Vous devez créer un profil d'approvisionnement de développement pour pouvoir tester votre application sur votre périphérique iOS de développement.
    Le profil d'approvisionnement associe votre identifiant développeur Apple aux :
    • Apps iOS spécifiques que vous voulez exécuter (identifiées par l'identifiant d'app)
    • Périphériques iOS spécifiques sur lesquels vous voulez exécuter les apps (identifiés par l'UDID ou l'ID de périphérique)
      Vous pouvez trouver l'UDID de 40 caractères par le biais de Xcode ou iTunes. Pour de plus amples informations, voir https://developer.apple.com/ios/manage/devices/howto.action

Pour de plus amples informations sur le flux de travail pour les apps iOS sur le Mac, voir https://developer.apple.com/library/IOs/referencelibrary/GettingStarted/RoadMapiOS/index.html.

Composants recommandés pour les apps iOS par rapport aux applications de bureau

Sur la plate-forme iOS, le style natif et le format sont distincts du style et du format des applications de bureau. Ce qui signifie que votre app iOS doit suivre certaines règles spécifiques à iOS pour le formatage et le placement des composants.

Par exemple, la liste suivante compare les composants FireMonkey utilisés typiquement dans les apps de bureau aux composants recommandés pour les apps iOS :

Différences clés des composants :

Composants de bureau Composants iOS

TTreeView

TListView
TListBox

TRadioGroup
TRadioButton

TSegmentedControl
Zone de liste

TCheckBox

TSwitch

TMenuBar
TMainMenu

TToolBar avec des boutons
TTabControl


Composants FireMonkey recommandés pour les apps iOS :

TButton TEdit TCalendarEdit TListView
TTrackBar TTabControl TSpeeButton TMemo
TSwitch TComboBox TToolBar TScrollBox
TLabel TNumberBox TListBox TProgressBar
TPanel

Pour de plus amples informations sur les formats PDF et vidéo (avec notamment des recommandations spécifiques relatives au format et au style), consultez l'article publié sur l'EDN, iOS User Interface Design with Delphi XE4.

Par exemple, l'article de l'EDN contient des conseils sur l'utilisation des composants communs tels que TListBox, TListView, TToolBar et TSpeedButton dans vos apps iOS, ainsi qu'une démo détaillée qui illustre la création d'une app Settings sur la plate-forme iOS :

Cadres individuels d'exemple issus de iOS User Interface Design with Delphi XE4

ListBoxRules.png
  Règles relatives aux TListBox

ListViewRules.png
  Règles relatives aux TListView

SettingsDemo.png
  Démo Settings


Restrictions relatives aux composants pour les apps FireMonkey iOS

Lors de la conception de votre app iOS dans RAD Studio, vous pouvez seulement utiliser les composants qui sont supportés sur les périphériques iOS. Toutefois, sachez que la palette d'outils peut contenir des composants spécifiques à Windows ou non supportés sur iOS.

Caractères internationaux (Unicode) non acceptés sur la plate-forme cible iOS

Les caractères internationaux (Unicode) ne sont pas acceptés à certains endroits dans une application iOS. Par exemple, les mots tels que hélène et éléments empêchent l'exécution de l'application iOS.

Il est demandé de ne pas utiliser de caractères internationaux tout particulièrement dans :

  • Votre nom d'utilisateur Windows
  • Un nom de profil de connexion
  • Le nom de votre projet iOS
  • Le nom du bundle d'application (l'exécutable .app)

Le message suivant s'affiche lorsque vous essayez de construire une application iOS qui contient des caractères Unicode :

  Can't get full path to application bundle. No such file or directory

L'application iOS est générée dans le répertoire de travail PAServer, mais ne s'exécute ni sur le périphérique iOS ni sur le simulateur iOS.

Par ailleurs, lorsque vous utilisez C++ pour créer une application iOS, n'employez pas System::UnicodeString combiné avec std::wstring. La raison est que std::wstring utilise des caractères à 4 octets (wchar_t), tandis que System::UnicodeString utilise des caractères à 2 octets (char16_t).

Utilisation des frameworks dans les apps iOS

RTL

Certaines unités RTL qui fournissent des fonctionnalités de base sont communes à toutes les plates-formes, telles que System.pas ou System.SysUtils.pas.

Un certain nombre d'unités RTL sont iOS seulement (voir Frameworks iOS Objective-C). Ces unités sont préfixées avec la portée d'unité iOSapi.

Voir aussi RTL C pour iOS.

FireMonkey

Le framework FireMonkey est idéal pour la plate-forme cible iOS et il supporte aussi Mac OS X ainsi que Win32 et Win64. Voir Prérequis de plate-forme FireMonkey.

VCL (indisponible pour iOS ou Mac)

La VCL est seulement disponible sur Windows (32 bits et 64 bits).

Frameworks iOS Objective-C (iOSapi)

La RTL contient un certain nombre d'unités qui fournissent des interfaces Delphi et C++ aux frameworks iOS écrits en Objective-C. Ces unités sont préfixées avec la portée iOSapi et sont situées typiquement dans le répertoire /source/rtl de l'installation de votre produit :

  • iOSapi.AssetsLibrary
  • iOSapi.AVFoundation
  • iOSapi.CocoaTypes
  • iOSapi.CoreAudio
  • iOSapi.CoreData
  • iOSapi.CoreGraphics
  • iOSapi.CoreImage
  • iOSapi.CoreLocation
  • iOSapi.CoreMedia
  • iOSapi.CoreMotion
  • iOSapi.CoreTelephony
  • iOSapi.CoreText
  • iOSapi.CoreVideo
  • iOSapi.Foundation
  • iOSapi.GLKit
  • iOSapi.MediaPlayer
  • iOSapi.OpenGLES
  • iOSapi.QuartzCore
  • iOSapi.UIKit

Le framework FireMonkey s'appuie sur certaines de ces unités.

Documentation des bibliothèques iOS

Pour de l'aide sur ces API, voir la documentation Apple iOS Developer Library. RAD Studio ne fournit pas d'aide pour des bibliothèques devant être utilisées sur le Mac.

Vous pouvez aussi vous enregistrer en tant que développeur iOS (gratuitement) sur iOS Dev Center. Etre un membre enregistré du programme développeur iOS vous permet de distribuer les apps dans l'App Store (vous devez auparavant satisfaire d'autres exigences, telles que l'obtention d'un certificat développeur et un profil d'approvisionnement). Pour de plus amples informations, voir http://developer.apple.com/programs/ios/gettingstarted/

Support OpenSSL

RAD Studio utilise OpenSSL pour le support HTTPS dans les services cloud Azure, Amazon et Indy et dans les clients DataSnap (lorsque des filtres d'encryptage sont activés ou que le protocole de communication est défini sur HTTPS dans l'expert Serveur DataSnap). Si votre application iOS nécessite le support OpenSSL, vous devez configurer votre projet afin d'inclure les bibliothèques requises : libcrypto et libssl.

  • Pour la plate-forme cible Périphérique iOS, qui ne supporte pas les bibliothèques dynamiques, vous avez besoin d'une version statique de ces fichiers bibliothèque (libcrypto.a et libssl.a). Pour obtenir ces fichiers bibliothèque, effectuez l'une des opérations suivantes :
    Dès que vous avez obtenu ces fichiers bibliothèque, copiez-les dans un dossier dans lequel votre projet recherche les bibliothèques, tel que le dossier de projet principal.
  • Pour la plate-forme cible Simulateur iOS, qui ne supporte pas les bibliothèques dynamiques, effectuez l'une des opérations suivantes :
    • Utilisez IdOpenSSLSetLibPath() de Indy pour définir le chemin de l'emplacement sur le Mac où les fichiers bibliothèque (libcrypto.dylib et libssl.dylib) résident.
      Remarque : Laisser le Mac rechercher les bibliothèques OpenSSL peut ne pas fonctionner pour la plate-forme cible Simulateur iOS, car vous pourriez obtenir une version non supportée des fichiers bibliothèque OpenSSL dans les dossiers de bibliothèque que le simulateur utilise.
    • Copiez les fichiers bibliothèque OpenSSL du simulateur iOS depuis le Mac vers le dossier source de votre projet, et déployez-les vers le simulateur avec votre application.

Pour qu'une application opérationnelle utilisant la bibliothèque OpenSSL (par exemple, si votre app se connecte à un fournisseur de services par HTTPS, tel que Amazon, Azure ou DataSnap), vous devez ajouter l'unité IdSSLOpenSSLHeaders_static à toute clause uses de votre projet.

Lorsque vous créez une application C++ iOS, une fois les bibliothèques requises obtenues, vous devez configurer votre projet pour le lier à ces bibliothèques. Sélectionnez Projet > Options > Lieur C++, et définissez "Lier avec SSL et Crypto" sur True.

Chargement et déploiement des fichiers

Lorsque vous déployez votre application pour la plate-forme cible Périphérique iOS, si vous envisagez de fournir des fichiers en même temps que votre application pour les charger à l'exécution, utilisez le Gestionnaire de déploiement pour placer ces fichiers dans le dossier StartUp\Documents lors du déploiement.

ChangeToStartUpDocuments.png

Utilisez le code suivant pour localiser ces fichiers à l'exécution :

Dans Delphi :

 
 TPath.Combine(TPath.GetDocumentsPath, 'filename')

Dans C++ :

 
 System::Ioutils::TPath::Combine(System::Ioutils::TPath::GetDocumentsPath(), L"filename")

Dans cet exemple filename est le nom de votre fichier, comme 'dbdemos.gdb' dans l'écran ci-dessus. L'enregistrement TPath est déclaré dans l'unité System.IOUtils, vous devez donc ajouter System.IOUtils dans la clause uses.

Ecriture d'un code pour iOS seulement

Vous pouvez utiliser une compilation conditionnelle pour écrire un code qui est uniquement construit lorsque la plate-forme cible est iOS.

Dans Delphi, vous pouvez utiliser les conditions prédéfinies suivantes :

 
 {$IF Defined(IOS) }
 // Code for both iOS Device and iOS Simulator.
 {$ENDIF}
 
 {$IF Defined(IOS) and Defined(CPUARM) }
 // Code for iOS Device only.
 {$ENDIF}
 
 {$IF Defined(IOS) and Defined(CPUX86) }
 // Code for iOS Simulator only.
 {$ENDIF}

Dans C++, Apple recommande d'utiliser la définition TARGET_OS_IPHONE, qui est définie si vous incluez l'en-tête TargetConditionals.h. Si vous incluez "System.hpp", "TargetConditionals.h" est également inclus. Dans ce cas, vous pouvez utiliser :

 
 #if defined(TARGET_OS_IPHONE)
 // Code for iOS Device.
 #endif

Sinon, vous pouvez utiliser des définitions pour détecter le compilateur BCCIOSARM.

Implémentation de fonctionnalités propres à iOS

Les rubriques suivantes décrivent comment implémenter des fonctionnalités propres à iOS dans vos applications :

Des informations supplémentaires sur d'autres fonctionnalités agnostiques à la plate-forme sont disponibles dans le Guide des applications FireMonkey.

Voir aussi