Veröffentlichen von Xamarin.iOS-Apps im App Store

Ein App-Entwickler muss eine App gemeinsam mit Screenshots, einer Beschreibung, Symbolen und anderen Informationen zunächst übermitteln, bevor er sie im App Store veröffentlichen kann. Nachdem die Veröffentlichung der App genehmigt wurde, wird sie im App Store verfügbar gemacht. Dort können Benutzer die App erwerben und direkt auf ihrem iOS-Gerät installieren.

In diesem Leitfaden werden die Schritte zur Vorbereitung einer App für die Veröffentlichung im App Store und zum Übermitteln der App an Apple zur Überprüfung beschrieben. Folgende Aspekte werden besprochen:

  • Befolgen der Richtlinien für die Überprüfung im App Store
  • Einrichten einer App-ID und Berechtigungen
  • Bereitstellen eines Symbols für den App Store und von App-Symbolen
  • Einrichten eines App Store-Bereitstellungsprofils
  • Aktualisieren der Buildkonfiguration Release
  • Konfigurieren Ihrer App in iTunes Connect
  • Erstellen Ihrer App und Übermittlung an Apple

Wichtig

Apple hat mitgeteilt, dass ab März 2019 alle Apps und Updates, die an den App Store gesendet werden, mit dem iOS 12.1 SDK oder höher, das in Xcode 10.1 oder höher enthalten ist, erstellt worden sein müssen. Apps müssen ebenso die Bildschirmgrößen des iPhone XS und des iPad Pro in 12,9" unterstützen.

App Store-Richtlinien

Stellen Sie sicher, dass Ihre App die von Apple vorgegebenen Standards (App Store Review Guidelines (Richtlinien für die Überprüfung im App Store)) erfüllt, bevor Sie eine App für die Veröffentlichung im App Store übermitteln. Wenn Sie eine App an den App Store senden, prüft Apple diese App, um sicherzustellen, dass sie die Anforderungen erfüllt. Sollte dies nicht der Fall sein, wird die App von Apple abgelehnt. Dann müssen Sie auf die angegebenen Probleme reagieren und die App erneut einreichen. Deshalb wird empfohlen, die Richtlinien so früh wie möglich im Entwicklungsprozess zu lesen.

Beachten Sie bei der Übermittlung einer App Folgendes:

  1. Achten Sie darauf, dass die Beschreibung der App zu deren Funktionen passt.
  2. Stellen Sie sicher, dass die App bei normaler Nutzung nicht abstürzt. Dies schließt die Nutzung auf jedem iOS-Gerät, das sie unterstützt, mit ein.

Sehen Sie sich außerdem Ressourcen bezüglich des App Store an, die von Apple bereitstellt werden.

Einrichten einer App-ID und Berechtigungen

Jede iOS-App hat eine eindeutige App-ID, die wiederum verknüpfte Anwendungsdienste aufweist, die sogenannten Berechtigungen. Durch Berechtigungen können Apps unterschiedliche Vorgänge durchführen, z.B. das Erhalten von Pushbenachrichtigungen, der Zugriff auf iOS-Features wie HealthKit usw.

Öffnen Sie das Apple Developer-Portal, und führen Sie die folgenden Schritt durch, um eine App-ID zu erstellen und erforderliche Berechtigungen auszuwählen:

  1. Melden Sie sich am Apple Developer Portal an. Wenn Sie noch nicht über eine Apple-ID verfügen, erstellen Sie zunächst eine Apple-ID.
  2. Navigieren Sie zum Abschnitt Certificates, IDs & Profiles (Zertifikate, IDs und Profile) und dann zum Abschnitt Identifiers (Bezeichner).
  3. Klicken Sie oben auf der Seite auf die Schaltfläche + neben der Überschrift „Identifiers“ (Bezeichner).
  4. Wählen Sie App IDs (App-IDs) aus, und klicken Sie auf Continue (Weiter).
  5. Klicken Sie auf App und anschließend auf Continue (Weiter).
  6. Geben Sie eine Beschreibung und Bundle-ID für die neue Anwendung ein, und wählen Sie alle Funktionen aus, die für Ihre Xamarin.iOS-Anwendung erforderlich sind. App-Dienste werden im Leitfaden Arbeiten mit Funktionen in Xamarin.iOS weiter beschrieben. Klicken Sie nach Abschluss der Auswahl auf Continue (Weiter).
  7. Klicken Sie auf die Schaltfläche Register (Registrieren), um den Vorgang zum Erstellen der neuen App-ID abzuschließen.

