Erstellen von iOS-Apps

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Mobile iOS-Anwendungsentwicklung


So erstellen Sie eine iOS-App:

Datei > Neu > Geräteübergreifende Anwendung - Delphi
Datei > Neu > Geräteübergreifende Anwendung - C++Builder

Wählen Sie dann im Experten Geräteübergreifende Anwendung einen geräteübergreifenden Anwendungstyp aus.

Workflow für FireMonkey-iOS

Die Entwicklung von FireMonkey-iOS-Anwendungen erfolgt auf Ihrer Entwicklungsplattform und auf dem Mac. Nach 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 das jeweilige iOS-Entwicklungsgerät konfigurieren, das Sie für den Test Ihrer Anwendung auf dem Mac verwenden möchten..

Entwickeln Sie anschließend Ihr Projekt gemäß der folgenden allgemeinen Reihenfolge:

Schritte in RAD Studio

  1. Starten Sie Ihr Projekt mit einem der folgenden Experten für geräteübergreifende Anwendungen:
    Datei > Neu > Weitere > Delphi > Geräteübergreifende Anwendung
    Datei > Neu > Weitere > C++Builder > Geräteübergreifende Anwendung
  2. Wählen Sie im Experten Geräteübergreifende Anwendung einen geräteübergreifenden Anwendungstyp, wie Registerkarten oder Leere Anwendung, aus.
  3. Die Master-Ansicht wird im Formular-Designer angezeigt.
  4. Wählen Sie die Zielplattform "iOS-Gerät - 64 Bit" aus, um alle verfügbaren Komponenten für iOS anzuzeigen, andernfalls werden sie abgedunkelt dargestellt.
    Fügen Sie im Formular-Designer und im Quelltext-Editor in 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 die Erstellung Ihrer iOS-App, indem Sie Mobile-Tutorials: Mobile Anwendungsentwicklung (iOS und Android) durcharbeiten.

Stilauswahl

Oben im Formular-Designer für geräteübergreifende Anwendungen wird die Stilauswahl angezeigt: StylesFormDes.png

Im Dropdown-Menü der Stilauswahl sind alle Stile aufgeführt, die Sie für die Master-Ansicht anwenden können.

Wählen Sie aus der Stilauswahl den Stil iOS aus, um alle Eigenschaften für die Komponenten entsprechend der Zielplattform anzuzeigen.

Ansichtsauswahl

Oben im Formular-Designer für geräteübergreifende Anwendungen wird die Ansichtsauswahl angezeigt: ViewsFormDes.png

Das Dropdown-Menü der Ansichtsauswahl enthält alle verfügbaren Ansichten für die verschiedenen Plattformen, wie iOS, Android, Windows und OS X.

Verwenden Sie die Master-Ansicht für das allgemeine Design Ihrer Anwendung. Anschließend können Sie Ihrem Projekt neue Ansichten hinzufügen, um Ihre Anwendung für einen bestimmten Gerätetyp anzupassen. Es ist sogar möglich, neue angepasste Ansichten zu erstellen; siehe Hinzufügen einer angepassten Ansicht zur Ansichtsauswahl. Die Standardansichten für iOS-Geräte sind:

  • iPhone 3.5"
  • iPhone 4"
  • iPad Mini
  • iPad

Alle Ansichten erben Komponenten und Eigenschaften von der Master-Ansicht. Weitere Informationen finden Sie unter Formular-Designer.

Hinweis: Wenn Sie einige Bereiche Ihrer Anwendung nur für iOS anpassen möchten, können Sie dies in der Ansicht iOS durchführen. Alternativ können Sie über die bedingte Compilierung iOS-spezifischen Code zur Laufzeit ausführen.

Siehe auchMobile-Tutorial: Verwenden von Layouts zur Ausrichtung unterschiedlicher Formulargrößen (iOS und Android) , das die Verwendung der Master-Ansicht für verschiedene Standards (wie Telefon oder Tablet) ohne unterschiedliche Ansichten für jeden Standard zeigt.

Bevorzugte Komponenten für iOS im Vergleich zu Desktop-Plattformen

Auf der iOS-Plattform unterscheiden sich der native Stil und das Format vom Stil und Format von Anwendungen für Desktop-Plattformen. Daher müssen Sie für geräteübergreifende Apps iOS-spezifische Regeln hinsichtlich Formatierung und Anordnung von Komponenten auf der iOS-Plattform beachten.

