Mostrando entradas con la etiqueta jsClient. Mostrar todas las entradas
Mostrando entradas con la etiqueta jsClient. Mostrar todas las entradas

17 febrero 2015

Aplicaciones para Android (el "wrapper") (Parte 11 de 11)

Construcción de una aplicación Android


Una vez personalizado el proyecto para su aplicación, será muy fácil crear la versión de explotación o lanzamiento.
  • Abra el fichero “AndroidManifest.xml” de su proyecto, seleccione la pestaña “Manifest” y haga clic sobre el vínculo “Use the Export Wizard”. 
 
 
  • Ahora deberá seguir los pasos del asistente, a fin de construir una aplicación firmada a partir de su proyecto Android. 
    • La primera vez que lo haga, deberá seleccionar la opción que le permite crear un nuevo “keystore” (almacén de claves) y su clave. En ocasiones posteriores (o versiones de su aplicación) podrá hacer uso del almacén de claves ya existente. Esto es lo que le identifica a usted como desarrollador, de modo que es de suma importancia que mantenga una copia de seguridad de su clave una vez creada. Las posteriores actualizaciones de su aplicación tendrán que ser firmadas con la misma clave. No obstante, podrá hacer uso de la misma clave para múltiples aplicaciones, si así lo desea.
    • Si tiene la intención de distribuir su aplicación a través de Google Play, al crear su clave debe asegurarse de fijar su “Validity” con un valor que le permita ir mas allá del 22 de octubre 2033.

Para más información sobre el uso de las formas con Google, consulte la guía: http://developer.android.com/tools/publishing/app-signing.html. Al final, el asistente le proporcionará un archivo .apk firmado. Su aplicación lista para lanzamiento o entrega a los potenciales usuarios.

16 febrero 2015

Aplicaciones para Android (el "wrapper") (Parte 10 de 11)

Agregar bases de datos para funcionamiento “off-line”


Es posible añadir una base de datos SQLite pre-poblada como parte de su aplicación. Podrá ser utilizada desde los diferentes “forms’s” mediante el conector $sqlobject.
  • Arrastre el archivo SQLite .db desde el sistema de archivos, sobre la carpeta “assets” de su proyecto en Eclipse. Asegúrese de seleccionar la opción “Copy Files”.
  • Edite el archivo “config.xml” de su proyecto y modifique la propiedad ≤ServerLocalDatabaseName≥ para incluir el nombre de su base de datos local (incluyendo la extensión .db)

Tenga en cuenta que está creando una aplicación para un dispositivo móvil, por lo que no deberá pensar en usar bases de datos locales muy grandes. Para mantener sus datos seguros, la base de datos es compilada formando parte del “apk”. Tenga en cuenta que si va a subir su aplicación a la Play Store, el .apk final para Android, deberá ocupar menos de 50 MB, por lo que deberá pensar en una base de datos local pequeña.

Si necesita acceder a grandes bases de datos, seguramente deberá conectarse a un servidor Omnis y utilizar la funcionalidad de sincronización para actualizar datos con el dispositivo. Puede encontrar toda la información relacionada con “Sync Server” en la web de Omnis.


Editar la ventana “Acerca de...”


Si el parámetro correspondiente ha sido habilitado en el “config.xml”, una opción “About” o “Acerca de…” será mostrada sobre el menú de su aplicación. Permitiendo la apertura de una nueva pantalla con una página html configurable.

Para habilitar (o des-habilitar) la opción de menú “About”, edite el archivo “config.xml” del proyecto y cambie el valor de ≤MenuIncludeAbout≥ a 1 (o a 0 para desactivarlo).

Abra la carpeta “assets/about” de su proyecto. Podrá observar que contiene un archivo denominado “about.htm”, se trata de la página html que se cargará al abrirse la pantalla “Acerca de”. Podrá editar este fichero del modo que prefiera, agregando incluso todos los recursos que sean necesarios en la carpeta “about”. 
 

13 febrero 2015

Aplicaciones para Android (el "wrapper") (Parte 9 de 11)

Agregar SCAFs (sólo para aplicaciones “off-line”)


Si su aplicación va a permitir su uso en modo “off-line”, tendrá que decidir si incluirá o no los ficheros SCAFs dentro de la aplicación. Tenga en cuenta, que si lo hace su tamaño crecerá, aunque, (eso si) permitirá su ejecución inmediata, es decir, sin necesidad de conexión a un servidor para su descarga o primera actualización.

