TestFlight & Titanium Mobile: Einfaches Testen von iOS-Apps

In den letzten Monaten habe ich eine native iOS-App mit dem Titanium Mobile SDK erstellt. Ab einem gewissen Zeitpunkt wollte ich die App einigen Freunden zum Testen und für das Sammeln von Feedback zur Verfügung stellen. Leider macht Apple einem hier das Leben nicht gerade einfach, es sei den man hat das iOS Developer Enterprise Program. Auf der Suche nach Alternativen bin ich auf TestFlight gestoßen, welches ich bis heute sehr zufrieden einsetze.

Was ist TestFlight?

Der kostenlose Service ermöglicht es, iOS Builds gleichzeitig an mehrere Personen oder Teams zu verteilen, um Feedback zu sammeln bevor die App im App Store landet. Sobald man bei TestFlight einen neuen Build hochlädt, erhalten registrierte Nutzer automatisch eine E-Mail mit einem Link zum bequemen Installieren bzw. Aktualisieren der App.

TestFlight bietet noch weitere Funktionen wie Tracking, In-App-Fragen, Remote-Logging, In-App-Updates und den Zugriff auf Crash-Logs an. Dieser Artikel wird sich jedoch zunächst auf den Einsatz von TestFlight in Verbindung mit Titanium Mobile konzentrieren.

So funktioniert es

Da Sie weiter lesen, gehe ich davon aus, dass Sie einen iOS-Developer-Account haben und mit der Erstellung von “iOS Provisioning Profilen” vertraut sind. Der Ablauf ist initial etwas komplex und aufwendig, danach aber recht einfach. Im Internet hatte ich einige Anleitungen gefunden, wie TestFlight in Kombination mit Titanium Mobile verwendet werden kann. Allerdings waren diese entweder veraltet, umständlich oder lückenhaft. Daher werde ich das Vorgehen Schritt für Schritt erläutern.

1. TestFlight einrichten

  • Registrieren Sie sich bei TestFlight als Developer.
  • Legen Sie eine App sowie ein Team an.
  • Sie können nun Nutzer per E-Mail einladen oder möglichen Interessenten einen Registrierungslink zusenden. Ihre Nutzer können Sie wiederum auf mehrere Teams verteilen. Beispielsweise ein Team “Kunde” und ein Team “Entwickler”.
  • Die Nutzer registrieren sich und fügen ein oder mehrere Geräte hinzu. Auf dieser FAQ-Seite ist der Vorgang bebildert. Wichtig ist, dass Sie die Schritte auf einem iOS-Gerät ausführen. Das Hinzufügen von neuen Geräten ist nur über den Safari-Browser möglich.
  • Sobald ein Nutzer ein Gerät registriert, erhalten Sie eine E-Mail, die dessen Namen und die UDID seines Gerätes enthält. Die UDID ist ein Identifikationscode, der ein Gerät eindeutig identifiziert.

2. Provisioning-Profile aktualisieren oder einrichten

  • Loggen Sie sich im iOS Provisioning Portal ein.
  • Fügen Sie dort jedes zuvor registrierte Gerät manuell oder stapelweise hinzu. In TestFlight lassen sich über den Menüpunkt “People” die Daten hierfür exportieren. Wichtig: Ein Standard-iOS-Developer-Account ist auf maximal 100 Geräte beschränkt.
    iOS Apps - Registering a New Device or Multiple Devices
  • Legen Sie ein “Distribution Ad Hoc Provisioning Profil” an. Achten Sie dabei auf einen aussagekräftigen Namen und dass es sich nicht um ein “Development Profil” oder ein “Distribution App Store Profil” handelt. Nachdem Sie eine App und ein Zertifikat ausgewählt haben, können Sie alle zuvor hinzugefügten Geräte auswählen und das Profil generieren.TestFlight - iOS Ad Hoc Profil generieren
  • Das erstellte Profil müssen Sie nun herunterladen und mittels eines Doppelklicks in Xcode installieren.
  • Sobald sich neue Nutzer über TestFlight registrieren, müssen Sie diese Schritte wiederholen und mit dem aktualisierten Profil einen neuen Build erstellen.