Wenn Sie Ihre App-ID definieren, müssen Sie nicht nur die erforderlichen Anwendungsdienste auswählen und konfigurieren sondern auch die App-ID und Berechtigungen in Ihrem Xamarin.iOS-Projekt. Bearbeiten Sie dafür die Dateien Info.plist und Entitlements.plist. Weitere Informationen finden Sie im Leitfaden Arbeiten mit Berechtigungen in Xamarin.iOS. Dort wird das Erstellen der Datei Entitlements.plist und die Bedeutung der verschiedenen enthaltenen Berechtigungseinstellungen beschrieben.

Bereitstellen eines App Store-Symbols

Wenn Sie eine App an Apple übermitteln, achten Sie darauf, dass sie einen Ressourcenkatalog mit einem App Store-Symbol enthält. Sehen Sie sich den Leitfaden App Store icons in Xamarin.iOS (App Store-Symbole in Xamarin.iOS) an, in dem dieser Vorgang näher erläutert wird.

Festlegen der App-Symbole und Startbildschirme

Eine App wird nur dann von Apple im App Store veröffentlicht, wenn sie entsprechende Symbole und Startbildschirme für alle iOS-Geräte aufweist, auf denen sie ausgeführt werden kann. Weitere Informationen zum Einrichten von App-Symbolen und Startbildschirmen finden Sie in den folgenden Leitfäden:

Erstellen und Bereitstellen eines App Store-Bereitstellungsprofils

iOS verwendet Bereitstellungsprofile, um zu steuern, wie ein bestimmtes Anwendungsbuild bereitgestellt werden kann. Hierbei handelt es sich um Dateien mit Informationen zu dem Zertifikat, das zum Signieren einer App verwendet wurde, der App-ID sowie dem Ort, an dem die App installiert werden kann. Für die Entwicklung und Ad-hoc-Verteilung enthält das Bereitstellungsprofil auch eine Liste der zulässigen Geräte, auf denen die App bereitgestellt werden kann. Für die Verteilung im App Store enthält das Profil jedoch nur Zertifikats- und App-ID-Informationen, da eine öffentliche Verteilung nur über den App Store möglich ist.

Führen Sie die folgenden Schritte durch, um ein App Store-Bereitstellungsprofil zu erstellen und zu installieren:

  1. Melden Sie sich am Apple Developer Portal an.
  2. Navigieren Sie zum Abschnitt Certificates, IDs & Profiles (Zertifikate, IDs und Profile) und dann zum Abschnitt Profiles (Profile).
  3. Klicken Sie auf die Schaltfläche +, wählen Sie iOS App Development (iOS-App-Entwicklung) und App Store aus, und klicken Sie anschließend auf Continue (Weiter).
  4. Wählen Sie die App-ID Ihrer App aus der Liste aus, und klicken Sie auf Weiter.
  5. Wählen Sie ein Signaturzertifikat aus, und klicken Sie auf Weiter.
  6. Wählen Sie Geräte aus, die in dieses Profil eingeschlossen werden sollen, und klicken Sie auf Continue (Weiter).
  7. Geben Sie einen Bereitstellungsprofilnamen ein, und klicken Sie auf Generate (Generieren), um das Profil zu erstellen.
  8. Verwenden Sie die Tools der Apple-Kontoverwaltung von Xamarin, um das gerade erstellte Bereitstellungsprofil auf Ihren Mac herunterzuladen. Wenn Sie auf einem Mac arbeiten, können Sie das Bereitstellungsprofil auch direkt über das Apple Developer-Portal herunterladen und es durch einen Doppelklick installieren.

Eine ausführliche Anleitung finden Sie unter Manuelle Bereitstellung für Xamarin.iOS und App Store-Verteilung.

Aktualisieren der Buildkonfiguration „Release“

