Desarrollo de aplicaciones iOS

Puedes usar la API de MDX para habilitar tus aplicaciones móviles para Citrix Endpoint Management. Este artículo describe cómo integrar el SDK de aplicaciones MDX en tu biblioteca de aplicaciones y los pasos necesarios para probar, certificar y publicar tus aplicaciones.

  • Cómo usar el SDK de aplicaciones MDX

  • Aquí tienes algunos ejemplos de cómo podrías usar las API.

  • Establecer restricciones en las aplicaciones

    Puedes controlar cuándo tu aplicación permite el acceso a ciertas funciones o acciones basándote en si las llamadas a la API indican que la aplicación está gestionada o encapsulada. Por ejemplo, si una aplicación no está gestionada o encapsulada, podrías permitir a un usuario el acceso a todas las funciones y acciones. Si una aplicación está encapsulada pero no gestionada, podrías restringir ciertas funciones o acciones. Si una aplicación está encapsulada y gestionada, podrías aplicar restricciones adicionales a la aplicación.

    • Realizar acciones basadas en la configuración de políticas de Citrix Endpoint Management

    Supongamos que quieres mostrar una notificación a los usuarios si un administrador de Citrix Endpoint Management establece la política Requerir Wi-Fi en Activado. Esto significa que la aplicación solo puede ejecutarse desde dentro de la red de tu organización. Puedes usar la API para buscar la configuración de la política y luego basar tus cambios de código en el valor de la política.

    • Realizar acciones basadas en políticas personalizadas

    Puedes usar las API para leer políticas personalizadas en tus aplicaciones. Por ejemplo, supongamos que quieres permitir a los administradores de Citrix Endpoint Management mostrar una notificación en la aplicación. Para ello, crea una política personalizada que esté vacía o que contenga un mensaje del sistema proporcionado por un administrador en la consola de Citrix Endpoint Management. Si tu aplicación está gestionada, puede detectar cuándo el administrador de Citrix Endpoint Management cambia el valor de la política. Si el valor de la política contiene un mensaje, tu aplicación muestra la notificación.

Para ver las definiciones de la API, consulta API para iOS.

Integrar el SDK en tu biblioteca de aplicaciones

Para agregar el SDK de aplicaciones MDX a tus aplicaciones iOS, vincula el marco del SDK en tu aplicación como se describe en esta sección. El SDK de aplicaciones MDX para iOS, basado en Objective-C, es una colección de archivos de encabezado y una biblioteca estática.

  1. Si aún no has instalado el MDX Toolkit más reciente, hazlo ahora.

    1. Inicia sesión en la página de descargas de Citrix Endpoint Management.

    2. Expande XenMobile® Apps and MDX Toolkit.

    3. Localiza la versión del MDX Toolkit que quieres instalar y haz clic en el enlace para iniciar la descarga.

    4. Abre MDXToolkit.mpkg con la herramienta Finder de macOS en macOS 10.9.4 o posterior y Xcode 7 o posterior.

      Para Xcode 8 y versiones posteriores, existe un problema conocido por el que el archivo del proyecto debe limpiarse antes de enviar la aplicación al dispositivo.

      La ruta de instalación es Applications/Citrix/MDXToolkit.

      Ubicación de instalación

    Los archivos del SDK de aplicaciones MDX se encuentran en Applications/Citrix/MDXToolkit/data/MDXSDK.

    Después de instalar el MDX Toolkit en tu equipo, integra el marco MDX en tu proyecto de Xcode.

  2. Agrega la carpeta data/MDXSDK al proyecto de Apple Xcode. Para ello, puedes arrastrar esa carpeta al proyecto de Xcode.

  3. Revisa una línea de código en el archivo de encabezado precompilado del proyecto de la aplicación para importar MDX.h desde MDX.framework, como se muestra en el siguiente ejemplo.

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

    Si solo incluyes la versión Network Only del marco MDX, entonces debes reemplazar

    #import <MDX/MDX.h.>
    <!--NeedCopy-->
    

    Con

    #import <MDXNetworkOnly/MDXNetworkOnly.h>
    <!--NeedCopy-->
    

    Si encapsulas una aplicación que emite explícitamente una llamada a una API expuesta por el marco del SDK de MDX, las líneas MDX.h y MDXNetworkOnly.h son opcionales.

    Si una aplicación emite explícitamente una llamada a la API del SDK de MDX, debe vincularse e incrustar el binario MDX.framework o MDXNetworkOnly.framework cuando se compile la aplicación.

    • Una aplicación empresarial de terceros precompilada que está encapsulada por el MDX Toolkit no requiere modificaciones de compilación, ya que no realiza llamadas explícitas a la API del SDK de MDX.

    Después de instalar el MDX Toolkit en tu equipo, integra el marco MDX en tu proyecto de Xcode.

  4. Arrastra data/MDXSDK/MDX.framework (o data/MDXSDK/MDXNetworkOnly.framework) a la sección Embedded Binaries del panel de propiedades General del espacio de trabajo de la aplicación. Al hacerlo, agregas ese marco dinámico a los marcos incluidos en el paquete de la aplicación instalado con la aplicación. Además, el marco se agrega automáticamente a la lista de marcos vinculados a la aplicación.

