Desarrollo de aplicaciones iOS

27 de febrero de 2018

Puede usar la API de MDX para habilitar las aplicaciones para XenMobile. En este artículo se describe cómo integrar el MDX App SDK en la biblioteca de aplicaciones y los pasos necesarios para realizar pruebas, certificar y publicar las aplicaciones.

Cómo usar el MDX App SDK

Estos son algunos ejemplos de cómo se pueden usar las API.

  • Establecer restricciones en aplicaciones

    Se puede controlar el momento en que la aplicación permite el acceso a ciertas funciones o acciones en función de si las llamadas de API indican que la aplicación está administrada o empaquetada. Por ejemplo, si una aplicación no está administrada ni empaquetada, se puede permitir que un usuario acceda a todas las funciones y las acciones. Si una aplicación está empaquetada, pero no administrada, se puede restringir algunas funciones o acciones. Si una aplicación está empaquetada y administrada, se puede poner restricciones adicionales a la aplicación.

  • Realizar acciones según la configuración de directivas XenMobile

    Supongamos que quiere mostrar una notificación a los usuarios cuando un administrador de XenMobile establece la directiva Requerir Wi-Fi en Sí (activada). Esto significa que solo se permite ejecutar la aplicación desde dentro de la red de la organización. Puede usar la API para buscar la configuración de directiva y, a continuación, basar los cambios de código en el valor de la directiva.

  • Realizar acciones según la configuración de directivas personalizadas

    Puede usar las API para leer directivas personalizadas en las aplicaciones. Por ejemplo, supongamos que quiere permitir que los administradores de XenMobile muestren una notificación en la aplicación. Para ello, puede crear una directiva personalizada que esté vacía o contiene un mensaje del sistema que deba proporcionar un administrador desde la consola de XenMobile. Si la aplicación está administrada, podrá detectar el cambio del valor de la directiva que realice el administrador de XenMobile. Si el valor de la directiva contiene un mensaje, la aplicación puede mostrar la notificación.

Para ver definiciones de la API, consulte API de MDX para iOS

Integración del SDK en la biblioteca de aplicaciones

Para agregar el MDX App SDK a las aplicaciones iOS, vincule el framework SDK a la aplicación como se describe en esta sección. El MDX App SDK para iOS, basado en Objective-C, es una colección de archivos de encabezado y una biblioteca estática.

  1. Si no ha instalado ya el MDX Toolkit más reciente, hágalo ahora.

    1. Inicie sesión en la página de descargas de XenMobile.

    2. Expanda XenMobile Apps and MDX Toolkit.

    3. Busque la versión del MDX Toolkit que quiera instalar y, a continuación, haga clic en el enlace para comenzar la descarga.

    4. Abra MDXToolkit.mpkg con la herramienta Finder de macOS en macOS 10.9.4, o una versión posterior, y Xcode 7, o una versión posterior.

      Para Xcode 8 y versiones posteriores, existe un problema conocido por el cual es necesario limpiar el archivo de proyecto antes de enviar la aplicación a los dispositivos.

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

      Ubicación de la instalación

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

    Después de instalar el MDX Toolkit en su equipo, integre MDX Framework en el proyecto Xcode.

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

  3. Revise una línea de código en el archivo de encabezado compilado previamente, incluido en el proyecto de 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
    

    Si solo incluye la versión de solo red del framework de MDX, debe reemplazar:

    #import <MDX/MDX.h.>
    

    Por:

    #import <MDXNetworkOnly/MDXNetworkOnly.h>
    

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

    Si una aplicación emite explícitamente una llamada API de MDX SDK, debe estar vinculada a e incrustarse en el binario MDX.framework o MDXNetworkOnly.framework cuando esa aplicación se compile.

    Una aplicación empresarial precompilada de terceros que se empaqueta con el MDX Toolkit no requiere modificaciones de compilación, ya que no hace llamadas API explícitas de MDX SDK.

    Después de instalar el MDX Toolkit en su equipo, integre MDX Framework en el proyecto Xcode.

  4. Arrastre data/MDXSDK/MDX.framework (o data/MDXSDK/MDXNetworkOnly.framework) a la sección “Embedded Binaries” del panel “General properties” del espacio de trabajo de la aplicación. Al hacerlo, agrega ese framework dinámico a los frameworks incluidos en el paquete de aplicaciones instalado con la aplicación. Además, el framework se agrega automáticamente a la lista de frameworks que están vinculados a la aplicación.

