Développement d’applications iOS

27 février 2018

Vous pouvez utiliser l’API Worx pour activer vos applications mobiles pour XenMobile. Cet article explique comment intégrer le SDK Worx App à votre bibliothèque d’applications et les étapes requises pour tester, certifier et publier vos applications.

Comment utiliser le SDK Worx App

Voici quelques exemples d’utilisation de l’API.

  • Placer des restrictions sur les applications

    Vous pouvez contrôler quand votre application autorise l’accès à certaines fonctionnalités ou actions selon que les appels API indiquent que l’application est gérée ou encapsulée. Par exemple, si une application n’est pas gérée ou encapsulée, vous pouvez permettre à un utilisateur d’accéder à toutes les fonctionnalités et actions. Si une application est encapsulée, mais non gérée, vous pouvez restreindre certaines fonctionnalités ou actions. Si une application est encapsulée et gérée, vous pouvez placer des restrictions supplémentaires sur l’application.

  • Effectuer des actions basées sur les paramètres de stratégie XenMobile

    Supposons que vous souhaitez afficher une notification pour les utilisateurs si un administrateur XenMobile définit la stratégie Exiger Wi-Fi stratégie sur Activé. Cela signifie que l’application est autorisée à être exécutée à l’intérieur du réseau de votre organisation. Vous pouvez utiliser l’API pour rechercher le paramètre de stratégie et baser les modifications de votre code sur la valeur de stratégie.

  • Effectuer des actions basées sur des stratégies personnalisées

    Vous pouvez utiliser l’API pour lire des stratégies personnalisées dans vos applications. Par exemple, supposons que vous voulez autoriser les administrateurs XenMobile à afficher une notification dans l’application. Pour ce faire, créez une stratégie personnalisée qui est vide par défaut ou contient un message système fourni par un administrateur dans la console XenMobile. Si l’application est gérée, elle peut détecter lorsque l’administrateur XenMobile modifie la valeur de stratégie. Si la valeur de stratégie contient un message, votre application affiche la notification.

Pour les définitions de l’API, consultez la section API Worx pour iOS.

Intégration du SDK dans votre bibliothèque d’applications

Pour ajouter le SDK Worx App à vos applications iOS, liez l’infrastructure SDK à votre application, comme décrit dans cette section. Le SDK Worx App pour iOS, basé sur Objective-C, est une série de fichiers d’en-tête et une bibliothèque statiques.

  1. Si vous n’avez pas encore installé la dernière version du MDX Toolkit, faites-le maintenant.

    1. Ouvrez une session sur la page des téléchargements XenMobile.

    2. Développez Applications XenMobile et MDX Toolkit.

    3. Recherchez la version de MDX Toolkit que vous souhaitez installer, puis cliquez sur le lien pour lancer le téléchargement.

    4. Ouvrez MDXToolkit.mpkg avec l’outil Finder sur macOS X 10.9.4 ou version ultérieure et Xcode 7 ou version ultérieure.

      Pour Xcode 8 et versions ultérieures, un problème connu existe où le fichier de projet doit être nettoyé avant l’envoi de l’application sur l’appareil.

      Le chemin d’installation est Applications/Citrix/MDXToolkit.

      Emplacement d'installation

    Les fichiers du SDK Worx App se trouvent dans Applications/Citrix/MDXToolkit/data/MDXSDK.

    Après avoir installé le MDX Toolkit sur votre ordinateur, intégrez l’infrastructure Worx à votre projet Xcode.

  2. Ajoutez le dossier data/MDXSDK au projet Apple Xcode. Pour ce faire, vous pouvez faire glisser ce dossier vers le projet Xcode.

  3. Modifiez une ligne de code dans le fichier d’en-tête précompilé dans le projet de l’application pour importer WorxEnable.h depuis Worx.framework comme illustré dans l’exemple suivant.

        #ifdef__OBJC__
        _
        //import MDX extensions
        #import <AVFoundation/AVFoundation.h>
        #import <SystemConfiguration/SCNetworkReachability.h>
        #import <Worx/WorxEnable.h>
        #endif
    
  4. Ajoutez les éléments suivants à « other linker flags » s’ils ne sont pas déjà affichés :

    • – lsqlite3
    • – ObjC
    • –lxml2
    • -u _FIPS_text_start
    • -u _FIPS_text_end
    • -u _FIPS_rodata_start
    • -u _FIPS_rodata_end
  5. Ajoutez les infrastructures et bibliothèques suivantes :

    • AssetsLibrary.framework
    • AudioToolbox.framework
    • AVFoundation.framework
    • CFNetwork.framework
    • CoreData.framework
    • CoreLocation.framework
    • CoreTelephony.framework
    • JavaScriptCore.framework
    • LocalAuthentication.framework
    • MessageUI.framework
    • MobileCoreServices.framework
    • Photos.Framework
    • QuickLook.framework
    • Security.Framework
    • Social.Framework
    • SystemConfiguration.framework
    • Libresolv.tbd
    • Libstdc++.tbd
    • Libz.tbd

Le tableau suivant répertorie les bibliothèques qui peuvent entraîner des conflits avec des bibliothèques similaires dans votre application d’iOS. Citrix recommande d’utiliser les versions Citrix des bibliothèques afin d’éviter les conflits.

