Etiqueta

28 de octubre de 2014

Aplicaciones para iOS (requerimientos, instalación y configuración de xCode)

Requerimientos iOS


Para construir y desplegar aplicaciones iOS necesitará lo siguiente:

  • Mac OS X 10.7 o superior
  • xCode 4.5 o superior
  • $99 - $299 (cuota anual)

Instalación de xCode


Para la construcción de aplicaciones iOS, es imprescindible instalar xCode. Si lo desea puede descargarlo (para OS X 10.7 o posterior) a través de Mac App Store.

Configuración como desarrollador autorizado


Para la correcta creación de aplicaciones iOS, es necesario que su código esté firmado y hacerlo en el momento de su compilación. El primer paso del proceso será inscribirse en uno de los programas para desarrolladores de Apple iOS.

Apple ofrece 3 diferentes opciones de inscripción en el “iOS Developer Program”:

  • Free - Permite descargar el SDK de iOS y probar las aplicaciones sobre el simulador, pero no podrá instalarlas sobre un dispositivo real.
  • Standard ($99 anuales) - Permite subir aplicaciones en la tienda “AppStore”, he impone un máximo de 100 dispositivos "Ad-Hoc" (modo test). 
  • Enterprise ($299 anuales) - Esta es la opción para compañías grandes, las cuales dispondrán de un “Dan & Broadstreet Number” (DUNS). Al igual que en el caso anterior, se permite la distribución de aplicaciones a través de la AppStore, y no impone límite en el número de dispositivos "Ad-Hoc".

Seguramente la gran mayoría de los desarrolladores Omnis se inscribirán en el programa “Standard”, las indicaciones incluidas a continuación suponen el uso de ésta modalidad.

Independientemente de la modalidad elegida, podrá registrarse como empresa o como individuo. La inscripción como empresa le ofrece la posibilidad de agregar miembros al equipo, mientras que la inscripción como individuo no lo permite.

Una vez registrado como desarrollador iOS, deberá iniciar una sesión en el “iOS De Center” y seguir los pasos que le mostramos a continuación:

Certificados


  • Abra la sección “Certificates” de su cuenta “iOS Dev Center” y seleccione el tipo “Production”.
  • Pulse sobre el botón + para abrir el asistente que le guiará durante la creación del certificado.

  • Cuando se le pida que seleccione el tipo de certificado, deberá elegir dentro de “Production” el tipo “App Store and Ad Hoc”.
    • En caso de que no tenerlo ya instalado, use el enlace que aparece en esta misma página para descargar e instalar el “Intermediate Certificates” (Worldwide Developer Relations Certificate Authority).
  • El asistente le guiará a través del resto del proceso de creación.
  • Una vez creado el certificado (y asociada su clave privada), es importante que guarde una copia del mismo en un lugar seguro.
    • Abra el “Keychain Access” localizado en “Applications/Utilities/”.
    • Pulse sobre la categoría “Certificates” localizada en la barra lateral y después sobre el certificado que acaba de crear.
    • Pulse botón-derecho sobre el certificado y escoja la opción “Export”.
    • Manténgalo en lugar seguro - si cambia de hardware o por cualquier otra razón pierde el certificado, podrá importarlo de nuevo desde esta copia de seguridad. Cualquier actualización posterior de sus aplicaciones, deberá ser firmada con el mismo certificado, de modo que esto es muy importante.

Identificadores


Un “App ID” (identificador de aplicación) determina los que podrán ser usados para realizar firmas mediante su perfil.
  • Abra la sección “Identifiers” de su cuenta “iOS Dev Center” y seleccione “App IDs”.
  • Pulse sobre el botón + para abrir el asistente que le guiará durante la creación del “App ID”.
  • Puede optar por crear un “Explicit App ID” (permite firmar un único identificador de aplicación) o un “Wildcard App ID” (permite firmar cualquier aplicación cuyo identificador coincida con el formato especificado).
    El formato para los identificadores de aplicación consiste en un nombre de dominio inverso. Por ejemplo “com.entidad.aplicacion”. De modo que deberá crear el identificador siguiendo éste patrón, tanto si está creando un “Explicit App ID”, como un “Wildcard App ID”. Está permitido el uso del carácter “*”, para indicar que se usará cualquier nombre, por ejemplo “com.entidad.*”.
    Sea cual sea el nombre elegido, téngalo siempre a mano, ya que tendrá que hacer uso de él más tarde, cuando tenga que asignar un identificador a su aplicación.
  • Las aplicaciones o “wrapper’s” Omnis, no requieren “App Services”.