3. Einen neuen Build erstellen

  • Klicken Sie in Titanium auf den Button “Publish” und wählen Sie den Punkt “Distribute – Ad Hoc/Enterprise”.
    Titanium Mobile - Distribute iOS App
  • Wählen Sie Ihre Zertifikate aus sowie das zuvor erstellte “Distribution – Ad Hoc Profil”.
    Titanium Mobile - Distribute iOS Ad Hoc
  • Bestätigen Sie den Vorgang mit dem Button “Publish”.
  • Im Anschluss befindet sich im ausgewählten Ordner eine Datei namens IhrAppName.ipa. Diesen Build können Sie nun in TestFlight hochladen.

4. Einen neuen Build verteilen

  • Laden Sie den in Schritt 3 generierten Build in TestFlight hoch. Damit ist die Datei mit der Endung .ipa gemeint. Ich empfehle Ihnen, im Upload-Fenster zusätzlich einige Release-Notes anzugeben.
    TestFlight - Upload a new build
  • Bestimmen Sie, welche Nutzer das Update erhalten, und ob diese mit einer E-Mail über das Update benachrichtigt werden sollen.
  • Die Nutzer erhalten ggf. die E-Mail und können durch Betätigen eines Links die App aktualisieren oder erstmalig installieren. Alternativ können sich die Nutzer in TestFlight einloggen und von dort aus den neuesten Build installieren.

Einrichten von Continuous- oder Nightly-Builds

Während die Schritte 1 und 2 im Allgemeinen nur einmalig anfallen, müssen Sie die Schritte 3 und 4 regelmäßig wiederholen: Immer dann, wenn Sie eine aktualisierte Version verteilen möchten. Mein Ziel war es daher, diesen Schritt zu automatisieren. Glücklicherweise ist das sehr einfach zu bewerkstelligen.

Erstellen eines neuen Builds

Titanium bietet ein Kommandozeilenwerkzeug namens Titanium CLI an, um unter anderem neue Builds erstellen zu können. Ein Beispielaufruf sieht wie folgt aus:

titanium build --platform ios
--project-dir .
--force
--device-family universal
--target dist-adhoc
--pp-uuid "A41B4FCF-2F8E-4E17-B962-D1349649EBD3"
--distribution-name "Thomas Steur"
--output-dir /Users/thomassteur/

Der Parameter “pp-uuid” steht für die UUID des Ad Hoc Provisioning Profils, nicht für die eines Gerätes. Diese ID erhalten Sie beispielsweise, indem Sie zuerst eine ungültige UUID angeben. Das Titanium CLI wird Ihnen daraufhin alle UUIDs auflisten. Der Parameter “distribution-name” bestimmt, welches iOS-Distribution-Zertifikat verwendet werden soll. Vermutlich ist das einfach Ihr Name. Wenn Sie sich unsicher sind, klicken Sie in Titanium einfach auf “Publish”. Der Wizard zeigt Ihnen den richtigen Wert.

Der Vorgang dauert je nach Rechenleistung bis zu einer Minute. Danach erhalten Sie im angegeben Ausgabe-Ordner eine .ipa-Datei.

Verteilen des Builds

TestFlight verfügt über ein Upload-API mit dem Sie den zuvor generierten Build automatisiert hochladen können. Ein Beispiel-Request sieht wie folgt aus:

curl http://testflightapp.com/api/builds.json
-F file=@appName.ipa
-F api_token='api_token'
-F team_token='team_token'
-F notes='Release notes'
-F notify=True
-F distribution_lists='Internal, QA'

Das war es auch schon. Alle Personen, die zu einer der angegebenen Distribution-List gehören, werden den aktualisierten Build sofort erhalten. Die Release-Notes befülle ich mit den Commit-Nachrichten, die seit dem letzten Build angefallen sind. Ich selber bevorzuge derzeit lediglich Nightly-Builds, die nur dann gemacht werden, wenn eine Veränderung im Git-Repository stattgefunden hat. Damit die Nutzer nicht mit E-Mails bombardiert werden, habe ich die Benachrichtungsfunktion deaktiviert. Gleichzeitig erlaubt es den interessierten Nutzern, stets die neuesten Updates auszuprobieren. Benachrichtigungen aktiviere ich nur bei größeren, bzw. wichtigen Änderungen, oder wenn ich schnell Feedback benötige.

 

Für neue Blogupdates anmelden:


Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.