iOS-Apps entwickeln
Sie können die MDX-API verwenden, um Ihre mobilen Apps für Citrix Endpoint Management zu aktivieren. Dieser Artikel beschreibt, wie Sie das MDX App SDK in Ihre App-Bibliothek integrieren und welche Schritte zum Testen, Zertifizieren und Veröffentlichen Ihrer Apps erforderlich sind.
-
So verwenden Sie das MDX App SDK
-
Hier sind einige Beispiele, wie Sie die APIs verwenden könnten.
-
Einschränkungen für Apps festlegen
Sie können steuern, wann Ihre App den Zugriff auf bestimmte Funktionen oder Aktionen erlaubt, basierend darauf, ob API-Aufrufe anzeigen, dass die App verwaltet oder gewrappt ist. Wenn eine App beispielsweise nicht verwaltet oder gewrappt ist, könnten Sie einem Benutzer den Zugriff auf alle Funktionen und Aktionen erlauben. Wenn eine App gewrappt, aber nicht verwaltet ist, könnten Sie bestimmte Funktionen oder Aktionen einschränken. Wenn eine App gewrappt und verwaltet ist, könnten Sie zusätzliche Einschränkungen für die App festlegen.
- Aktionen basierend auf Citrix Endpoint Management-Richtlinieneinstellungen ausführen
Angenommen, Sie möchten Benutzern eine Benachrichtigung anzeigen, wenn ein Citrix Endpoint Management-Administrator die Richtlinie „WLAN erforderlich“ auf „Ein“ setzt. Das bedeutet, dass die App nur innerhalb des Netzwerks Ihrer Organisation ausgeführt werden darf. Sie können die API verwenden, um die Richtlinieneinstellung abzufragen und Ihre Codeänderungen dann auf dem Richtlinienwert basieren.
- Aktionen basierend auf benutzerdefinierten Richtlinien ausführen
Sie können die APIs verwenden, um benutzerdefinierte Richtlinien in Ihren Apps zu lesen. Angenommen, Sie möchten Citrix Endpoint Management-Administratoren ermöglichen, eine Benachrichtigung in der App anzuzeigen. Erstellen Sie dazu eine benutzerdefinierte Richtlinie, die leer ist oder eine Systemnachricht enthält, die von einem Administrator in der Citrix Endpoint Management-Konsole bereitgestellt wird. Wenn Ihre App verwaltet wird, kann sie erkennen, wenn der Citrix Endpoint Management-Administrator den Richtlinienwert ändert. Wenn der Richtlinienwert eine Nachricht enthält, zeigt Ihre App die Benachrichtigung an.
API-Definitionen finden Sie unter API für iOS.
Integrieren des SDK in Ihre App-Bibliothek
Um das MDX App SDK zu Ihren iOS-Apps hinzuzufügen, verknüpfen Sie das SDK-Framework wie in diesem Abschnitt beschrieben mit Ihrer App. Das MDX App SDK für iOS, basierend auf Objective-C, ist eine Sammlung von Header-Dateien und einer statischen Bibliothek.
-
Falls Sie das neueste MDX Toolkit noch nicht installiert haben, tun Sie dies jetzt.
-
Melden Sie sich auf der Citrix Endpoint Management-Downloads-Seite an.
-
Erweitern Sie XenMobile® Apps und MDX Toolkit.
-
Suchen Sie die MDX Toolkit-Version, die Sie installieren möchten, und klicken Sie auf den Link, um den Download zu starten.
-
Öffnen Sie MDXToolkit.mpkg mit dem macOS Finder-Tool unter macOS 10.9.4 oder höher und Xcode 7 oder höher.
Für Xcode 8 und höher gibt es ein bekanntes Problem, bei dem die Projektdatei bereinigt werden muss, bevor die App auf das Gerät übertragen wird.
Der Installationspfad ist Applications/Citrix/MDXToolkit.