Dispositivos


Si va a desplegar sus aplicaciones directamente (Ad-Hoc) y no a través de la “App Store”, deberá registrar cada dispositivo susceptible de ejecutar su aplicación.

  • Abra la sección “Divices” de su cuenta “iOS Dev Center”.
  • Pulse sobre el botón + para abrir la página que le permitirá añadir el dispositivo.

  • Los diferentes dispositivos deberán ser añadidos con su UDID (Ónique Device Identifier). Podrá localizar el UDID del dispositivo mediante conectarlo a iTunes y hacer clic sobre su número de serie. En la dirección http://whatsmyudid.com/ podrá encontrar una práctica explicación sobre como hacer esto.

Aprovisionamiento de perfiles (Provisioning Profile)


Un “Provisioning Profile” posibilita la unión de un Certificado (Certificate) con un “App ID” (también la de un grupo de dispositivos (Devices) con un “Ad Hoc Provisioning Profiles”). Es mediante el “Profile” resultante, con el que podrá firmar su aplicación (combinado con el “certificate/private key” almacenada en su llavero).

  • Abra la sección “Provisioning Profiles” de su cuenta “iOS Dev Center” y seleccione “Distribution”.
  • Pulse sobre el botón + para abrir el asistente que le guiará durante la creación de un nuevo “Provisioning Pofile”.

  • Podrá crear un “Distribution Provisioning Profile” de tipo “Ad Hoc” (despliegue directo) o bien de tipo “App store”.
    Deberá seleccionar en cada momento el que coincida con el modo de distribución elegido. Asegúrese de crear perfiles de tipo “Distribution”  y no del tipo “Development”.
    Es posible la creación de varios “Provisioning Profiles”, a fin de poder hacer uso de uno o más tipos, si así lo desea.
  • Siga los pasos del asistente. Una vez completado, podrá descargar el “Provisioning Profile”, para después hacer doble-clic desde el Finder sobre el archivo descargado, haciendo posible su incorporación a xCode.


9 de octubre de 2014

Construcción de aplicaciones para iOS, Android y BlackBerry con Omnis Studio

Además de utilizar la nueva tecnología “JavaScript Client” en la construcción de aplicaciones ejecutables sobre el navegador de cualquier ordenador, tablet o dispositivo móvil, podemos usarla en la creación de aplicaciones totalmente terminadas para dispositivos iOS, Android y BlackBerry. Dichas aplicaciones podrán incluso operar completamente “off-line”, es decir, sin necesidad de conexión a ningún tipo de servidor, en éste caso tan sólo requerirá de un número de serie especial instalado en su SDK Omnis, el “Serverless Client Serial”.

Para la construcción de dichas aplicaciones terminadas, disponemos de tres aplicaciones "esqueleto" construidas a medida de cada sistema, denominadas “wrapper” y presentadas en la forma de proyectos JavaScript: una para iOS, una para BlackBerry10 y otra para Android.

Dichos proyectos posibilitarán la creación de aplicaciones personalizadas, mediante una sencilla integración de clases “remote-form”, que permitirán a su vez el acceso a gran parte de las funcionalidades implementadas de modo nativo en el dispositivo, tales como la lista de contactos, función GPS y cámara de fotos.

Mediante las sucesivas entregas que iré publicando en éste blog, comprenderemos los diferentes pasos necesarios para crear y desplegar aplicaciones personalizadas para cada una de las plataformas móviles mencionadas. Estudiaremos paso a paso, todo lo que necesitaremos saber, tanto para la creación de la aplicación, como para su despliegue a los usuarios finales, ya sea que se haga a través de la tienda de aplicaciones del propio dispositivo o de manera autónoma.

