Erstellen von iOS-Apps

Aus Appmethod Topics
Wechseln zu: Navigation, Suche

Nach oben zu FireMonkey-Anwendungshandbuch

Nach oben zu Mobile iOS-Anwendungsentwicklung


So erstellen Sie eine iOS-App:

Datei > Neu > Mobile Anwendung - Object Pascal

iOS-Formulare

Dem mobilen Formular können Sie weitere Formulare auf dieselbe Weise wie für Desktop-Anwendungen hinzufügen.

iOS-Formulare haben spezielle hardwareabhängige Eigenschaften. Sie haben beispielsweise eine andere Form bzw. beanspruchen eine andere Fläche als Standard-Desktop-Formulare:

  • FireMonkey-iOS-Anwendungen sind vertikal ausgerichtet:
    • ClientHeight = 480 Pixel
    • ClientWidth = 320 Pixel
  • Für FireMonkey-Desktop-Anwendungen ist das Formular horizontal ausgerichtet:
    • ClientHeight = 480 Pixel
    • ClientWidth = 600 Pixel

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 Appmethod-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.

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

Schritte in Appmethod

  1. Starten Sie Ihr Projekt:
    Datei > Neu > Mobile Anwendung > Object Pascal
  2. Wählen Sie eine Vorlage oder eine Anwendung aus, wie z. B. Registerkartenanwendung oder Leere Anwendung.
  3. Das iOS-Formular wird im Formular-Designer angezeigt.
    Fügen Sie im Formular-Designer und im Quelltext-Editor von Appmethod 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 der Mobile-Tutorials: Mobile Anwendungsentwicklung (iOS und Android).

Schritte auf dem Mac und auf dem iOS-Simulator oder einem angeschlossenen iOS-Gerät

  1. 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.
  2. 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.

Weitere Informationen zum Arbeitsablauf für iOS-Apps auf dem Mac finden Sie unter http://developer.apple.com/library/ios/#documentation/Xcode/Conceptual/ios_development_workflow/00-About_the_iOS_Application_Development_Workflow/introduction.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 Beispielliste werden 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
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

Komponentenbeschränkungen für FireMonkey-iOS-Apps

Während des Entwurfs von iOS-Apps in Appmethod 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
  • 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 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.

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.

Objective-C-Frameworks für iOS (iOSapi)

Die RTL enthält eine Reihe von Units, die Object Pascal-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 dieser API finden Sie in der Apple-Dokumentation unter iOS Developer Library. Appmethod 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

Appmethod verwendet zur Unterstützung von HTTP in Indy, Amazon- und Azure-Cloud-Diensten oder in DataSnap-Clients (wenn Verschlüsselungsfilter aktiviert sind) OpenSSL. Wenn in Ihrer iOS-Anwendung die OpenSSL-Unterstützung benötigt wird, müssen Sie Ihr Projekt so konfigurieren, dass es die erforderlichen Bibliotheken einschließt: 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:
    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 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.

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.

ChangeToStartUpDocuments.png

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

In Object Pascal:

 
 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.

Siehe auch