Die MDX App SDK-Dateien befinden sich in Applications/Citrix/MDXToolkit/data/MDXSDK.
Nach der Installation des MDX Toolkits auf Ihrem Computer integrieren Sie das MDX Framework in Ihr Xcode-Projekt.
-
-
Fügen Sie den Ordner data/MDXSDK zum Apple Xcode-Projekt hinzu. Dazu können Sie diesen Ordner in das Xcode-Projekt ziehen.
-
Überarbeiten Sie eine Codezeile in der vorkompilierten Header-Datei im App-Projekt, um MDX.h aus MDX.framework zu importieren, wie im folgenden Beispiel gezeigt.
#ifdef__OBJC__ _ //import MDX extensions #import <AVFoundation/AVFoundation.h> #import <SystemConfiguration/SCNetworkReachability.h> #import <MDX/MDX.h> #endif <!--NeedCopy-->Wenn Sie nur die Network Only-Version des MDX-Frameworks einschließen, sollten Sie ersetzen
#import <MDX/MDX.h.> <!--NeedCopy-->Durch
#import <MDXNetworkOnly/MDXNetworkOnly.h> <!--NeedCopy-->Wenn eine Anwendung gewrappt wird, die explizit einen Aufruf an eine vom MDX SDK-Framework bereitgestellte API ausführt, sind die Zeilen MDX.h und MDXNetworkOnly.h optional.
-
Wenn eine Anwendung explizit einen MDX SDK API-Aufruf ausführt, muss sie mit dem MDX.framework- oder MDXNetworkOnly.framework-Binärpaket verknüpft und dieses eingebettet werden, wenn die Anwendung erstellt wird.
-
Eine vorgefertigte Drittanbieter-Unternehmensanwendung, die vom MDX Toolkit gewrappt wird, erfordert keine Build-Modifikationen, da sie keine expliziten MDX SDK API-Aufrufe ausführt.
Nach der Installation des MDX Toolkits auf Ihrem Computer integrieren Sie das MDX Framework in Ihr Xcode-Projekt.
-
-
Ziehen Sie data/MDXSDK/MDX.framework (oder data/MDXSDK/MDXNetworkOnly.framework) in den Abschnitt „Embedded Binaries“ des Bereichs „General properties“ für den Anwendungsarbeitsbereich. Dadurch fügen Sie dieses dynamische Framework zu den Frameworks hinzu, die im Anwendungsbundle enthalten sind, das mit der Anwendung installiert wird. Darüber hinaus wird das Framework automatisch zur Liste der Frameworks hinzugefügt, die mit der Anwendung verknüpft sind.
Sie sollten nur ein MDX-Framework hinzufügen.
-
Ziehen Sie data/MDXSDK/CitrixLogger.framework in den Abschnitt „Embedded Binaries“ des Bereichs „General properties“ für den Anwendungsarbeitsbereich.
-
Fügen Sie ein Run-Skript hinzu, um Architekturen aus eingebetteten Frameworks zu entfernen, die nicht in der Liste der gültigen Xcode-Architekturen erscheinen. Dies adressiert die Apple-Anforderung, dass eingebettete Frameworks keine iOS Simulator-Architekturen für Apple Store-Anwendungs-Builds enthalten dürfen. Dieses Skript verarbeitet automatisch alle Build-Ziele, sowohl Nicht-Apple Store- als auch Apple Store-Builds.
echo "Strip unnecessary archs from Embedded Frameworks" cd "${BUILT_PRODUCTS_DIR}/${FRAMEWORKS_FOLDER_PATH}" for file in $(find . -type f -perm +111); do if ! [[ "$(file "$file")" == *"dynamically linked shared library"* ]]; then continue fi # Get architectures for current file archs="$(lipo -info "${file}" | rev | cut -d ':' -f1 | rev)" # Strip any archs from frameworks not valid for current app build for arch in $archs; do if ! [[ "${VALID_ARCHS}" == *"$arch"* ]]; then lipo -remove "$arch" -output "$file" "$file" || exit 1 fi done done <!--NeedCopy-->-
- Fügen Sie ein Run-Skript hinzu, um die SDKPrep-Befehlszeile hinzuzufügen.
- Wählen Sie Ihr Projekt in Xcode aus und klicken Sie dann auf die Registerkarte Build Phases. Klicken Sie auf das Pluszeichen (+)-Symbol in der oberen linken Ecke und dann auf New Run Script Phase.
- Öffnen Sie das neue Run Script und geben Sie dann den folgenden Text in das Feld Script ein. Stellen Sie sicher, dass Sie die Variablen PACKAGEID, APPTYPE, STOREURL und POLICYFILE auf Werte ändern, die für Ihre App zutreffen. Die PACKAGEID ist eine eindeutige Kennung für Ihre App, typischerweise eine UUID. Dies ist nicht zwingend erforderlich, da das MDX Toolkit bei jedem Build der Anwendung eine eindeutige packageID generiert. Wenn Sie eine packageID angeben, stellen Sie sicher, dass diese für jede neue App-Version, die Sie mit diesem Befehl wrappen, eindeutig ist.
- Wenn diese App eine Enterprise-App ist, verwenden Sie den Parameter -Apptype Enterprise, der der Standardwert ist. Für ISV-Apps können Sie die Werte Premium oder General verwenden.
Hinweis:
Die unterstützten Schlüsselwörter für APPTYPE sind Enterprise, Premium und General.
export PACKAGEID="your-project-PackageID" export APPTYPE="keyword" export STOREURL="http://your-store-URL" export DATE=`date +%Y-%m-%d_%H-%M-%S` export POLICYFILE=${SRCROOT}/${EXECUTABLE_NAME}/${EXECUTABLE_NAME}_policy_metadata.xml /Applications/Citrix/MDXToolkit/CGAppCLPrepTool SdkPrep -in "${CODESIGNING_FOLDER_PATH}" -out "/Users/<UserName>/Downloads/${EXECUTABLE_NAME}_${DATE}.mdx" -storeUrl "${STOREURL}" -appIdPrefix "ABCDEFGH" -packageId "${PACKAGEID}" -policyXML "${POLICYFILE}" -appType "${APPTYPE}" -entitlements "${CODE_SIGN_ENTITLEMENTS}" <!--NeedCopy-->Beispiel:
export PACKAGEID="a96d6ed5-6632-4739-b9b6-9ad9d5600732" export APPTYPE="Enterprise export STOREURL="http://example.com/12345" export DATE=`date +%Y-%m-%d_%H-%M-%S` export POLICYFILE=${SRCROOT}/${EXECUTABLE_NAME}/${EXECUTABLE_NAME}_policy_metadata.xml /Applications/Citrix/MDXToolkit/CGAppCLPrepTool SdkPrep -in "${CODESIGNING_FOLDER_PATH}" -out "/Users/<UserName>/Downloads/${EXECUTABLE_NAME}_${DATE}.mdx" -storeUrl "${STOREURL}" -appIdPrefix "ABCDEFGH" -packageId "${PACKAGEID}" -policyXML "${POLICYFILE}" -appType "${APPTYPE}" -entitlements "${CODE_SIGN_ENTITLEMENTS}" <!--NeedCopy-->Parameter Beschreibung -in Dateiname Pfad zur von Xcode generierten .app-Datei. Das MDX Toolkit bettet MDX-spezifische Ressourcen in diese Datei ein. -out Dateiname Zielpfad für die .mdx-Datei. Verwenden Sie diese Datei, um die App auf dem Citrix Endpoint Management-Server zu veröffentlichen. -storeURl URL App Store-URL für die App, eingebettet in die .mdx-Datei. Dieser Parameter kann nicht mit -StoreURL verwendet werden. -appType Schlüsselwort Schlüsselwörter sind „Enterprise“, „Premium“ und „General“. -packageId UUID Die eindeutige Paket-ID für diese App, typischerweise eine UUID. Nicht zwingend erforderlich, da das MDX Toolkit bei jedem Build der Anwendung eine eindeutige packageID generiert. Wenn Sie eine packageId angeben, stellen Sie sicher, dass diese für jede neue App-Version, die Sie mit diesem Befehl wrappen, eindeutig ist. Eine eindeutige ID ist mit jedem Bereitstellungsprofil verknüpft. Wenn Sie das Bereitstellungsprofil (.mobileprovision) in einem Texteditor öffnen, sehen Sie das unten stehende XML-Tag mit der UUID. <key>UUID</key> <string>4e38fb18-88b0-4806-acfa-e08bf38ec48d</string>-policyXML Dateiname Pfad zur MDX-Richtlinienvorlagendatei für Ihre App. -entitlements Dateiname Obligatorisch (eingeführt in Version 10.3.10). Pfad zur Entitlements-Datei für die App. Das MDX Toolkit fügt dieser Datei einen Keychain-Zugriffsgruppeneintrag für com.citrix.mdx hinzu. Dies ist erforderlich, damit Ihre App Geheimnisse mit anderen MDX-Apps teilen kann, die mit demselben Zertifikat signiert sind, unter Verwendung des iOS-Keychains. -appIdPrefix Präfix Anwendungs-ID-Präfix – die Team-ID, die Ihrem Apple Developer-Konto zugeordnet ist. -
-
Kompilieren Sie Ihr Projekt und generieren Sie die App-Binärdateien.
- Erstellen Sie Ihre App in Xcode und vergewissern Sie sich, dass sie korrekt erstellt wird.
- Archivieren Sie Ihre App, indem Sie Product > Archive auswählen.
- Der Xcode Organizer wird nach der Archivierung Ihrer App automatisch geöffnet.
- Wählen Sie Ihren archivierten Build im Organizer aus und klicken Sie dann auf Exportieren.
- Wählen Sie die entsprechende Exportmethode aus und klicken Sie dann auf Weiter.
Befolgen Sie die Anweisungen, um Ihre App in eine IPA-Datei zu exportieren.
-
Kompilieren und archivieren Sie das Projekt, um das App-Bundle zu generieren, das das eingebettete MDX Framework (das .ipa-Paket) enthält. Xcode generiert eine entsprechende MDX-Datei, die Sie auf den Citrix Endpoint Management-Server hochladen. Nachdem die Xcode-Build- und Archivierungsschritte das IPA-Bundle erstellt haben, führen Sie den Befehl SetInfo für die MDX-Datei aus. Führen Sie auch die Option -embedBundle aus, um die endgültige IPA-Datei in die MDX-Datei einzufügen. Danach können Sie die App in Citrix Endpoint Management hochladen.
/Applications/Citrix/MDXToolkit/CGAppCLPrepTool SdkPrep -in "${CODESIGNING_FOLDER_PATH}" -out "/Users/<UserName>/Downloads/${EXECUTABLE_NAME}_${DATE}.mdx" " -embedBundle "/Users/deva/Desktop/{EXECUTABLE_NAME}.ipa" <!--NeedCopy--> -
Wenn Sie die App für die Verteilung über die iTunes Connect-Website konfiguriert haben, können Sie sie auch direkt an den App Store oder TestFlight übermitteln.
Überlegungen zum Upgrade von Apps
Die Citrix Endpoint Management-Software kann sich zwischen den Releases erheblich ändern. Um die neuesten Funktionen und Fehlerbehebungen nutzen zu können, müssen Sie die neueste Version des MDX Toolkit verwenden, um Ihre App zu wrappen. Achten Sie darauf, Ihre ursprüngliche .ipa- oder .apk-Datei zu wrappen, nicht die zuvor vom MDX Toolkit generierte modifizierte Datei.
Stellen Sie sicher, dass Sie die entsprechende Version des MDX App SDK verwenden.