In der folgenden Beispielliste werden FireMonkey-Komponenten, die typischerweise auf Desktop-Plattformen verwendet werden, Komponenten gegenübergestellt, die bevorzugt für iOS geeignet sind:

Unterschiede bei wichtigen Komponenten:

Desktop-Komponenten iOS-Komponenten

TTreeView

TListView
TListBox

TRadioGroup
TRadioButton

TSegmentedControl
ListBox

TCheckBox

TSwitch

TMenuBar
TMainMenu

TToolBar mit Schaltflächen
TTabControl


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 (EN).

Beispielsweise enthält der EDN-Artikel (EN) 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 (EN)

ListBoxRules.png
  TListBox-Regeln

ListViewRules.png
  TListView-Regeln

SettingsDemo.png
  Settings-Demo


Komponentenbeschränkungen bei FireMonkey-Apps für iOS

Während des Entwurfs von iOS-Apps in RAD Studio können Sie nur Komponenten verwenden, die auf iOS-Geräten unterstützt werden. Wenn die aktive Zielplattform Ihres Projekts eine iOS-Geräteplattform (iOS-Gerät - 64 Bit) ist, werden in der Tool-Palette nicht unterstützte Komponenten abgedunkelt dargestellt.

Hinweis: Beachten Sie, dass RAD Studio nur 64-Bit-iOS-Geräte unterstützt.

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 iOS-Geräten noch auf Simulatoren 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 eigener Schriftarten in iOS-Apps

Sie können in Ihren iOS-Apps eigene Schriftarten verwenden.

Eigene Schriftarten können in mobilen Anwendungen beispielsweise als Symbole verwendet werden. TrueType-Schriftarten haben gegenüber Rasterbilddateien Vorteile, weil diese Schriftarten schlank und vektorbasiert sind, sodass sie gut in hohe Auflösungen skaliert werden können. Sie können eigene Schriftarten in Ihre System-Schriftartenbibliothek auf Ihrem Entwicklungssystem installieren. Die eigenen Schriftarten sollten dann in der IDE beim Entwurf verfügbar sein.

Wenn Sie aber Ihre App zu diesem Zeitpunkt auf einem Zielgerät bereitstellen, werden die Schriftarten der App nur mit den auf dem Gerät verfügbaren installierten Schriftarten gerendert. Sie müssen Ihrem Projekt die Schriftart mit dem Bereitstellungs-Manager hinzufügen, um sicherzustellen, dass die beim Entwurf in der IDE angezeigten Schriftarten auf das Gerät kopiert werden.

Die grundlegenden Schritte zum Einbeziehen einer eigenen Schriftart in Ihre iOS-App sind:

  1. Installieren der eigenen Schriftart auf Ihrem Windows-System.
    • Anleitungen dazu finden Sie unter Windows Hilfe und Support auf Ihrem System.
    • Klicken Sie beispielsweise mit der rechten Maustaste auf die Schriftartdatei, und klicken Sie auf Installieren.
  2. Hinzufügen der Schriftartdatei zum Stammverzeichnis Ihres Projekts.
  3. Zuweisen der Schriftart zur Eigenschaft Text Settings/Font für die Steuerelemente, die die Schriftart verwenden, im Objektinspektor.
  4. Anpassen der Datei info.plist für Ihr iOS-Projekt und Einfügen der folgenden Zeilen in das <dict>-Tag der obersten Ebene:
    <key>UIAppFonts</key>
    <array>
      <string>FontAwesome.ttf</string>
    </array>
    
  5. Hinzufügen der Schriftartdatei zu Ihrem Projekt im Bereitstellungs-Manager.

Vollständige Anleitungen und herunterladbare Dateien zum Erstellen eines mobile Projekts, in dem eine eigene installierte Schriftart (Font Awesome (EN)) verwendet wird, finden Sie hier:

Um festzustellen, ob eine Schriftart zur Laufzeit auf einem bestimmten Gerät zur Verfügung steht, müssen Sie überprüfen, ob die beim Entwurf verwendete Schriftart auf den Zielgeräten unterstützt wird:

Freigeben von Formularen in iOS-Apps