Les sugiero que se suscriban a "Aula Omnis" a  través de cualquiera de las redes disponibles Facebook, Twitter, Linkedin, Google+, RSS FeedBurner o como seguidores de éste blog, a fin de no perderse las sucesivas entregas.

Reciban un cordial saludo.

8 de octubre de 2014

Creación automática de tablas en el servidor

En algunos casos, puede tener sentido la ejecución de un proceso, que cree las tablas que falten en el servidor automáticamente tras iniciar la sesión con la base de datos, la intención sería, causar que las tablas necesarias para el correcto funcionamiento de la aplicación existan. Dicho proceso podría lanzarse cuando la aplicación es ejecutada por primera vez, cuando se entrega una nueva versión de la base de datos, cuando se cambie a un nuevo servidor de base de datos o a una base de datos diferente.

Puesto que estamos haciendo uso de clases "schema" durante el desarrollo de nuestra aplicación, es posible compararlas con las tablas correspondientes en el servidor, para saber si existen realmente y en caso necesario crearlas.

Partiendo de la base de que tenemos una variable "task" denominada "tSessObj" con una conexión válida a una base de datos. Crearemos un "statementobject" que más tarde utilizaremos para enviar las sentencias SQL necesarias a la base de datos, lo haremos sobre la variable local "lStatObj" (de tipo "Object" y sin subtipo).

Do tSessObj.$newstatement(#CT) Returns lStatObj

La variable "Object" "lStatObj" ahora dispone de los métodos y propiedades necesarios y que pueden ser localizados mediante el "Interface Manager" (opción disponible, mediante pulsar el botón derecho del ratón sobre la variable) si lo deseamos.

A continuación, utilizaríamos el código que mostramos más abajo para obtener las tablas alojadas en el servidor de base de datos, recogiéndolas sobre la variable de tipo lista "lDBTableList", tal como sigue:

Do lStatObj.$tables(kStatementServerTable)

Tenga en cuenta que sólo podrá ejecutar éste código mientras disponga de una instancia activa, es decir, mientras exista una conexión válida con la base de datos. Por lo que, si desea depurar el código, deberá marcar un punto de interrupción en el lugar que desee de la "Startup_Task", para cargar sobre la lista el resultado del método anterior, escriba:

Do lStatObj.$fetch(lDBTableList,kFetchAll)

El segundo paso será crear otra lista, que contenga las clases "schema" existentes en nuestra librería. Para ello usaremos también dos variables locales que la definirán, tal y como sigue:

Do lTablesForAppList.$define(lTableName,lSchemaClassName)
Do $schemas.$appendlist(lTablesForAppList,$ref.$servertablename,$ref.$name)

Ahora tendremos que ejecutar un bucle "For" que ira recorriendo la lista de clases "schema" y creando las nuevas tablas en el servidor según sea necesario:


For lTablesForAppList.$line from 1 to lTablesForAppList.$linecount() step 1
   Do lTablesForAppList.$loadcols()
   ; carga la línea actual en los campos correspondientes lTableName y lSchemaClassName
   Do lDBTableList.$search(lDBTableList.TableOrViewName=lTableName,kTrue,kFalse,kFalse,kFalse)
   If not(lDBTableList.$line) ;; cuando no existe la tabla
      Do lRow.$definefromsqlclass(lSchemaClassName)
      ; define una variable local de tipo "row" con el nombre del "schema" que se acaba de cargar
      Do lRow.$sessionobject.$assign(tSessObj) ;; ¡importante! hace que $createnames funcionen correctamente
      ; crea la nueva tabla en el servidor:
      Do lStatObj.$execdirect(con('CREATE TABLE ',lRow.$servertablenames(),'
(',lRow.$createnames(),') ')) Returns lStatus
      If not(lStatus)
         Breakpoint -> implementar aquí el controlador de errores
      End If
   End If
End For

Naturalmente este código deberá ejecutarse después de abrir la sesión con la base de datos sobre el método $construct de la "Startup_Task", cómo puede observar, se comprueba si existe la tabla en el servidor en correspondencia con lo definido en su clase "schema" y si no existe será automáticamente creada.