Neue Xamarin.iOS-Projekte richten automatisch die BuildkonfigurationenDebuggen und Release ein. Führen Sie die folgenden Schritte durch, um einen Releasebuild zu konfigurieren:

  1. Öffnen Sie im Lösungspaddie Datei Info.plist, die sich im iOS-Projekt befindet.

  2. Stellen Sie sicher, dass Sie sich in Anwendungsansicht befinden. Diese kann durch Klicken auf die Option in der unteren Navigationsleiste festgelegt werden.

  3. Wählen Sie die Option Manuelle Bereitstellung als Signierungsoption aus. Speichern und schließen Sie die Datei.

  4. Klicken Sie mit der rechten Maustaste auf den Projektnamen im Lösungspad, wählen Sie Optionen aus, und navigieren Sie dann zur Registerkarte iOS-Build.

  5. Legen Sie Konfiguration auf Release und Plattform auf iPhone fest.

  6. Wählen Sie ein SDK aus der SDK-Versionsliste aus, um den Build mit einem spezifischen iOS-SDK durchzuführen. Behalten Sie andernfalls den Standardwert bei.

  7. Durch Verknüpfungen können Sie die Gesamtgröße Ihrer Anwendung senken, da nicht verwendeter Code ausgeschlossen wird.

    • In den meisten Fällen sollte das Linkerverhalten auf den Standardwert Nur Framework-SDKs verknüpfen festgelegt werden.
    • Wenn Sie die Option Keine Verknüpfung verwenden, lehnt Apple möglicherweise die App aufgrund des Vorhandenseins nicht öffentlicher iOS-APIs in Xamarin.iOS ab, die mit der Option Nur Framework SDKs verknüpfen verknüpft sind.
    • Alle verknüpfen sollten mit Bedacht verwendet werden, da Code aus allen Assemblys im Projekt (einschließlich Bibliotheken von Drittanbietern) entfernt wird. Diese Option kann Code entfernen, den die Drittanbieterbibliothek nur über Reflexion verwendet, den der Linker nicht erkennen kann, da er statische Codeanalyse durchführt, um zu ermitteln, welcher Bibliothekscode verwendet wird. Verwenden Sie die Option Alle verknüpfen umsichtig, da Sie möglicherweise einige Klassen und/oder Methoden manuell beibehalten müssen, um Laufzeitfehler aufgrund von fehlendem Code zu vermeiden.
    • Weitere Informationen finden Sie im Leitfaden zum Verknüpfen von Xamarin.iOS-Apps.
  8. Wählen Sie für iOS 11 eine Gerätearchitektur aus, die ARM64 unterstützt. Weitere Informationen zu Builds auf 64-Bit-iOS-Geräten finden Sie im Abschnitt Enabling 64 Bit Builds of Xamarin.iOS Apps (64-Bit-Builds in Xamarin.iOS-Apps aktiveren) der Dokumentation 32/64 bit Platform Considerations (Überlegungen zu 32-/64-Bit-Plattformen).

  9. Mit dem LLVM-Compiler können Sie kürzeren und schnelleren Code erstellen. Diese Option führt jedoch zu längeren Kompilierzeiten.

  10. Aktivieren Sie PNG-Bilder optimieren, um die Größe Ihrer Anwendung weiter zu senken.

  11. Das Debuggen sollte nicht aktiviert sein, um den Build nicht unnötig zu vergrößern.

  12. Entsprechend der Anforderungen Ihrer Anwendung möchten Sie möglicherweise auch den Typ der für die Internationalisierung verwendeten und eingerichteten Garbage Collection anpassen.

    Nachdem Sie die Optionen wie oben beschrieben festgelegt haben, sollten Ihre Buildeinstellungen in etwa wie folgt aussehen:

    iOS Build settings

    Lesen Sie außerdem den Leitfaden Abläufe beim Erstellen von iOS-Builds, in dem Buildeinstellungen ausführlicher beschrieben werden.

  13. Navigieren Sie zur Registerkarte "Signatur für iOS-Bündel" . Wenn die hier aufgeführten Optionen nicht bearbeitet werden können, stellen Sie sicher, dass die manuelle Bereitstellung in der Datei "Info.plist " ausgewählt ist.

  14. Stellen Sie sicher, dass Konfiguration auf Release und Plattform auf iPhone festgelegt ist.

  15. Legen Sie Signierungsidentität auf Verteilung (Automatisch) fest.

  16. Wählen Sie für Bereitstellungsprofil das oben erstellte App Store-Bereitstellungsprofil aus.

    Die Bundlesignierungsoptionen Ihres Projekts sollten jetzt in etwa wie folgt aussehen:

    iOS Bundle Signing

  17. Klicken Sie auf OK, um die Änderungen an den Projekteigenschaften zu speichern.