Para incluir los ficheros SCAFs en su aplicación, deberá hacer lo siguiente:
 
  • Localice la carpeta “html/sc” en el directorio de instalación Omnis.
    • En un sistema Windows, la encontrará bajo el directorio “AppData”. Por ejemplo en: C:\Users\\AppData\Local\TigerLogic\OS6.X\
  • Localice el “App SCAF” de su aplicación (Un archivo con extensión .db dentro del directorio “sc” y con el mismo nombre que tiene su librería).
  • Localice también el “Omnis SCAF” (Un archivo omnis.db situado en sc/omnis/).
  • Importe ambos archivos SCAF sobre el directorio “assets” de su proyecto.
    • La forma más fácil de hacer esto es arrastrarlos desde el explorador de archivos sobre el proyecto en Eclipse. Asegúrese de tener seleccionada la opción “Copy Files”.


08 febrero 2015

Aplicaciones para Android (el "wrapper") (Parte 8 de 11)

Localizar su aplicación


Si desea traducir el texto utilizado por la aplicación o “wrapper”, podrá hacerlo siguiendo las instrucciones que describimos a continuación. Cuando el dispositivo del usuario esté configurado para su uso con uno de los idiomas soportados, la aplicación cargará las cadenas de texto introducidas para el idioma en cuestión.
  • Busque la carpeta “res/values” del proyecto. Esta contiene el archivo “strings.xml”, que a su vez contiene todas las cadenas de texto predeterminadas para su uso con la aplicación. 
 
  • En esta carpeta podrá crear versiones concretas para cada idioma/región (según su correspondiente archivo “strings.xml”), el cual será usado según las preferencias de idioma/región consignadas en el dispositivo. Para ello, será necesario crear nuevas carpetas “values”, con sus correspondientes “qualifiers” de lenguaje/región.
 
  • Cree una nueva carpeta bajo el directorio “res”, nombrela como “values-≤LanguageCode≥” o “values-≤LanguageCode≥-r≤RegionCode≥” en el caso de incluir una región. Estos “qualifiers” no son sensibles al uso de letras mayúsculas y minúsculas. Ejemplo: values-en o values-en-rGB
 
  • Copie el archivo “strings.xml” de la carpeta “values” por defecto, sobre la nueva carpeta.



  • Edite el archivo “strings.xml” de la nueva carpeta y modifique sus valores de para traducirlos. Si no desea traducir todas las cadenas, puede optar por eliminarlos del archivo strings.xml de ese idioma en particular, ya que en el caso de no encontrarse dentro del archivo “strings.xml” traducido, se usará el predeterminado.

04 febrero 2015

Aplicaciones para Android (el "wrapper") (Parte 7 de 11)

Eliminar elementos no requeridos


Cada aplicación Android debe solicitar permisos para acceder a diversas áreas del dispositivo. (Contactos, Cámara, Localización, etc.) Es una mala práctica incluir permisos innecesarios en su aplicación, especialmente si se está distribuyendo a través de Google Play, ya que cuando el usuario descarga/instala la aplicación, puede ver los permisos a los su aplicación solicita acceso. El uso de permisos innecesarios pueden darle al usuario la impresión de que su aplicación es maliciosa.
 
  • Abra el fichero “AndroidManifest.xml” de su proyecto, y seleccione la pestaña “Permissions”.
     
  • Dese aquí podrá agregar o quitar permisos para su aplicación.
     
  • Por defecto, están activados todos los permisos posibles para una aplicación Omnis.
     
  • Elimine los permisos no necesarios para su aplicación, mediante la selección del mismo y la pulsación el botón “Remove”.



PERMISOS OBLIGATORIOS:

  • INTERNET

Todos los demás podrán ser eliminados de su aplicación, si es el caso que no los necesita, tales permisos opcionales, son los siguientes:
 
  • CAMERA - necesario si se hará uso de lector de código de barras (kJSDeviceActionGetBarcode).
     
  • READ_CONTACTS – necesario si se activa kJSDeviceActionGetContacts para acceder a la lista de contactos.
     
  • ACCESS_FINE_LOCATION - proporciona un ajuste fino (se usa el sensor GPS) sobre los datos de ubicación kJSDeviceActionGetGps.
     
  • ACCESS_COARSE_LOCATION - proporciona un ajuste parcial (se usa la red) sobre los datos de ubicación kJSDeviceActionGetGps.
     
  • WRITE_EXTERNAL_STORAGE - necesario si se desea obtener imágenes desde la cámara (kJSDeviceActionTakePhoto).
     
  • READ_EXTERNAL_STORAGE - necesario si se desea obtener imágenes desde la cámara o de entre las ya guardadas en el dispositivo (kJSDeviceActionTakePhoto o kJSDeviceActionGetImage).

Sólo en versiones posteriores a Android 4.3
 
  • CALL_PHONE – permite hacer llamadas telefónicas desde la aplicación (kJSDeviceActionMakeCall).
     
  • VIBRATE - permite hacer que el dispositivo vibre (kJSDeviceActionVibrate).

