Entwickeln von iOS-Apps

27. Februar 2018

Sie können mobile Apps für XenMobile mit der MDX-API aktivieren. In diesem Artikel wird beschrieben, wie Sie das MDX App SDK in Ihre App-Bibliothek integrieren und Ihre Apps testen, zertifizieren und veröffentlichen.

Verwendung des MDX App SDKs

Hier werden einige Beispiele zur Verwendung der APIs vorgestellt.

  • Festlegen von Einschränkungen für Apps

    Sie können den Zugriff auf bestimmte Features oder Aktionen für eine App basierend darauf steuern, ob API-Aufrufe darauf hinweisen, dass die App verwaltet oder umschlossen ist. Beispielsweise können Sie den Zugriff auf alle Features und Aktionen zulassen, sofern eine App nicht verwaltet oder umschlossen ist. Ist eine App umschlossen aber nicht verwaltet, können Sie den Zugriff auf bestimmte Features oder Aktionen einschränken. Für umschlossene und verwaltete Apps können Sie zusätzliche Einschränkungen festlegen.

  • Ausführen von Aktionen basierend auf XenMobile-Richtlinieneinstellungen

    Angenommen, Sie möchten, dass Benutzern eine Benachrichtigung angezeigt wird, wenn ein XenMobile-Administrator die Richtlinie “WiFi erforderlich” aktiviert. Das bedeutet, dass die App nur im Netzwerk Ihres Unternehmens ausgeführt werden darf. Sie können die API die Richtlinieneinstellung prüfen lassen und dann Ihre Codeänderungen auf dem Richtlinienwert basierend programmieren.

  • Ausführen von Aktionen basierend auf der benutzerdefinierten Richtlinien

    Sie können die APIs zum Lesen benutzerdefinierter Richtlinien in Ihren Apps verwenden. Angenommen, XenMobile-Administratoren sollen die Berechtigung erhalten, eine Benachrichtigung in der App anzuzeigen. Dazu erstellen Sie eine benutzerdefinierte Richtlinie, die leer ist oder eine Systemmeldung enthält, die von einem Administrator in der XenMobile-Konsole bereitgestellt wird. Wird die App verwaltet, kann sie erkennen, wenn ein XenMobile-Administrator den Richtlinienwert ändert. Enthält der Richtlinienwert eine Nachricht, wird diese von der App angezeigt.

Informationen zu API-Definitionen finden Sie unter MDX-API für iOS.

Integrieren des SDKs in die App Bibliothek

