Desarrollar aplicaciones iOS
Puede usar la API de MDX para habilitar las aplicaciones para Citrix Endpoint Management. En este artículo se describe cómo integrar el SDK de aplicaciones MDX en la biblioteca de aplicaciones y los pasos necesarios para realizar pruebas, certificar y publicar las aplicaciones.
Cómo usar el SDK de aplicaciones MDX
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 de Citrix Endpoint Management
Supongamos que quiere mostrar una notificación a los usuarios cuando un administrador de Citrix Endpoint Management 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 Citrix Endpoint Management 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 Citrix Endpoint Management. Si la aplicación está administrada, podrá detectar el cambio del valor de la directiva que realice el administrador de Citrix Endpoint Management. 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 para iOS
Integrar el SDK en la biblioteca de aplicaciones
Para agregar MDX App SDK a las aplicaciones iOS, vincule el framework SDK a la aplicación como se describe en esta sección. MDX App SDK para iOS, basado en Objective-C, es una colección de archivos de encabezado y una biblioteca estática.
-
Si no ha instalado ya MDX Toolkit más reciente, hágalo ahora.
-
Inicie sesión en la página de descargas de Citrix Endpoint Management.
-
Expanda XenMobile Apps and MDX Toolkit.
-
Busque la versión de MDX Toolkit que quiera instalar y, a continuación, haga clic en el enlace para comenzar la descarga.
-
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.
Los archivos de MDX App SDK se encuentran en Applications/Citrix/MDXToolkit/data/MDXSDK.
Después de instalar MDX Toolkit en su equipo, integre MDX Framework en el proyecto Xcode.
-
-
Agregue la carpeta data/MDXSDK al proyecto Xcode de Apple. Para ello, puede arrastrar esa carpeta al proyecto Xcode.
-
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 <!--NeedCopy-->
Si solo incluye la versión de solo red del framework de MDX, debe reemplazar:
#import <MDX/MDX.h.> <!--NeedCopy-->
Por:
#import <MDXNetworkOnly/MDXNetworkOnly.h> <!--NeedCopy-->
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 MDX Toolkit no requiere modificaciones de compilación, ya que no hace llamadas API explícitas de MDX SDK.
Después de instalar MDX Toolkit en su equipo, integre MDX Framework en el proyecto Xcode.
-
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.
-
Arrastre data/MDXSDK/CitrixLogger.framework a la sección “Embedded Binaries” del panel “General properties” del espacio de trabajo de la aplicación.
-
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 de Apple. 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 <!--NeedCopy-->
-
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 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}" <!--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. 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 el servidor de Citrix Endpoint Management Server. -storeURL URL La dirección URL del almacén 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 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. 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. -
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 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.
-
Compile y archive el proyecto para generar el paquete de aplicación que contendrá MDX Framework integrado que es el paquete .ipa. Xcode genera un archivo MDX correspondiente que deberá cargar en el servidor de Citrix Endpoint Management. 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 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-->
-
Si ha configurado la aplicación para que se distribuya mediante el sitio web Connect de iTunes, también puede enviarla directamente al almacén de aplicaciones o TestFlight.
Consideraciones sobre la actualización de aplicaciones
El software de Citrix Endpoint Management puede variar considerablemente de una versión a otra. Para sacar partido de las ventajas que ofrecen las últimas funciones y correcciones de errores, debe utilizar la versión más reciente de MDX Toolkit para empaquetar la aplicación. Empaquete su archivo .ipa o .apk original, no el archivo modificado que haya generado previamente MDX Toolkit.
Debe utilizar la versión correspondiente del SDK de aplicaciones MDX.