30 enero 2015

Aplicaciones para Android (el "wrapper") (Parte 6 de 11)

Añadir pantallas de transición personalizadas


El “wrapper” para Android muestra una pantalla de bienvenida mientras se está cargando (o actualizando) el “form”. La imagen mostrada se denomina “splashscreen” y está localizada en el grupo de carpetas “res/drawable-...dpi”. La extensión del fichero deberá ser .png y tener el formato 9-Patch (.9.png).

Una imagen “9-patch” es un png con marcadores especiales que controlan cómo deberá escalarse la imagen. Esto evitará la deformación no deseada de la imagen. Es el formato que nosotros recomendamos usar para pantallas de inicio en Android. Podrá hallar más información en http://developer.android.com/tools/help/draw9patch.html.

Observe que el proyecto sólo contiene imágenes “splash” en dos de las carpetas “dpi”. Esto será suficiente (especialmente si se usan imágenes “9-patch”) ya que el dispositivo hará uso de la imagen que mejor se ajuste a su “dpi”. Se eligió ésta opción porque ofrece el mejor rendimiento para la aplicación/proyecto.

Aplicaciones para Android (el "wrapper") (Parte 5 de 11)

Añadir iconos personalizados


Dado que los dispositivos Android disponen de una gran variedad de tamaños para sus pantallas, se hace necesario la creación de diferentes resoluciones para sus iconos. El sistema operativo usará el icono más apropiado para el dispositivo en uso.

  • Despliegue el directorio “res” del proyecto y observe el grupo de carpetas “drawable-...dpi”.
  • Cada una de estas carpetas contiene un fichero “icon.png”, con el tamaño adecuado para los dispositivos clasificados como parte de ese grupo dpi.
  • Edite o sustituya estos ficheros, asegurándose de que sean del mismo tamaño y nombre que el original.

23 enero 2015

Aplicaciones para Android (el "wrapper") (Parte 4 de 11)

Cambiar el nombre visible de la aplicación (App Name)


Para cambiar el nombre que muestra su aplicación:

  • Abra el fichero del proyecto denominado “res/values/strings.xml”, y seleccione la entrada “app_name”.
     
  • Cambie el contenido del campo “Value” por el que desee.


22 enero 2015

Aplicaciones para Android (el "wrapper") (Parte 3 de 11)

Cambiar el nombre del paquete (Package Name)


El “Package Name” identifica a su aplicación, y debe ser único entre todas las aplicaciones del dispositivo. Dos aplicaciones con el mismo nombre serían vistas por el dispositivo como si se tratase de una sola, por lo que éste, es un paso muy importante. Recomendamos el uso de la sintaxis de nombre de dominio inverso. Por ejemplo: com.miempresa.omnis.miaplicacion.

  • Haga clic derecho, sobre el nivel superior del proyecto en Eclipse y seleccione la opción “Android Tools ≥ Rename Application Package”.
  • Cambie el valor de “Package Name” por el que desee.


14 enero 2015

Aplicaciones para Android (el "wrapper") (Parte 2 de 11)

Editar el fichero “config.xml”


El fichero config.xml contiene la configuración de conexión que utilizará su aplicación para conectarse con el servidor Omnis, además de otras opciones que determinarán su comportamiento.

Busque el archivo “config.xml” situado en la carpeta “assets”, y modifique su contenido según lo necesite para su aplicación, tal y como se describe a continuación:

  • AppTitle - Permite o no, que se muestre la barra de título (Android < 3.0) o la barra de acción (Android 3.0 +). 1 para cierto, 0 para falso.

  • AppStandardMenu - Permite o no al usuario, mostrar el menú de aplicación mientras está en uso. 1 para cierto, 0 para falso.
  • AppTimeout – En caso de que la aplicación sea enviada a un segundo plano, específica el número de mili-segundos de espera antes de matarla, liberando así, la conexión con el servidor. Si se especifica un número negativo, significa que no habrá tiempo de espera (aunque el sistema podría matar la aplicación, si los recursos usados por la misma son requeridos).