Bibliothèques Conflit
OpenSSL 1.0.1H Aucune modification majeure avec la prise en charge de la norme FIPS. Présente des conflits.
Thrift Aucune modification majeure, mais certaines améliorations réalisées en interne. Présente des conflits.
  1. Dans les paramètres, définissez l’option Strip Style sur Non-Global Symbols et l’option Enable Bitcode sur No.

  2. Ajoutez un script à exécuter pour ajouter la ligne de commande SDKprep.

    • Sélectionnez votre projet dans Xcode, puis sélectionnez l’onglet Build Phases. Cliquez sur l’icône plus (+) située dans le coin supérieur gauche, puis cliquez sur New Run Script Phase.
    • Ouvrez le nouveau script d’exécution, puis saisissez le texte suivant dans le champ Script. Veillez à remplacer les variables PACKAGEID, APPTYPE, STOREURL et POLICYFILE par les valeurs qui s’appliquent à votre application. PACKAGEID est un identifiant unique pour votre application, généralement un UUID. Ceci n’est pas obligatoire car le MDX Toolkit génère un ID de package unique chaque fois que l’application est créée. Si vous fournissez un ID de package, assurez-vous qu’il est unique pour chaque nouvelle version d’application que vous encapsulez à l’aide de cette commande.
    • S’il s’agit d’une application Enterprise, utilisez le paramètre -Apptype Enterprise, qui correspond à la valeur par défaut. Pour les applications ISV, vous pouvez utiliser les valeurs Premium ou General.

    Remarque :

    les mots-clés pris en charge pour APPTYPE sont Enterprise, Premium et 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}"
    

    Exemple :

        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}"
    
    Parameters Description
    -in nom du fichier Chemin d’accès au fichier .app généré par Xcode. Le MDX Toolkit intègre des ressources spécifiques à MDX dans ce fichier.
    -out nom du fichier Chemin de destination pour le fichier .mdx. Utilisez ce fichier pour publier l’application sur le serveur XenMobile.
    -storeURl URL URL du magasin d’applications pour l’application, incorporée dans le fichier .mdx. Impossible d’utiliser ce paramètre avec -StoreURL.
    -appType mot-clé Les mots-clés sont “Enterprise,” “Premium,” and “General.”
    -packageId UUID ID de package unique pour cette application, généralement UUID. Non obligatoire, car le MDX Toolkit génère un ID de package unique chaque fois que l’application est créée. Si vous fournissez un ID de package, assurez-vous qu’il est unique pour chaque nouvelle version d’application que vous encapsulez à l’aide de cette commande. Un ID unique est associé à chaque profil de provisioning. Si vous ouvrez le profil de provisioning (.mobileprovision) dans un éditeur de texte, vous voyez la balise XML ci-dessous avec l’UUID. <key>UUID</key> <string>4e38fb18-88b0-4806-acfa-e08bf38ec48d</string>
    -policyXML nom du fichier Chemin d’accès au fichier du modèle de stratégie MDX pour votre application.
    -entitlements nom du fichier Obligatoire (introduit dans la version 10.3.10). Chemin d’accès au fichier de droits de licence pour l’application. Le MDX Toolkit ajoute à ce fichier une entrée de groupe de trousseau d’accès pour com.citrix.mdx. Ceci est nécessaire pour que votre application partage les secrets avec d’autres applications MDX signées avec le même certificat, à l’aide du trousseau iOS.
    -appIdPrefix préfixe Préfixe identifiant d’application - l’identifiant d’équipe associé à votre compte de développeur Apple.
  3. Compilez votre projet et générez les fichiers binaires de l’application.

    • Créez votre application dans Xcode et vérifiez qu’elle est créée correctement.
    • Archivez votre application en sélectionnant Product > Archive.
    • Xcode Organizer s’ouvre automatiquement une fois que votre application est archivée.
    • Sélectionnez votre build archivée dans Organizer, puis cliquez sur Export.
    • Sélectionnez la méthode d’exportation, puis cliquez sur Next.

    Suivez les invites d’exportation de votre application dans un fichier IPA.

  4. Compilez et archivez le projet pour générer le bundle d’application qui contient l’infrastructure Worx incorporée, c’est-à-dire le package .ipa. Xcode génère un fichier MDX correspondant que vous chargez sur le serveur XenMobile. Une fois que les étapes de création et d’archivage de Xcode ont créé le bundle IPA, exécutez la commande SetInfo sur le fichier MDX. Exécutez également l’option de commande –EmbedBundle pour insérer le fichier IPA final dans le fichier MDX. Ensuite, vous pouvez charger l’application sur XenMobile.

    /Applications/Citrix/MDXToolkit/CGAppCLPrepTool SdkPrep -in "${CODESIGNING_FOLDER_PATH}" -out "/Users/<UserName>/Downloads/${EXECUTABLE_NAME}_${DATE}.mdx" " -embedBundle "/Users/deva/Desktop/{EXECUTABLE_NAME}.ipa"
    
  5. Si vous avez configuré l’application afin qu’elle soit distribuée via le site Web iTunes Connect, vous pouvez également l’envoyer directement vers le magasin d’applications ou TestFlight.

Considérations pour la mise à niveau des applications

Le logiciel XenMobile peut changer de manière significative d’une version à l’autre. Pour bénéficier des dernières fonctionnalités et corrections de bogues, vous devez utiliser la dernière version de l’outil MDX Toolkit pour encapsuler votre application. Veillez à encapsuler le fichier .ipa ou .apk d’origine et non le fichier modifié qui a été préalablement généré par le MDX Toolkit.

Assurez-vous d’utiliser la version correspondante du SDK Worx App.