Im Allgemeinen sollten geräteübergreifende Anwendungen nicht mehrere Formulare gleichzeitig im Arbeitsspeicher halten. Mobile Geräte verfügen nur über begrenzten Arbeitsspeicher, und Formulare sind speicherintensive Objekte.

Gehen Sie folgendermaßen vor: 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 den Aufruf der Methode System.TObject.DisposeOf des Formulars).

Mit einem Register-Steuerelement mit mehreren Seiten können mehrere formularartige Steuerelemente speichereffizienter angezeigt werden.

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 oder System.SysUtils.

Einige RTL-Units können nur für iOS verwendet werden (siehe Objective-C-Frameworks für iOS). Diesen Units wird der Unit-Gültigkeitsbereich iOSapi vorangestellt.

Siehe auchiOS-C-RTL.

FireMonkey

Das FireMonkey-Framework eignet sich ideal für iOS und unterstützt auch viele andere Plattformen. 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 (EN). RAD Studio stellt keine Hilfe für die Bibliotheken bereit, die Sie eventuell für den Mac benötigen.

Sie können sich als iOS-Entwickler (kostenlos) beim iOS Dev Center (EN) 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/ (EN).

OpenSSL-Unterstützung

Für Cloud-Komponenten und Indy ist OpenSSL zur Unterstützung von HTTPS erforderlich. Wenn in Ihrer iOS-Anwendung eine dieser Technologien mit HTTPS verwendet wird, müssen Sie Ihr Projekt so konfigurieren, dass die erforderlichen Bibliotheken eingeschlossen sind: libcrypto und libssl.

  • Für die Zielplattform "iOS-Gerät" (iOS-Gerät - 64 Bit), die keine dynamischen Bibliotheken unterstützt, benötigen Sie eine statische Version dieser Bibliotheksdateien (libcrypto.a und libssl.a). Um diese Bibliotheksdateien zu erhalten, erzeugen Sie sie 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.


Um eine funktionierende Anwendung zu erhalten, die die OpenSSL-Bibliothek verwendet, müssen Sie die Unit IdSSLOpenSSLHeaders_static allen uses-Klauseln Ihres Projekts hinzufügen.

Wenn Sie eine C++-iOS-Anwendung nach dem Erhalt der erforderlichen Bibliotheken erstellen, müssen Sie Ihr Projekt so konfigurieren, dass es mit ihnen verknüpft wird. Wählen Sie Projekt > Optionen > C++-Linker und legen Sie "Mit SSL und Crypto linken" auf True fest.

Laden und Bereitstellen von Dateien

Wenn Sie bei der Bereitstellung Ihrer Anwendung für die iOS-Gerätezielplattform (iOS-Gerät - 64 Bit) Dateien zusammen mit der Anwendung weitergeben möchten 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.

ChangeToStartUpDocuments.png

Mit dem folgenden Code können Sie diese Dateien zur Laufzeit ermitteln:

Delphi:
TPath.Combine(TPath.GetDocumentsPath, 'filename')
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 eine Referenz auf diese Unit hinzufügen.

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) and Defined(CPUARM) }
// Code for iOS devices only.
{$ENDIF}

{$IF Defined(IOS) and Defined(CPUARM64) }
// Code for 64-bit iOS devices only.
{$ENDIF}

In C++ empfiehlt Apple die Verwendung von Definitionen in der Header-Datei TargetConditionals.h, die von der Header-Datei System.hpp einbezogen wird:

#if (TARGET_OS_IPHONE)
// Code for iOS devices only.
#endif

#if (TARGET_OS_IPHONE) && (__arm64__)
// Code for 64-bit iOS devices only.
#endif

Eine weitere Möglichkeit ist Verwendung von Definitionen in der Header-Datei sysmac.h, die auch von der Header-Datei System.hpp einbezogen wird. Im Gegensatz zum früheren C++-Code können Sie mit folgendem Code die Überprüfung, ob das Gerät die 32-Bit- oder 64-Bit-Compiler-Architektur unterstützt, vermeiden:

#if (_PLAT_IOS)
// Code for iOS devices only.
#endif

#if (_PLAT_IOS64)
// Code for 64-bit iOS devices only.
#endif

Alternativ können Sie mit Definitionen die iOS-Compiler ermitteln:

Weitere Informationen über plattformspezifische Definitionen finden Sie unter Vordefinierte Makros und Vordefinierte Bedingungen.

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

Beispiele