Solo debe agregar un framework de MDX.

  1. Arrastre data/MDXSDK/CitrixLogger.framework a la sección “Embedded Binaries” del panel “General properties” del espacio de trabajo de la aplicación.

  2. Agregue un script de ejecución para eliminar las arquitecturas que contienen los frameworks incrustados que no aparecen en la lista de arquitecturas válidas de Xcode. Eso responde al requisito de Apple de que los frameworks integrados no puedan contener arquitecturas de simulador iOS para las compilaciones de aplicaciones de la tienda Apple Store. Este script administrará automáticamente todos los objetivos de compilación, tanto las compilaciones del tipo Apple Store como no 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. Agregue un script de ejecución para agregar la línea de comandos de SDKPrep.

    • Seleccione el proyecto en Xcode y, a continuación, seleccione la ficha Build Phases. Haga clic en el signo más (+) en la esquina superior izquierda y, a continuación, haga clic en New Run Script Phase.
    • Abra el nuevo Run Script y, a continuación, escriba el texto siguiente en el campo Script. Cambie las variables PACKAGEID, APPTYPE, STOREURL y POLICYFILE por los valores correspondientes a su aplicación. La variable PACKAGEID es un identificador único de la aplicación, por lo general, un UUID. No es obligatorio, ya que el MDX Toolkit genera un ID de paquete único cada vez que la aplicación se compila. Si proporciona un ID de paquete, debe ser único para cada nueva versión de la aplicación que empaquete con este comando.
    • Si esta es una aplicación de empresa, utilice el parámetro -Apptype Enterprise, que es el valor predeterminado. Para aplicaciones ISV, puede usar los valores Premium o General.

    Nota:

    Las palabras clave admitidas 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}"
    

    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}"
    
    Parámetros Descripción
    -in nombre de archivo Ruta al archivo .app generado por Xcode. El MDX Toolkit integra los recursos específicos de MDX en este archivo.
    -out nombre de archivo Ruta de destino para el archivo .mdx. Use este archivo para publicar la aplicación en XenMobile Server.
    -storeURl URL La dirección URL de la tienda de 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 único del paquete de esta aplicación, por lo general, un UUID. No es obligatorio, ya que el MDX Toolkit genera un ID de paquete único cada vez que la aplicación se compila. Si proporciona un ID de paquete, debe ser único para cada nueva versión de la aplicación que empaquete con este comando. Cada perfil de aprovisionamiento está asociado a un ID único. Si abre el perfil de aprovisionamiento (.mobileprovision) en un editor de texto, verá esta 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 directivas MDX para la aplicación.
    -entitlements nombre de archivo Obligatorio (introducido en la versión 10.3.10). Ruta al archivo de derechos de la aplicación. El MDX Toolkit agrega una entrada del grupo de Acceso de Llaveros para com.citrix.mdx a este archivo. Es necesario que su aplicación comparta claves secretas con otras aplicaciones MDX firmadas con el mismo certificado mediante el Acceso a Llaveros de iOS.
    -appIdPrefix prefijo Prefijo de identificador de aplicación: el ID del equipo asociado a su cuenta de desarrollador de Apple.
  4. Compile su proyecto y genere los binarios de aplicación.

    • Genere la aplicación en Xcode y verifique que se ha creado correctamente.
    • Archive la aplicación desde Product > Archive.
    • Una vez archivada la aplicación, Xcode Organizer se abre automáticamente.
    • Seleccione la generación archivada en Xcode Organizer y, a continuación, haga clic en “Export”.
    • Seleccione el método de exportación correspondiente y, a continuación, haga clic en “Siguiente”.

    Siga las indicaciones para exportar la aplicación a un archivo IPA.

  5. Compile y archive el proyecto para generar el paquete de aplicación que contendrá el MDX Framework integrado que es el paquete .ipa. Xcode genera un archivo MDX correspondiente que deberá cargar en XenMobile Server. Después de que Xcode realice los pasos de generar, archivar y crear el paquete IPA, ejecute el comando SetInfo en el archivo MDX. Ejecute también el comando -embedBundle para insertar el archivo IPA final en el archivo MDX. Después de eso, puede cargar la aplicación en 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"
    
  6. Si ha configurado la aplicación para que se distribuya mediante el sitio Web Connect de iTunes, también puede enviarla directamente a la tienda de aplicaciones o TestFlight.

Consideraciones sobre la actualización de aplicaciones

El software de XenMobile puede cambiar considerablemente de una versión a otra. Para sacar partido de las ventajas que ofrecen las últimas características y correcciones de errores, debe utilizar la versión más reciente del MDX Toolkit para empaquetar la aplicación. Empaquete su archivo .ipa o .apk original, no el archivo modificado que haya generado previamente el MDX Toolkit.

Debe utilizar la versión correspondiente del MDX App SDK.