Konfigurieren Ihrer App in iTunes Connect

iTunes Connect ist eine Suite von webbasierten Tools, mit denen Sie Ihre iOS-Anwendungen im App Store verwalten können. Ihre Xamarin.iOS-Anwendung muss ordnungsgemäß in iTunes Connect konfiguriert werden, bevor sie zur Überprüfung an Apple gesendet und im App Store freigegeben werden kann.

Im Leitfaden Konfigurieren einer App in iTunes Connect erfahren Sie, wie Sie dies durchführen können.

Erstellen und Übermitteln Ihrer App

Sobald Sie alle erforderlichen Buildeinstellungen vorgenommen haben und iTunes Connect auf Ihre Übermittlung wartet, können Sie Ihre App erstellen und an Apple übermitteln.

  1. Wählen Sie in Visual Studio für Mac die Buildkonfiguration Release und ein Gerät (keinen Simulator) aus, für das Sie den Build durchführen möchten.

    Build configuration and platform selection

  2. Wählen Sie aus dem Build-Menü die Option Archive for Publishing (Für Veröffentlichung archivieren):

  3. Sobald das Archiv erstellt wurde, wird die Archivansicht angezeigt. Klicken Sie auf Signieren und verteilen..., um den Veröffentlichungs-Assistenten zu öffnen.

    Screenshot of the Sign and Distribute button location in the Archives view.

    Hinweis

    Standardmäßig zeigt die Ansicht Archive nur die Archive für die geöffnete Projektmappe an. Aktivieren Sie das Kontrollkästchen Alle Archive anzeigen, um alle Projektmappen mit Archiven anzuzeigen. Es empfiehlt sich, alle Archive beizubehalten, damit die darin enthaltenen Debuginformationen verwendet werden können, um Absturzberichte bei Bedarf durch Symbole zu ersetzen.

  4. Wählen Sie als Verteilungskanal den App Store aus. Klicken Sie auf Weiter.

  5. Wählen Sie Upload als Ziel aus. Klicken Sie auf Weiter.

  6. Wählen Sie im Fenster Bereitstellungsprofil Ihrer Signierungsidentität, App und Ihr Bereitstellungsprofil aus. Klicken Sie auf Weiter.

    Screenshot of the Provisioning profile wizard page showing a valid signing identity, app, and provisioning profile selection.

  7. Wählen Sie im Fenster App Store Connect information (Informationen zu App Store Connect) im Menü einen Apple ID-Benutzernamen aus, und geben Sie ein App-spezifisches Kennwort ein. Klicken Sie auf Weiter.

    Screenshot of the App Store Connect information wizard page showing an Apple ID user name selected.

  8. Überprüfen Sie die Details Ihres Pakets, und klicken Sie auf Veröffentlichen. Nachdem Sie einen Speicherort für die IPA-Datei ausgewählt haben, wird Ihre App vom Assistenten in App Store Connect hochgeladen.

    Hinweis

    Es ist möglich, dass Apple Apps ablehnt, bei denen iTunesMetadata.plist in der IPA-Datei enthalten ist, wodurch es zu einem Fehler wie dem folgenden kommen kann:

    ERROR: ERROR ITMS-90047: "Disallowed paths ( "iTunesMetadata.plist" ) found at: Payload/iPhoneApp1.app"

    In diesem Post auf Xamarin Forums wird beschrieben, wie Sie diesen Fehler umgehen können.

Status in iTunes Connect

Melden Sie sich bei iTunes Connect an, und wählen Sie Ihre App aus, um den Status Ihrer Übermittlung einzusehen. Der Status sollte zunächst Waiting for Review (Überprüfung ausstehend) lauten, vorrübergehend kann er aber auch Upload Received (Upload eingegangen) lauten, wenn die Übermittlung verarbeitet wird.

Waiting For Review

Tipps und Tricks

Anpassen des IPA-Speicherorts

Die MSBuild-Eigenschaft IpaPackageDir ermöglicht das Anpassen des Ausgabespeicherorts der IPA-Datei. Wenn für einen benutzerdefinierten Speicherort IpaPackageDir festgelegt ist, wird die IPA-Datei an diesem Speicherort anstatt im Standardunterverzeichnis mit Zeitstempel abgelegt. Dies kann beim Erstellen von automatisierten Builds nützlich sein, die für eine korrekte Ausführung einen bestimmten Verzeichnispfad benötigen, wie beispielsweise für fortlaufende Integrationsbuilds (CI, Continuous Integration).