Zum Hinzufügen des MDX App SDKs zu Ihren iOS-Apps verbinden Sie das SDK-Framework wie nachfolgend beschrieben mit Ihrer App. Das MDX App SDK für iOS basiert auf Objective-C und besteht aus einer Sammlung von Headerdateien und einer statischen Bibliothek.

  1. Wenn Sie das aktuelle MDX Toolkit noch nicht installiert haben, tun Sie dies jetzt.

    1. Melden Sie sich bei der XenMobile-Downloadseite an.

    2. Erweitern Sie XenMobile Apps and MDX Toolkit.

    3. Suchen Sie die gewünschte MDX Toolkit-Version und klicken Sie auf deren Link, um den Download auszuführen.

    4. Open MDXToolkit.mpkg with the macOS Finder tool on macOS 10.9.4 or later and Xcode 7 or later.

      Für Xcode 8 und höher besteht ein bekanntes Problem, bei dem die Projektdatei bereinigt werden muss, bevor die App per Push auf dem Gerät bereitgestellt werden kann.

      Der Installationspfad ist Applications/Citrix/MDXToolkit.

      ![Installationsverzeichnis](.(/en-us/mdx-toolkit/(/en-us/mdx-toolkit/10/media/xmob-mdx-install-location.png)

    Die MDX App SDK-Dateien sind in Applications/Citrix/MDXToolkit/data/MDXSDK.

    Integrieren Sie nach der Installation des MDX Toolkits das MDX Framework in Ihr Xcode-Projekt.

  2. Fügen Sie dem Apple Xcode-Projekt den Ordner “data//MDXSDK” hinzu. Ziehen Sie hierfür den Ordner mit der Maus auf das Xcode-Projekt.

  3. Ändern Sie wie im folgenden Beispiel eine Codezeile in der vorkompilierten Headerdatei im App-Projekt zum Importieren von MDX.h aus MDX.framework.

        #ifdef__OBJC__
        _
        //import MDX extensions
        #import <AVFoundation/AVFoundation.h>
        #import <SystemConfiguration/SCNetworkReachability.h>
        #import <MDX/MDX.h>
        #endif
    

    Wenn Sie nur die Nur-Netzwerk-Version des MDX-Frameworks einschließen, sollten Sie sie Folgendes ersetzen

    #import <MDX/MDX.h.>
    

    Mit

    #import <MDXNetworkOnly/MDXNetworkOnly.h>
    

    Wenn eine Anwendung umschlossen wird, die explizit einen Aufruf an eine API ausstellt, die vom MDX SDK-Framework bereitgestellt wird, sind die Zeilen MDX.h und MDXNetworkOnly.h optional.

    Wenn eine Anwendung explizit einen MDX SDK-API-Aufruf ausgibt, muss sie beim Erstellen der Anwendung mit der MDX.framework- oder MDXNetworkOnly.framework-Binärdatei verknüpft und eingebettet werden.

    Eine prebuilt Unternehmensanwendung von einem Drittanbieter, die vom MDX-Toolkit umschlossen wird, erfordert keine Buildänderungen, da sie keine expliziten MDX-SDK-API-Aufrufe durchführt.

    Integrieren Sie nach der Installation des MDX Toolkits das MDX-Framework in Ihr Xcode-Projekt.

  4. Ziehen Sie data/MDXSDK/MDX.framework (oder data/MDXSDK/MDXNetworkOnly.framework) in den Bereich “Embedded Binaries” unter “General properties” für den Arbeitsbereich der Anwendung. Auf diese Weise fügen Sie das dynamische Framework den Frameworks hinzu, die im Anwendungsbundle enthalten sind, das mit der Anwendung installiert wurde. 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.

  1. Ziehen Sie data/MDXSDK/CitrixLogger.framework in den Bereich “Embedded Binaries” unter “General properties” für den Arbeitsbereich der Anwendung.

  2. Fügen Sie ein Ausführenskript hinzu, um Architekturen aus eingebetteten Frameworks zu entfernen, die nicht in der Liste der gültigen Xcode-Architekturen aufgeführt sind. Dies entspricht der Apple-Anforderung, dass eingebettete Frameworks keine iOS-Simulatorarchitekturen für Apple Store-Anwendungsbuilds enthalten dürfen. Dieses Skript verarbeitet automatisch alle Buildziele, sowohl Nicht-Apple Store und Apple Store.

    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
    
  3. Führen Sie ein Skript aus, um die SDKPrep-Befehlszeile hinzuzufügen.

    • Wählen Sie Ihr Projekt in Xcode und wählen Sie dann die Registerkarte BuildPhases. Klicken Sie oben links auf das Pluszeichen (+) und klicken Sie dann auf New Run Script Phase.
    • Öffnen Sie das neue Ausführungsskript und tippen Sie den unten aufgeführten Text in das Feld Script ein. Ändern Sie die Variablen PACKAGEID, APPTYPE, STOREURL und POLICYFILE gemäß den Werten für Ihre App. PACKAGEID ist ein eindeutiger Bezeichner für die App, normalerweise die UUID. Dies ist nicht erforderlich, da das MDX Toolkit eine eindeutige Paket-ID generiert, wenn die Anwendung erstellt wird. Wenn Sie eine Paket-ID angeben, stellen Sie sicher, dass diese für jede neue Version der App, die Sie mit diesem Befehl umschließen, eindeutig ist.
    • Wenn es sich um eine Unternehmensapp handelt, verwenden Sie den Standardparameter -Apptype Enterprise. Für Apps unabhängiger Softwarehersteller können Sie die Werte “Premium” oder “General” verwenden.

    Hinweis:

    Für APPTYPE werden die Schlüsselwörter “Enterprise”, “Premium” und “General” unterstützt.

        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}"
    

    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}"
    
    Parameter Beschreibung
    -in file name Pfad der von Xcode generierten App-Datei. Das MDX Toolkit bettet MDX-spezifische Ressourcen in diese Datei ein.
    -out file name Zielpfad für die MDX-Datei. Verwenden Sie diese Datei zur Veröffentlichung auf XenMobile Server.
    -storeURl URL In die MDX-Datei eingebettete App-Store-URL für die App. Sie können diesen Parameter nicht zusammen mit “-StoreURL” verwenden.
    -appType keyword Gültige Schlüsselwörter sind”Enterprise”, “Premium” und “General”.
    -packageId UUID Eindeutige Paket-ID für die App (normalerweise eine UUID). Nicht erforderlich, da das MDX Toolkit eine eindeutige Paket-ID generiert, wenn die Anwendung erstellt wird. Wenn Sie eine Paket-ID angeben, stellen Sie sicher, dass diese für jede neue Version der App, die Sie mit diesem Befehl umschließen, eindeutig ist. Jeden Provisioningprofil ist eine eindeutige ID zugeordnet. Wenn Sie das Provisioningprofil (.mobileprovision) in einem Texteditor öffnen, sehen Sie den folgenden XML-Tag mit der UUID. <key>UUID</key> <string>4e38fb18-88b0-4806-acfa-e08bf38ec48d</string>
    -policyXML file name Pfad der MDX-Richtlinienvorlagendatei für die App.
    -entitlements file name Erforderlich (eingeführt in Version 10.3.10). Pfad der Berechtigungsdatei für die App. Das MDX Toolkit fügt dieser Datei einen Eintrag der Schlüsselbundverwaltungsgruppe für com.citrix.mdx hinzu. Dieser wird von der App zur gemeinsamen Verwendung von Schlüsseln mit anderen MDX-Apps benötigt, die mit dem gleichen Zertifikat und dem iOS-Schlüsselbund signiert wurden.
    -appIdPrefix prefix App-ID-Präfix: die Team-ID Ihres Apple Developer-Kontos
  4. Kompilieren Sie das Projekt und generieren Sie die App-Binärdateien.

    • Erstellen Sie die App in Xcode und vergewissern Sie sich, dass der Build ordnungsgemäß erstellt wird.
    • Archivieren Sie die App, indem Sie Product > Archive wählen.
    • Wenn die App archiviert ist, öffnet sich Xcode Organizer automatisch.
    • Wählen Sie in Organizer den archivierten Build und klicken Sie auf Export.
    • Wählen Sie die geeignete Exportmethode und klicken Sie auf “Next”.

    Folgen Sie den Anweisungen zum Exportieren der App in eine IPA-Datei.

  5. Kompilieren und archivieren Sie das Projekt, um das App-Paket zu erstellen, welches das eingebettete MDX-Framework enthält (IPA-Paket). Xcode generiert eine zugehörige MDX-Datei, die Sie auf XenMobile Server hochladen. Wenn nach Xcode-Build und -Archivierung das IPA-Paket erstellt wird, führen Sie den Befehl SetInfo an der MDX-Datei aus. Führen Sie zudem die Befehlsoption -embedBundle aus, um die IPA-Datei in die MDX-Datei einzufügen. Anschließend können Sie die App in XenMobile 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"
    
  6. Sie können die App auch direkt an den App-Store oder TestFlight übermitteln, sofern Sie die App für die Bereitstellung über die iTunes Connect-Website konfiguriert haben.

Überlegungen zu App-Upgrades

Die XenMobile-Software kann sich von Version zu Version erheblich ändern. Um in den Genuss der neuesten Features und Fehlerbehebungen zu kommen, müssen Sie Ihre Apps mit der jeweils aktuellen Version des MDX Toolkits umschließen. Umschließen Sie die ursprüngliche IPA- bzw. APK-Datei und nicht die geänderte, zuvor mit dem MDX Toolkit generierte Datei.

Verwenden Sie die entsprechende Version des MDX App SDKs.

Entwickeln von iOS-Apps