Tenga en cuenta que si se está haciendo uso de algunas funciones del dispositivo (como por ejemplo, la cámara, el SMS, etc.), la aplicación va a será enviada a un segundo plano. De modo que deberá tener cuidado y no establecer un valor demasiado bajo, a fin de que la aplicación no sea cancelada mientras (por ejemplo) el usuario está tomando una foto.

  • MenuIncludeSettings - Muestra o no, el botón “Configuración” o “Settings” en el menú de la aplicación, permitiendo al usuario cambiar la configuración de conexión. 1 para cierto, 0 para falso.

  • MenuIncludeOffline - Permite o no, que el usuario pueda alternar entre los modos “on-line” y “off-line” desde el menú de la aplicación. 1 para cierto, 0 para falso.

  • MenuIncludeAbout - Muestra o no, un botón “Acerca de” en el menú de la aplicación, permitiendo al usuario abrir la pantalla de información indicada. 1 para cierto, 0 para falso.

  • SettingsFloatControls - Permite o no, que el “form” pueda cambiar su tamaño/posición, de acuerdo con su propiedad $edgefloat y en relación con la diferencia entre el tamaño de la pantalla del dispositivo y lo consignado en $screensize. 1 para cierto, 0 para falso. Funcionará sólo si el parámetro “SettingsScaleForm” contiene un valor 0.

  • SettingsScaleForm - De ser cierto (1), el “form” será escalado hacia arriba o hacia abajo, hasta ajustarse al tamaño de pantalla del dispositivo del cliente. 1 para cierto, 0 para falso.

  • SettingsAllowHScroll y SettingsAllowVScroll - Si es cierto, se permitirá el desplazamiento horizontal o vertical del “form”. 1 para cierto, 0 para falso.

  • SettingsMaintainAspectRatio - Si el parámetro “SettingsScaleForm” contiene el valor 1, el “form” se escalará de acuerdo a su aspecto original. 1 para cierto, 0 para falso.

  • SettingsOnlineMode - Determina si la aplicación se abrirá en modo “On-line” (1) o en modo “Off-line” (0).

  • TestModeEnabled - Determina si el modo de pruebas (opción Ctrl-M para testar “forms” en dispositivos) estará habilitado para su aplicación. 1 para cierto, 0 para falso.

  • TestModeServerAndPort - Es la ≤direccionip≥:≤puerto≥ usada con la versión Omnis Studio Developer en modo de pruebas.

  • ServerOmnisWebUrl - URL del servidor Omnis o servidor Web. En caso de un servidor Omnis su formato debería ser: http://≤direccionip≥:≤puertoomnis≥ y si se trata de un servidor web, debería ser la raíz de su servidor Web: http://miservidor.com.

  • ServerOnlineFormName - Ruta hacia el fichero .htm correspondiente al “form” inicial, alojado en el servidor “ServerOmnisWebUrl”. Si se esta desarrollando la aplicación, es decir usando el “Omnis Studio Developer”, su formato será /jschtml/miform. Si se está utilizando un servidor web, será el resto de la URL necesaria para llegar hasta el fichero, por ejemplo, /omnisapps/miform. (¡Sin añadir la extensión .htm)

ServerOmnisWebUrl y ServerOnlineFormName, son necesarios si se usarán “form’s” en modo “On-line”. El resto de parámetros “Server...” se necesitarán sólo si la aplicación también podrá ejecutarse en modo “Off-line”.

  • ServerOmnisPlugin - Si se está usando un plugin para establecer la comunicación entre el servidor web y el servidor Omnis, éste parámetro deberá indicar la ruta donde éste se encuentra, partiendo de “ServerOmnisWebUrl”. Por ejemplo /cgi-bin/omnisapi.dll

  • ServerOmnisServer - Indica el camino hacia el Servidor Omnis, su formato es ≤direccionip≥:≤puerto≥. Sólo es necesario si se está usando un servidor web con el “Omnis Web Server Plugin” instalado. Si el servidor Omnis, se está ejecutando en la misma máquina que el servidor web, sólo necesitará indicar el puerto en uso. Ejemplo 194.168.1.49:5912

  • ServerOfflineFormName - Nombre del “form” para uso en modo “off-line”. (¡No añada .htm!), Por ejemplo rfOffline

  • ServerAppScafName - Nombre de la aplicación “SCAF”. Deberá coincidir con el nombre de su librería. Por ejemplo: milibreria. Nota: el nombre es sensible al uso de letras mayúsculas y minúsculas, por lo que le recomendamos usar sólo minúsculas).

08 enero 2015

Aplicaciones para Android (el "wrapper") (Parte 1 de 11)

Renombrar el proyecto


Una vez importado el “wrapper” a Eclipse, es probable que desee asignarle un nombre nuevo y más acorde su aplicación particular.

La modificación del nombre del proyecto no ejerce efecto alguno sobre la aplicación resultante, pero si le permitirá registrar sus proyectos del modo más apropiado, especialmente si pretende crear diferentes aplicaciones ya que deberá usar proyectos independientes para cada una de ellas.

  • Pulse botón-derecho sobre el proyecto en Eclipse y seleccione la opción “Refactor > Rename”. 
  • En la ventana de diálogo que se abrirá, introduzca el nuevo nombre del proyecto, asegurándose de marcar la opción “Update references” y pulse “OK”. 