Solo debes agregar un marco MDX.

  1. Arrastra data/MDXSDK/CitrixLogger.framework a la sección Embedded Binaries del panel de propiedades General del espacio de trabajo de la aplicación.

  2. Agrega un script de ejecución para eliminar arquitecturas de los marcos incrustados que no aparecen en la lista de arquitecturas válidas de Xcode. Esto aborda el requisito de Apple de que los marcos incrustados no pueden contener arquitecturas de iOS Simulator para las compilaciones de aplicaciones de Apple Store. Este script gestionará automáticamente todos los destinos de compilación, tanto las compilaciones que no son de Apple Store como las de tipo 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
    <!--NeedCopy-->
    
      1. Agrega un script de ejecución para agregar la línea de comandos de SDKPrep.
    • Selecciona tu proyecto en Xcode y, a continuación, selecciona la ficha Build Phases. Haz clic en el icono más (+) en la esquina superior izquierda y, a continuación, haz clic en New Run Script Phase.
    • Abre el nuevo Run Script y, a continuación, escribe el siguiente texto en el campo Script. Asegúrate de cambiar las variables PACKAGEID, APPTYPE, STOREURL y POLICYFILE por valores aplicables a tu aplicación. PACKAGEID es un identificador único para tu aplicación, normalmente un UUID. Esto no es obligatorio, ya que el MDX Toolkit genera un packageID único cada vez que se compila la aplicación. Si proporcionas un packageID, asegúrate de que sea único para cada nueva versión de la aplicación que encapsules usando este comando.
    • Si esta aplicación es una aplicación Enterprise, usa el parámetro -Apptype Enterprise, que es el valor predeterminado. Para las aplicaciones ISV, puedes usar los valores Premium o General.

    Nota:

    Los valores admitidos para APPTYPE son Enterprise, Premium y 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-->
    

    Ejemplo:

        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-->
    
    Parámetros Descripción
    -in nombre de archivo Ruta al archivo .app generado por Xcode. El MDX Toolkit incrusta recursos específicos de MDX en este archivo.
    -out nombre de archivo Ruta de destino para el archivo .mdx. Usa este archivo para publicar la aplicación en el servidor de Citrix Endpoint Management.
    -storeURl URL URL de la tienda de aplicaciones para la aplicación, incrustada en el archivo .mdx. No se puede usar este parámetro con -StoreURL.
    -appType palabra clave Las palabras clave son “Enterprise”, “Premium” y “General”.
    -packageId UUID El ID de paquete único para esta aplicación, normalmente un UUID. No es obligatorio, ya que el MDX Toolkit genera un packageID único cada vez que se compila la aplicación. Si proporcionas un packageID, asegúrate de que sea único para cada nueva versión de la aplicación que encapsules usando este comando. Se asocia un ID único a cada perfil de aprovisionamiento. Si abres el perfil de aprovisionamiento (.mobileprovision) en un editor de texto, verás la siguiente etiqueta XML con el UUID. <key>UUID</key> <string>4e38fb18-88b0-4806-acfa-e08bf38ec48d</string>
    -policyXML nombre de archivo Ruta al archivo de plantilla de política MDX para tu aplicación.
    -entitlements nombre de archivo Obligatorio (introducido en la versión 10.3.10). Ruta al archivo de derechos para la aplicación. El MDX Toolkit agrega una entrada de grupo de acceso al llavero para com.citrix.mdx a este archivo. Es necesario para que tu aplicación comparta secretos con otras aplicaciones MDX firmadas con el mismo certificado, usando el llavero de iOS.
    -appIdPrefix prefijo Prefijo del identificador de aplicación: el ID de equipo asociado a tu cuenta de desarrollador de Apple.
  3. Compila tu proyecto y genera los binarios de la aplicación.

    • Compila tu aplicación en Xcode, verificando que se compile correctamente.
    • Archiva tu aplicación seleccionando Product > Archive.
  • El Organizador de Xcode se abre automáticamente después de archivar tu aplicación.
    • Selecciona tu compilación archivada en el Organizador y luego haz clic en Exportar.
    • Selecciona el método de exportación aplicable y luego haz clic en Siguiente.

    Sigue las indicaciones para exportar tu aplicación a un archivo IPA.

  1. Compila y archiva el proyecto para generar el paquete de la aplicación que contiene el marco MDX incrustado, que es el paquete .ipa. Xcode genera un archivo MDX correspondiente que subes al servidor de Citrix Endpoint Management. Después de que los pasos de compilación y archivo de Xcode creen el paquete IPA, ejecuta el comando SetInfo en el archivo MDX. También ejecuta la opción de comando -embedBundle para insertar el archivo IPA final en el archivo MDX. Después de eso, puedes subir la aplicación a Citrix Endpoint Management.

    /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-->
    
  2. Si has configurado la aplicación para su distribución a través del sitio web de iTunes Connect, también puedes enviarla directamente a la tienda de aplicaciones o a TestFlight.

Consideraciones para actualizar aplicaciones

El software de Citrix Endpoint Management puede cambiar significativamente entre versiones. Para aprovechar las últimas funciones y correcciones de errores, debes usar la última versión del MDX Toolkit para encapsular tu aplicación. Asegúrate de encapsular tu archivo .ipa o .apk original, no el archivo modificado generado previamente por el MDX Toolkit.

Asegúrate de usar la versión correspondiente del SDK de la aplicación MDX.

Desarrollo de aplicaciones iOS