Die neue Eigenschaft kann auf unterschiedliche Weise verwendet werden. Für eine Ausgabe der IPA-Datei in das frühere Standardverzeichnis (wie in Xamarin.iOS 9.6 und früher) können Sie die IpaPackageDir-Eigenschaft z.B. mit einer der folgenden Methoden auf $(OutputPath) festlegen. Beide Methoden sind mit allen Unified API-Xamarin.iOS-Builds kompatibel. Hierzu zählen sowohl IDE-Builds als auch Befehlszeilenbuilds, die msbuild oder mdtool verwenden:

  • Die erste Möglichkeit besteht darin, die IpaPackageDir-Eigenschaft in einem <PropertyGroup>-Element in einer MSBuild-Datei festzulegen. Sie könnten z.B. die folgende <PropertyGroup> am Ende der CSPROJ-Datei des iOS-App-Projekts hinzufügen (unmittelbar vor dem </Project>-Endtag):

    <PropertyGroup>
      <IpaPackageDir>$(OutputPath)</IpaPackageDir>
    </PropertyGroup>
    
  • Eine bessere Möglichkeit ist das Hinzufügen eines <IpaPackageDir>-Elements am Ende der vorhandenen <PropertyGroup>, die der beim Erstellen der IPA-Datei verwendeten Konfiguration entspricht. Der Vorteil dieser Möglichkeit ist, dass das Projekt hier für die Kompatibilität mit einer zukünftigen Einstellung auf der Projekteigenschaftenseite der iOS-IPA-Optionen vorbereitet wird. Wenn Sie derzeit die Konfiguration Release|iPhone zum Erstellen der IPA-Datei verwenden, könnte die vollständige aktualisierte Eigenschaftengruppe etwa folgendermaßen aussehen:

    <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|iPhone'">
       <Optimize>true</Optimize>
       <OutputPath>bin\iPhone\Release</OutputPath>
       <ErrorReport>prompt</ErrorReport>
       <WarningLevel>4</WarningLevel>
       <ConsolePause>false</ConsolePause>
       <CodesignKey>iPhone Developer</CodesignKey>
       <MtouchUseSGen>true</MtouchUseSGen>
       <MtouchUseRefCounting>true</MtouchUseRefCounting>
       <MtouchFloat32>true</MtouchFloat32>
       <CodesignEntitlements>Entitlements.plist</CodesignEntitlements>
       <MtouchLink>SdkOnly</MtouchLink>
       <MtouchArch>ARMv7, ARM64</MtouchArch>
       <MtouchHttpClientHandler>HttpClientHandler</MtouchHttpClientHandler>
       <MtouchTlsProvider>Default</MtouchTlsProvider>
       <BuildIpa>true</BuildIpa>
       <IpaPackageDir>$(OutputPath)</IpaPackageDir>
    </PropertyGroup>
    

Eine alternative Methode für msbuild-Befehlszeilenbuilds ist das Hinzufügen eines /p:-Befehlszeilenarguments, um die IpaPackageDir-Eigenschaft festzulegen. Beachten Sie, dass msbuild in diesem Fall $()-Ausdrücke nicht erweitert, die in der Befehlszeile übergeben werden. Daher kann die $(OutputPath)-Syntax nicht verwendet werden. Geben Sie stattdessen einen vollständigen Pfadnamen an.

msbuild /p:Configuration="Release" /p:Platform="iPhone" /p:ServerAddress="192.168.1.3" /p:ServerUser="macuser" /p:IpaPackageDir="%USERPROFILE%\Builds" /t:Build SingleViewIphone1.sln

Unter Mac könnte es folgendermaßen aussehen:

msbuild /p:Configuration="Release" /p:Platform="iPhone" /p:IpaPackageDir="$HOME/Builds" /t:Build SingleViewIphone1.sln

Nachdem Ihr Verteilungsbuild erstellt und archiviert wurde, können Sie nun Ihre Anwendung an iTunes Connect übermitteln.

Zusammenfassung

In diesem Artikel wird die Konfiguration, das Erstellen und das Übermitteln einer iOS-App zum Veröffentlichen im App Store beschrieben.