20 diciembre 2014

Aplicaciones para Android (requerimientos, instalación y configuración de Eclipse)

Requerimientos Android


Para construir y desplegar aplicaciones para Android, necesitará lo siguiente:

  • Windows, OS X o Linux
  • Eclipse con ADT Plugin
  • Android SDK
  • $0 - $25

En cuanto a los requisitos del sistema operativo, según los diferentes modos de uso, necesitará:

  • Para el modo “On-line”: Android 2.2+ (API 8)
  • Para el modo “Off-line”: Android 2.3+ (API 9)
  • Para soporte de bases de datos locales: Android 2.2+ (API 8)

Configuración del entorno Android


1) Instalar herramientas de desarrollo Android

El entorno de desarrollo Android comprende Eclipse, el ADT Plugin para Eclipse y el Android SDK.

Google ahora ofrece un paquete ADT, que contiene Eclipse, el plugin ADT y el SDK para Android, todo ya configurado y listo para su uso.

  • Descargue el paquete ADT desde: http://developer.android.com/sdk.
  • Se trata de un archivo zip, que deberá extraer y colocar en el lugar que desee.
  • A continuación lanzaremos la herramienta, mediante el ejecutable Eclipse que podremos encontrar bajo la carpeta de instalación ADT.
2) Importar el proyecto
  • Primero descargue la última versión del “wrapper” Android. desde la página web Omnis.
Para importar el proyecto Omnis, deberá abrir Eclipse y hacer lo siguiente:
  • Seleccione la opción “Import” del menú “File”.
  • Una vez abierto el asistente, seleccione “General ≥ Existing Projects Into Workspace”.
  • Desde la siguiente ventana escoja “select archive file” y el archivo “wrapper” zip que descargó anteriormente, después pulse “Finish”.
3) Uso del proyecto
Al usar proyectos “wrapper” Android, intentaremos siempre hacer uso del último SDK disponible. Sin embargo, deberá tenerse en cuenta que se actualizan muy a menudo, por lo que podría suceder que no disponga de una versión en particular instalada del SDK.
  • Pulse botón-derecho sobre el nodo raíz del proyecto y seleccione “Properties”.
  • Bajo la sección “Android” de las propiedades, asegúrese de tener marcado “Project Build Target”. Si dispone de varios SDK instalados, seleccione el más reciente. 



Si no dispone de un SDK reciente, le recomendamos que lo instale y lo marque como el “Build Target” a utilizar. El último “wrapper” para Android requiere cómo mínimo el API 18, pero le sugerimos que utilice siempre el más reciente. Para instalar otras versiones del SDK, use el “Android SDK Manager” accesible desde la barra de herramientas de Eclipse, icono:


Personalización de aplicaciones Android


Una vez importado el “wrapper” en Eclipse, deberá personalizarlo para su aplicación particular. Este proceso comprende los pasos siguientes:

  1. Renombrar el proyecto
  2. Editar el fichero “config.xml”
  3. Cambiar el nombre del paquete
  4. Cambiar el nombre visible de la aplicación (App Name)
  5. Añadir iconos personalizados
  6. Añadir pantallas de transición personalizadas
  7. Eliminar elementos no requeridos
  8. Localizar su aplicación
  9. Agregar SCAFs (sólo para aplicaciones “off-line”)
  10. Agregar bases de datos para funcionamiento “off-line”
  11. Editar la ventana “Acerca de..”  
¡paso a paso! iremos viendo todo ésto en sucesivas entregas...

17 diciembre 2014

Aplicaciones para iOS (despliegue) (Parte 4 de 4)

A través de la tienda Apple (App Store)


DESCARGO DE RESPONSABILIDAD: Antes de llevar acabo el proceso que se describe a continuación, usted deberá leer los requisitos y las directrices de Apple sobre la publicación de aplicaciones. TigerLogic no se responsabiliza en cuanto a los contenidos de su aplicación.

Este proceso requiere de un “App Store Provisioning Profile”. Si no dispone de uno, consulte la sección “Configuración del entorno iOS” de la entrada "Aplicaciones para iOS (requerimientos, instalación y configuración de xCode)" en éste mismo blog.

