Erstellen von iOS-Apps
Nach oben zu FireMonkey-Anwendungshandbuch
Nach oben zu Mobile iOS-Anwendungsentwicklung
So erstellen Sie eine iOS-App:
Datei > Neu > Mobile FireMonkey-Anwendung - Delphi
Datei > Neu > Mobile FireMonkey-Anwendung - C++Builder
iOS-Formulare
Sie können einem mobilen FireMonkey-Formular weitere Formulare auf dieselbe Weise wie in Desktop-Anwendungen hinzufügen.
iOS-Formulare haben spezielle hardwareabhängige Eigenschaften. Sie haben beispielsweise eine andere Form bzw. beanspruchen eine andere Fläche als FireMonkey-Standard-Desktop-Formulare:
- FireMonkey-iOS-Anwendungen sind vertikal ausgerichtet:
- ClientHeight = 480 Pixel
- ClientWidth = 320 Pixel
- Bei FireMonkey-Desktop-Anwendungen ist das Formular horizontal ausgerichtet:
- ClientHeight = 480 Pixel
- ClientWidth = 600 Pixel
Freigeben von Formularen in iOS-Apps
Im Allgemeinen sollten mobile Anwendungen nicht mehrere Formulare gleichzeitig im Arbeitsspeicher halten. Mobile Geräte verfügen nur über begrenzten Arbeitsspeicher, und Formulare sind speicherintensive Objekte.
Folgendermaßen sollte vorgegangen werden: Zeigen Sie das Formular an, und geben Sie das Formular, wenn es nicht mehr sichtbar ist, aus dem Speicher frei (entweder mit der Ereignisbehandlungsroutine OnClose oder durch Setzen von CloseEvent auf caFree oder durch einen Aufruf der Methode System.TObject.DisposeOf des Formulars).
Mit einem Register-Steuerelement mit mehreren Seiten können mehrere formularartige Steuerelemente speichereffizienter angezeigt werden.
FireMonkey-iOS-Workflow
Die Entwicklung von FireMonkey-iOS-Anwendungen erfolgt auf Ihrer Entwicklungsplattform und auf dem Mac. Nach dem Abschluss der erforderlichen Schritte zur Einrichtung der Umgebung und dem Compilieren des Projekts in der RAD Studio-IDE werden beim Ausführen des Projekts die ausführbaren Dateien und die erforderlichen Bibliotheken auf den Mac übertragen.
Wichtig: Beginnen Sie hier
- Bevor Sie mit Ihrem ersten iOS-Projekt beginnen, müssen Sie unter Windows und auf dem Mac einige wichtige Installations- und Konfigurationsschritte durchführen. Beispielsweise müssen Sie ein Bereitstellungsprofil für die Entwicklung für das jeweilige iOS-Entwicklungsgerät konfigurieren, das Sie für den Test Ihrer Anwendung auf dem Mac verwenden möchten.
- Die dazu erforderlichen Schritte sind unter Mobile iOS-Anwendungsentwicklung beschrieben.
Entwickeln Sie anschließend Ihr Projekt gemäß der folgenden allgemeinen Reihenfolge:
Schritte in RAD Studio
- Starten Sie Ihr Projekt mit einem der folgenden FireMonkey-iOS-Experten:
- Datei > Neu > Weitere > Delphi-Projekte > Mobile FireMonkey-Anwendung
- Datei > Neu > Weitere > C++Builder-Projekte > Mobile FireMonkey-Anwendung
- Wählen Sie eine Vorlage oder eine Anwendung aus, wie z. B. Registerkartenanwendung oder Leere Anwendung.
- Das iOS-Formular wird im Formular-Designer angezeigt.
- Fügen Sie im Formular-Designer und im Quelltext-Editor von RAD Studio dem Formular Steuerelemente hinzu, legen Sie Werte für Eigenschaften und Ereignisse fest, und schreiben Sie den entsprechenden Code dafür.
- Tipp: Beginnen Sie mit der Erstellung Ihrer iOS-App anhand von Mobile-Tutorials: Mobile Anwendungsentwicklung (iOS und Android).
Schritte auf dem Mac und auf dem iOS-Simulator oder einem angeschlossenen iOS-Gerät
- Führen Sie Ihr Projekt zum Erstellen eines Prototyps auf der iOS-Simulator-Zielplattform aus, und debuggen Sie es auch auf dieser Plattform.
- Tipp: Führen Sie Ihre Anwendung im iOS-Simulator mindestens einmal nach Erstellung des Projekts (und nach jeder Projektänderung und jedem Hinzufügen von neuen Dateien) aus.
- Wählen Sie das Gerät aus, auf dem die App ausgeführt werden soll, z. B.:
- Integrierter iOS-Simulator für das erste Debuggen.
- Physisches iOS-Gerät, das an den Mac angeschlossen ist.
So führen Sie die iOS-App auf einem iOS-Gerät aus:
- Das iOS-Gerät muss mit einem USB-Kabel an den Mac angeschlossen sein.
- Sie müssen auf der Seite SDK-Manager ein neues SDK hinzufügen. Nach dem Hinzufügen eines neuen SDK wird die ausgewählte Version des iOS-SDK vom Mac auf Ihr Entwicklungssystem übertragen.
- Sie müssen ein Bereitstellungsprofil für die Entwicklung zum Testen der Anwendung auf dem iOS-Entwicklungsgerät erstellen.
- Das Bereitstellungsprofil verknüpft Ihre Apple-Entwickler-ID mit Folgendem:
- Bestimmten iOS-Apps, die Sie ausführen möchten (gekennzeichnet durch die App-ID)
- Den jeweiligen iOS-Geräten, auf denen die Apps ausgeführt werden sollen (gekennzeichnet durch die Geräte-ID oder UDID)
- Die 40 Zeichen lange UDID können Sie mit Xcode oder iTunes ermitteln. Weitere Informationen dazu finden Sie unter https://developer.apple.com/ios/manage/devices/howto.action.
- Das Bereitstellungsprofil verknüpft Ihre Apple-Entwickler-ID mit Folgendem:
Weitere Informationen zum Arbeitsablauf für iOS-Apps auf dem Mac finden Sie unter https://developer.apple.com/library/IOs/referencelibrary/GettingStarted/RoadMapiOS/index.html.
Bevorzugte Komponenten für iOS-Apps im Vergleich zu Desktop-Anwendungen
Auf der iOS-Plattform unterscheiden sich der native Stil und das Format vom Stil und Format von Desktop-Anwendungen. Daher müssen Sie für iOS-Apps iOS-spezifische Regeln hinsichtlich Formatierung und Anordnung von Komponenten beachten.
In der folgenden Liste werden z. B. FireMonkey-Komponenten, die typischerweise in Desktop-Apps verwendet werden, Komponenten gegenübergestellt, die bevorzugt für iOS-Apps geeignet sind:
Unterschiede bei wichtigen Komponenten:
Desktop-Komponenten | iOS-Komponenten |
---|---|
TTreeView |
TListView |
TRadioGroup |
TSegmentedControl |
TCheckBox |
TSwitch |
TMenuBar |
TToolBar mit Schaltflächen |
Bevorzugte FireMonkey-Komponenten für iOS-Apps:
TButton | TEdit | TCalendarEdit | TListView |
TTrackBar | TTabControl | TSpeeButton | TMemo |
TSwitch | TComboBox | TToolBar | TScrollBox |
TLabel | TNumberBox | TListBox | TProgressBar |
TPanel |
Weitere Informationen als PDF-Datei und Video (einschließlich von Empfehlungen für Format und Stil) finden Sie im EDN-Artikel iOS User Interface Design with Delphi XE4.
Beispielsweise enthält der EDN-Artikel Tipps zur Verwendung von allgemeinen Komponenten, wie TListBox, TListView, TToolBar und TSpeedButton, in iOS-Apps plus einer detaillierten Demo, in der gezeigt wird, wie Sie eine Einstellungs-App (Settings) für die iOS-Plattform erstellen:
Einzelne Beispiel-Frames aus iOS User Interface Design with Delphi XE4 | ||
---|---|---|
|
|
|
Komponentenbeschränkungen für FireMonkey-iOS-Apps
Während des Entwurfs von iOS-Apps in RAD Studio können Sie nur Komponenten verwenden, die auf iOS-Geräten unterstützt werden. Beachten Sie jedoch, dass die Tool-Palette möglicherweise Komponenten enthält, die nur für Windows vorgesehen sind oder von iOS nicht unterstützt werden.
Nicht akzeptierte internationale Zeichen (Unicode) auf der iOS-Zielplattform
Internationale Zeichen (Unicode) werden an mehreren Stellen in iOS-Apps nicht akzeptiert. Beispielsweise können Namen wie hélène und éléments die Ausführung einer iOS-App verhindern.
Verwenden Sie internationale Zeichen insbesondere nicht:
- In Ihrem Windows-Benutzernamen
- In Namen von Verbindungsprofilen
- In Namen von iOS-Projekten
- In dem Namen des Anwendungspakets (die ausführbare
.app
-Datei)
Folgende Meldung wird angezeigt, wenn Sie versuchen, eine iOS-App zu erzeugen, die Unicode-Zeichen enthält:
Can't get full path to application bundle. No such file or directory
In diesem Fall wird die iOS-App zwar im scratch-dir von PAServer erzeugt, kann aber weder auf dem iOS-Gerät noch auf dem iOS-Simulator ausgeführt werden.
Verwenden Sie außerdem System::UnicodeString und std::wstring nicht gemeinsam, wenn Sie mit C++ eine iOS-Anwendung erstellen. Der Grund dafür ist, dass std::wstring 4-Byte-Zeichen (wchar_t) verwendet und System::UnicodeString 2-Byte-Zeichen (char16_t).
Verwenden von Frameworks in iOS-Apps
RTL
Einige RTL-Units, die die grundlegende Funktionalität bereitstellen, werden für alle Plattformen verwendet, z. B. System.pas oder System.SysUtils.pas.
Einige RTL-Units können nur für iOS verwendet werden (siehe Objective-C-Frameworks für iOS). Diesen Units ist der Unit-Gültigkeitsbereich iOSapi vorangestellt.
Siehe auch iOS-C-RTL.
FireMonkey
Das FireMonkey-Framework eignet sich ideal für die iOS-Zielplattform und unterstützt auch Mac OS X, Win32 und Win64. Siehe Plattformvoraussetzungen für FireMonkey.
VCL (nicht verfügbar für iOS oder den Mac)
Die VCL steht nur unter Windows (32 Bit und 64 Bit) zur Verfügung.
Objective-C-Frameworks für iOS (iOSapi)
Die RTL enthält eine Reihe von Units, die Delphi- und C++-Interfaces für iOS-Frameworks in der Sprache Objective-C enthalten. Diesen Units ist der Gültigkeitsbereich iOSapi vorangestellt, und sie befinden sich normalerweise im Verzeichnis /source/rtl
Ihrer Produktinstallation:
- 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
Das FireMonkey-Framework basiert auf einigen dieser Units.
Dokumentation für iOS-Bibliotheken
Hilfe zu diesen APIs finden Sie in der Apple-Dokumentation unter iOS Developer Library. RAD Studio stellt keine Hilfe für die Bibliotheken bereit, die Sie evtl. für den Mac benötigen.
Sie können sich als iOS-Entwickler (kostenlos) beim iOS Dev Center registrieren. Als registriertes Mitglied des iOS Developer Program (iOS-Entwicklerprogramm) können Sie Ihre Apps im App Store vertreiben (dies ist eine Voraussetzung unter anderen, wie ein Entwicklerzertifikat und ein Bereitstellungsprofil). Weitere Informationen finden Sie unter http://developer.apple.com/programs/ios/gettingstarted/.
OpenSSL-Unterstützung
RAD Studio verwendet OpenSSL zur Unterstützung von HTTPS in Indy, Amazon- und Azure-Cloud-Diensten und in DataSnap-Clients, wenn Verschlüsselungsfilter aktiviert sind oder das Kommunikationsprotokoll in DataSnap-Server-Experte auf HTTPS gesetzt ist.
Wenn in Ihrer iOS-Anwendung die OpenSSL-Unterstützung benötigt wird, müssen Sie Ihr Projekt so konfigurieren, dass die erforderlichen Bibliotheken eingeschlossen sind: libcrypto und libssl.
- Für die Plattform iOS-Gerät, die keine dynamischen Bibliotheken unterstützt, benötigen Sie eine statische Version dieser Bibliotheksdateien (libcrypto.a und libssl.a). Führen Sie zum Abrufen dieser Bibliotheksdateien einen der folgenden Schritte aus:
- Laden Sie die vorcompilierten Bibliotheken von Github herunter.
- Erzeugen Sie diese Bibliotheken aus den Quelldateien. Laden Sie die Quelldateien von Github herunter, und befolgen Sie die im Tutorial: Skript zum Erzeugen von OpenSSL für iOS (iPhone/iPad) beschriebenen Schritte zum Compilieren dieser Bibliotheken.
- Kopieren Sie anschließend diese Bibliotheksdateien in einen Ordner, in dem Ihr Projekt nach Bibliotheken sucht, z. B. in den Hauptprojektordner.
- Führen Sie für die Zielplattform iOS-Simulator, die dynamische Bibliotheken unterstützt, einen der folgenden Schritte aus:
- Setzen Sie mit
IdOpenSSLSetLibPath()
von Indy den Pfad auf den Speicherort auf dem Mac, an dem sich die Bibliotheksdateien (libcrypto.dylib und libssl.dylib) befinden.- Hinweis: Dass der Mac die OpenSSL-Bibliotheken selbständig findet, funktioniert höchstwahrscheinlich auf der iOS-Simulator-Zielplattform nicht, da sich möglicherweise eine nicht unterstützte Version der OpenSSL-Bibliotheksdateien in den vom Simulator verwendeten Bibliotheksordnern befindet.
- Kopieren Sie die OpenSSL-Bibliotheksdateien für den iOS-Simulator vom Mac in Ihren Projektquellordner, und stellen Sie sie für den Simulator zusammen mit Ihrer Anwendung bereit.
- Setzen Sie mit
Fügen Sie die Unit IdSSLOpenSSLHeaders_static zu einer beliebigen uses-Klausel Ihres Projektes hinzu, um eine funktionierende Anwendung zu erstellen, die eine OpenSSL-Bibliothek verwendet (z.B. wenn sie eine Verbindung zu einem Netzdienstanbieter durch HTTPS, wie Amazon und Azure oder DataSnap herstellt).
Wenn Sie eine C++-iOS-Anwendung erstellen, müssen Sie Ihr Projekt so konfigurieren, dass die benötigten Bibliotheken in Ihr Projekt einbezogen werden. Wählen Sie Projekt > Optionen > C++-Linker, und setzen Sie "Mit SSL und Crypto linken" auf True
.
Laden und Bereitstellen von Dateien
Wenn Sie bei der Bereitstellung Ihrer Anwendung für die Zielplattform iOS-Gerät Dateien zusammen mit der Anwendung weitergeben und diese zur Laufzeit geladen werden sollen, verwenden Sie den Bereitstellungs-Manager, um diese Dateien während der Bereitstellung in den Ordner StartUp\Documents
zu platzieren.
Mit dem folgenden Code können Sie diese Dateien zur Laufzeit ermitteln:
In Delphi:
TPath.Combine(TPath.GetDocumentsPath, 'filename')
In C++:
System::Ioutils::TPath::Combine(System::Ioutils::TPath::GetDocumentsPath(), L"filename")
filename
ist hier der Name Ihrer Datei, wie z. B. "dbdemos.gdb" im obigen Screenshot. Der Record TPath wird in der Unit System.IOUtils deklariert, daher müssen Sie System.IOUtils in die uses-Klausel aufnehmen.
Schreiben von Code nur für iOS
Sie können mit der bedingten Compilierung Code schreiben, der nur erzeugt wird, wenn es sich bei der Zielplattform um iOS handelt.
In Delphi können Sie die folgenden vordefinierten Bedingungen verwenden:
{$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}
In C++ empfiehlt Apple die Verwendung der Definition TARGET_OS_IPHONE
, die definiert ist, sofern Sie den Header TargetConditionals.h einbeziehen. Wenn Sie "System.hpp" einbeziehen, ist "TargetConditionals.h" auch einbezogen. In diesem Szenario können Sie Folgendes verwenden:
#if defined(TARGET_OS_IPHONE) // Code for iOS Device. #endif
Alternativ können Sie den BCCIOSARM-Compiler anhand von Definitionen ermitteln.
Implementieren von iOS-spezifischen Features
In den folgenden Themen wird beschrieben, wie Sie bestimmte iOS-spezifische Features in Ihre Anwendungen implementieren:
Im FireMonkey-Anwendungshandbuch finden Sie die Dokumentation zu anderen, plattformunabhängigen Features.
Siehe auch
- Vorlagen für mobile FireMonkey-Anwendungen
- Mobile iOS-Anwendungsentwicklung
- Mobile-Tutorials: Mobile Anwendungsentwicklung (iOS und Android)
- Verwenden von Stilen für iOS: Stile für Mehrfachauflösung sowie schwarze und transparente Stile
- Erstellen einer FireMonkey-Komponente (Delphi)
- FireMonkey-Anwendungsdesign
- Erstellen einer FireMonkey-Anwendung
- Erstellen einer Android-App
- iOS Dev Center