El primer paso será crear un repositorio para sus aplicaciones en “iTunes Connect”.

  • Conéctese a “iTunes Connect” (https://itunesconnect.apple.com) y seleccione “Manage Your Apps”.
  • Pulse el botón “Add New App”, y siga los pasos del asistente para crear su repositorio. Tendrá que aportar datos descriptivos de su tienda, imágenes, etc. El asistente le proporcionará todas las instrucciones que necesite.
  • Al terminar, habrá obtenido un repositorio de aplicaciones en estado de “Prepare For Upload”.
  • Si está satisfecho con las descripciones, imágenes y etc. aportados, pulse “View Details” para ver su nuevo repositorio de aplicaciones y a continuación, pulse “Ready to Upload Binary” finalmente, siga los pasos del breve asistente que se abrirá a continuación.

  • Su repositorio de aplicaciones deberá estar en estado de “Waiting For Upload”. Si es así, podrá subir su aplicación desde xCode.
  • Abra el “Organizer” de xCode (Pulse: Cmd-Shift-2) y sitúese en la sección “Archives”.
  • Seleccione el archivo que construyó en la sección anterior (Construcción de una aplicación iOS) y a continuación, pulse el botón “Validate”.
    • Siga los pasos del asistente, indicando su repositorio de aplicaciones y su “App Store Provisioning Profile” cuando se le solicite.
    • Se realizarán una serie de controles sobre su aplicación, tratando de localizar cualquier cuestión que pueda causar su rechazo.
    • Si se encuentra algún problema, asegúrese de corregirlo (si es así deberá crear un nuevo archivo y re-validarlo) antes de seguir adelante. 



  • Si todo ha ido bien, abra el “Organizer” y seleccione de nuevo “Archive”, pero esta vez pulse el botón “Distribute”.
  • Al igual que antes, siga los pasos del asistente, indicando su repositorio de aplicaciones y su “App Store Provisioning Profile” cuando se le solicite.
  • Al final de este proceso, su aplicación se habrá subido y presentado, pasando a estar a la espera de ser revisada por Apple. Podrá comprobar el progreso de esta revisión en “iTunes Connect”. Conviene que después de subir su aplicación compruebe como se ve en su tienda, puede que no se vea como usted esperaba. (por ejemplo, tal vez quiera revisar alguna captura de pantalla)

Si la evaluación termina con éxito (lo cual puede llegar a tardar varias semanas), se convertirá en disponible desde la App Store y abierta a millones de potenciales usuarios.

16 diciembre 2014

Aplicaciones para iOS (despliegue) (Parte 3 de 4)

Desde un servicio web propio


Con sólo un poco más de trabajo que el descrito en el proceso anterior, podrá dar a sus usuarios un toque de profesionalidad, automatizado el proceso de instalación desde su sitio web.

Este proceso requiere de un “Ad-Hoc Provisioning Profiles”. Si no dispone de uno, consulte la sección “Configuración del entorno iOS” de la entrada "Aplicaciones para iOS (requerimientos, instalación y configuración de xCode)" en éste mismo blog.

  • Abra el “Organizer” de xCode (Pulse: Cmd-Shift-2) y sitúese en la sección “Archives”.
  • Seleccione el archivo que construyó en la sección anterior (Construcción de una aplicación iOS) y a continuación, pulse el botón “Distribute”. 


  • Sobre la ventana que se abrirá, seleccione “Save for Enterprise or Ad-Hoc Deployment” y después pulse “Next”.
  • Seleccione el “Distribution Provisioning Profile” que desee usar para firmar la aplicación y pulse “Next”.
  • Desde el cuadro de diálogo “Save As”, marque la casilla “Save for Enterprise Distribution”.

Esto ampliará el diálogo con varios campos nuevos que deberá rellenar del modo siguiente:

  • Application URL - Esta es la URL donde se podrá encontrar la aplicación dentro del servidor. Se tratará de un archivo .ipa por lo que tendrá el formato: http://www.miservidor.com/Aplicaciones_iOS/miAplicacion.ipa.
  • Title - Es el nombre que se mostrará para la aplicación mientras se descarga e instalación en el dispositivo. Una vez instalada, sólo se verá al nombre definido en su proyecto XCode.
  • Small Image URL - Esta es la URL de una imagen PNG con tamaño 57x57 ubicada en un servidor web, será el icono que se muestre de fondo mientras la aplicación se descarga e instala en el dispositivo. Una vez instalada, la aplicación mostrará el icono ya definido en su proyecto XCode.
El fichero imagen “Icon2.png”, (ya usado en su proyecto) puede ser el adecuado.


  • Tome nota de las ubicaciones indicadas para sus ficheros .ipa y .png, después pulse “Save”.
  • Esto creará en el lugar indicado, dos ficheros, uno con extensión .ipa y otro con extensión .plist. Cópielos sobre el servidor web y en el espacio indicado en “Application URL”.
Si con el paso del tiempo olvida cuales fueron los lugares indicados (URL’s), podrá consultar el fichero .plist, ya que contiene su configuración.
  • Copie también al servidor el fichero de imagen y en el espacio indicado en “Small Image URL”.
  • Cree un enlace para su página web, con el siguiente formato:
    itms-services://?action=download-manifest&url=≤URL hacia su fichero .plist≥
  • Es posible que deba configurar el servidor web para transmitir adecuadamente este tipo de archivos. Podrá hacerlo mediante ajustar los “MIME Types” para que reconozca los ficheros “.ipa” como “application/octet-stream” y los “.plist” como “text/xml”.
Ahora, si un dispositivo iOS sigue este enlace (y siempre que el dispositivo haya sido incluido en su “provisioning profile”), su aplicación se descargará e instalará.

10 diciembre 2014

Aplicaciones para iOS (despliegue) (Parte 2 de 4)

Despliegue manual


Este proceso requiere de un “Ad-Hoc Provisioning Profiles”. Si no dispone de uno, consulte la sección “Configuración del entorno iOS” de la entrada "Aplicaciones para iOS (requerimientos, instalación y configuración de xCode)" en éste mismo blog.

  • Abra el “Organizer” de xCode (Pulse: Cmd-Shift-2) y sitúese en la sección “Archives”.
  • Seleccione el archivo que construyó en la sección anterior (Construcción de una aplicación iOS) y a continuación, pulse el botón “Distribute”. 


  • Sobre la ventana que se abrirá, seleccione “Save for Enterprise or Ad-Hoc Deployment” y después pulse “Next”.
  • Seleccione el “Distribution Provisioning Profile” que desee usar para firmar la aplicación y pulse “Next”.
  • Seleccione el lugar de destino en el cuadro de diálogo “Save As” y pulse “Save”.

Esto creará un archivo .ipa en el lugar indicado.

Lo que ha obtenido es una aplicación iOS firmada y lista para ser instalada en los dispositivos de los usuarios. Podrán hacerlo importando el archivo .ipa a iTunes, sincronizando después sus dispositivos.

05 diciembre 2014

Aplicaciones para iOS (despliegue) (Parte 1 de 4)

Despliegue de aplicaciones iOS

Una vez construida la aplicación, estará lista para su instalación en los diferentes dispositivos. A continuación describimos tres diferentes opciones en cuanto a cómo hacerla disponible a sus potenciales usuarios:

  1. Despliegue manual

  2. Desde un servicio web propio

  3. A través de la tienda Apple (App Store)

Despliegue manual: Consiste simplemente en distribuir su archivo “App Ad-Hoc” a los usuarios de forma manual. Después deberán instalarlo en sus dispositivos por medio de de iTunes.

Desde un servicio web propio: Consiste en alojar su “App Ad-Hoc” en un servidor web, a fin de que sus usuarios puedan instalar la aplicación en sus dispositivos mediante un enlace.

A través de la tienda Apple (App Store): Para que su aplicación pueda figurar en la tienda Apple o “App Store”, el proceso es un poco más complicado, pero los beneficios hacen que merezca la pena. El proceso requerirá que su aplicación sea verificada manualmente por parte de Apple, esto hace que su implantación pueda dilatarse en el tiempo, tal vez hasta un par de semanas y sin garantía alguna de que será aceptada.

03 diciembre 2014

Aplicaciones para iOS (el "wrapper") (Parte 9 de 9)

Agregar bases de datos para funcionamiento “Off-line”.


Es posible añadir una base de datos SQLite preparada para su uso con la aplicación (naturalmente sólo si es construida mediante el “Target” para SQLite). La cual podrá ser usada desde los “form’s” mediante conexiones $sqlobject, e incorporada del siguiente modo:

  • Arrastre el fichero .db de SQLite desde el sistema de archivos, a la carpeta “Resources” de su proyecto xCode.
    • Asegúrese de seleccionar la opción “Copy items into destination group's folder”.
    • Asegúrese también de marcar la casilla para que quede agregado al “SQLite target”.
  • Edite el archivo “config.xml” de su proyecto e indique en su propiedad “≤ServerLocalDatabaseName≥” el nombre de la base de datos (incluyendo la extensión .db).
Tenga en cuenta que usted está creando una aplicación para un dispositivo móvil, por lo que no deberá pensar en una gran cantidad de datos a almacenar. Si necesita acceder a grandes bases de datos, seguramente deberá conectarse a un servidor Omnis y utilizar la funcionalidad de sincronización para actualizar datos con el dispositivo. Puede encontrar toda la información relacionada con Sync Server en la web de Omnis.

Construcción de una aplicación iOS


Una vez personalizado el proyecto para su aplicación, la creación de una versión distribuible es un proceso muy simple.

  • Seleccione el código fuente apropiado (dependiendo de si su aplicación soportará o no bases de datos locales) de la lista desplegable y que se encuentra en la parte superior de la ventana xCode. También seleccione el dispositivo iOS que necesite.

  • Seleccione “Archive” en el menú “Product” de xCode.
  • De éste modo guardará el fichero de su proyecto en su estado actual. Con el podrá poner su aplicación a disposición de los usuarios, ya sea manualmente o a través de la tienda Apple “App Store”. Dicho proceso se describe con detalle en la sección siguiente “Despliegue de aplicaciones iOS”, ya que el proceso es diferente en función del modo de distribución elegido.

02 diciembre 2014

Aplicaciones para iOS (el "wrapper") (Parte 8 de 9)

Agregar SCAFs (sólo para aplicaciones “off-line”)


Si su aplicación debe incluir soporte para modo “off-line”, deberá decidir si incluirá o no los ficheros “SCAF” ya pre-instalados en la aplicación. Si lo hace, la aplicación será más grande, pero podrá ejecutarse en modo sin conexión desde el mismo principio, es decir, sin necesidad de conexión con el servidor Omnis para su actualización.

Para incluir los ficheros “SCAF” en la aplicación, deberemos hacer lo siguiente:

  • Busque la carpeta html/sc localizable bajo el raíz de la instalación Omnis Studio.
    • En caso de Windows, será bajo el directorio AppData, por ejemplo en: C:\Users\≤usuario≥\AppData\Local\TigerLogic\OS6.X\
  • Localice el “App SCAF” de su aplicación. (Un archivo con extensión .db dentro del directorio “sc” y con el mismo nombre que tiene su librería)
  • Localice también el “Omnis SCAF”. (Un archivo omnis.db situado en sc/omnis/)
  • Importe ambos archivos SCAF a su proyecto en xCode, situándolos dentro del directorio “OmnisJSWrapper/Resources”.
    • La forma más sencilla de hacerlo es arrastrándolos desde el Finder a su proyecto xCode. Asegúrese de seleccionar la opción “Copy Files” y de marcar las casillas “add to all of the targets”.

28 noviembre 2014

Aplicaciones para iOS (el "wrapper") (Parte 7 de 9)

Eliminar elementos no requeridos


Cuando construimos una determinada aplicación, es probable que no queramos incorporar todos los posibles ajustes de conexión. Para lograrlo, necesitaremos desactivar lo que no necesitemos del “Settings.bundle”.

  • Abra mediante xCode el proyecto y seleccione “Settings.bundle”.
  • Quite la marca de los “target’s” no requeridos, de entre los mostrados en “Target Membership”. 


26 noviembre 2014

Aplicaciones para iOS (el "wrapper") (Parte 6 de 9)

Localizar su aplicación


La localización, sólo está soportada en versiones 1.1.3 o superiores del “wrapper” iOS.

Si desea traducir los textos utilizados por la aplicación “wrapper”, podrá hacerlo tal y como describimos a continuación. Si el usuario configura su dispositivo para su uso con alguno de los idiomas soportados, se utilizarán los textos según la traducción elegida.

  • Sitúese sobre la raíz del proyecto en el “Project Navigator” y seleccione la pestaña “Info” del proyecto.
     
  • Sitúese bajo la sección “Localizations” y añada un nuevo lenguaje.


  • Sobre la ventana que aparece a continuación, asegúrese de seleccionar los dos archivos “Localizable.strings” e “InfoPlist.strings”. 
  • Si ahora desde nuestro “Project Navigator” nos situamos sobre nodo “Localizable.strings”, observaremos que puede ser ampliado. Si así lo hacemos, veremos que se ha creado una copia del archivo para el nuevo idioma.
  • Este archivo contiene grupos emparejados “key-value”. Las “keys” (situadas a la izquierda del signo igual) deberán dejarse como están, sin embargo, los “values” (situados a la derecha del signo igual) deberán traducirse al idioma elegido.
  • Asegúrese de que cada línea termina siempre con un punto y coma.

Si deseáramos cambiar algunos de los atributos de nuestro “application package” (como por ejemplo, el nombre de la aplicación, el icono, etc.), podríamos hacerlo del siguiente modo:

  • Busque el archivo “InfoPlist.strings” de su proyecto, localizable bajo el nodo “Supporting Files” amplíelo y escoja el correspondiente al idioma que desee. 
  • Cómo en el caso anterior, puede ser construido utilizando pares “key-value”, es decir con el formato: "Key Name" = "Key Value";
  • En este caso los nombres “key” deben coincidir con los definidos en el fichero “≤Nombre Proyecto≥-Info.plist. (por ejemplo “OmnisJSWrapper-Info.plist) La acción predeterminada no muestra éstos valores, por lo que deberá pulsar clic derecho sobre el nombre del archivo y escoger la opción “Open As ≥ Source Code” para verlos.
  • Recuerde que cada línea debe terminar con un punto y coma.