martes, 30 de diciembre de 2014

Objetos de Interfaz

La aplicación WatchKit utiliza objetos de interfaz para interactuar con la interfaz. 

Un objeto de Interface es una instancia de la clase WKInterfaceObject, o más específicamente una de sus subclases. WatchKit ofrece objetos de interfaz para la mayoría de los elementos visuales. Objetos de interfaz no son vistas

Son objetos proxy que comunican con las views utilizadas en la UI del Apple Watch.


CREACIÓN DE UN OBJETO DE INTERFAZ

Puede crear objetos de interfaz y conectar a los elementos correspondientes en el storyboard.

Nunca realice alloc / init de los objetos. Durante la inicialización del objeto, WatchKit crea los objetos de la interfaz para los outlets conectados automáticamente.

Al añadir propiedades declaradas para el objeto interfaz, definir la clase con el tipo adecuado e incluir la palabra clave IBOutlet en la declaración. 

Por ejemplo:



@interface PantallaController()
@property (weak, nonatomic) IBOutlet WKInterfaceLabel* label;
@end


Conecte cada propiedad declarada en el interface controller al correspondiente elemento del storyboard. Control-drag desde un elemento en el storyboard a la definición de la propiedad en la interfaz de la clase para crear un outlet.


CONFIGURAR LA INTERFAZ EN TIEMPO DE DISEÑO

En tiempo de diseño, usar Xcode para configurar la apariencia de los elementos visuales en el storyboard. Puede cambiar el texto, color y fuente de un WKInterfaceLabel objeto.


CONFIGURAR LA INTERFAZ EN TIEMPO DE EJECUCION

En el código de WatchKit extension, usted actualiza la interfaz de usuario ejecutando métodos de alguna referencia de un objeto de interfaz. 

Un controlador de interfaz puede cambiar la configuración de sus objetos sólo mientras está activo, que incluye el tiempo de inicialización. 

Llamar a los métodos init, awakeWithContext: y willActivate para asignar datos a las etiquetas, imágenes y otros objetos a la interfaz de usuario. 

En tiempo de inicialización, es importante dejar que WatchKit inicializar el interface controller antes de hacer cualquier otra acción. Los métodos de inicialización de WKInterfaceController es donde WatchKit crea objetos de interfaz de la aplicación. Por lo que llamar primero a la implementación super.

Swift

- (instancetype)init {



  • // Primero llamar al método super
  • self = [super init];
  • if (self){
  • // Ahora es seguro utilizar los objetos de la interfaz
  • [self.etiqueta setText:@"Texto etiqueta:"];
  • }
  • return self;
  • }

Objective-C
  • override init {
  • // Primero llamar al método super
  • super.init;

  • // Ahora es seguro utilizar los objetos de la interfaz
  • label.setText("Hello New World");
  • }

Para mejorar el rendimiento y la vida de la batería, WatchKit framework optimiza cualquier intento de establecer los valores de los objetos de interfaz en la aplicación. Siempre que sitúe los valores de uno o más objetos de interfaz en la misma iteración,  los nuevos valores se unen para transmitir a Apple Watch los valores en una sola llamada.


RESPONDER A LAS INTERACCIONES DEL USUARIO

Utilizar buttons, switches y otros controles para indicar cambios en la aplicación. Cuando se pulsa un botón o el valor de otros cambias de control, WatchKit llama al método acción asociado en el controlador de interfaz. Cada tipo de objeto tiene un formato requerido.  Cambie el nombre de los métodos de acción a algo apropiado para su aplicación.

Objeto
Método Acción
Button
- (IBAction)buttonAction
Switch
- (IBAction)switchAction:(BOOL)on
Slider
- (IBAction)sliderAction:(float)value
Menu Item
- (IBAction)menuItemAction










Presentar Interface Controller de forma Modal

Una interfaz modal es una manera de interrumpir el flujo de la navegación actual temporalmente para pedir al usuario o mostrar información.

Puede presentar una interfaz modal desde cualquier interface controller, independientemente del estilo de navegación utilizada por su aplicación. Para mostrar un controlador de interfaz de forma modal, realice una de las siguientes opciones:

- Crear un segue modal en el storyboard.

- Utilizar el método presentControllerWithName:context: para presentar una interface controller de forma modal.

- Utilizar el método presentControllerWithNames:contexts: para presentar dos o más interface controller utilizando un layout basado en páginas.


Al crear un segue modal, conecte el segue al interface controller que desea mostrar. Cuando utiliza un segue para presentar varios interface controller, primero utilice next page segue para conectar el modal interface controller, de la misma manera que conecta para el layout basado en páginas. 

El modal segue debe conectar el primer interface controller del grupo. Si conecta a un interface controller en el medio del grupo, los interface controller precedentes en el grupo no se mostrarán.

La esquina superior izquierda de un interface controller tipo modal muestra el título del interface controller.  WatchKit desestima el modal interface. Al mostrar la información, es posible establecer el texto de Hecho o Cerrar. Si no se especifica el título del Interface Controller, WatchKit muestra la cadena Cancelar por defecto.




Implementar una interfaz basada en páginas

Se crea una interfaz basada en páginas en el storyboard de la App creando un segue  desde un interface controller a otro interface controller:

- En el storyboard, añadir interface controller para cada página de la App.

- Control-click desde el interface controller inicial y arrastrar hacia otro interface controller. El segundo interface controller se resaltará indicando que es posible un segue.

- Soltar el mouse.

- Seleccionar next page para establecer la relación.

- Utilizar la misma técnica para crear los siguientes. El orden en que se crea los segues define el orden de las páginas de la interfaz.


Los segues que se crean en el storyboard define la interfaz basada en páginas que se carga cuando se inicia la App. 

Puede cambiar el conjunto de páginas a mostrar llamando a reloadRootControllerWithNames: context: al principio de ejecutar la App. 
Puede llamarse en el método init de la interface controller principal forzando a WatchKit a cargar un conjunto diferentes de páginas.

Todos los interface controller de una interface basado en páginas se crean e inicializan antes de mostrar la interfaz, pero sólo se muestra un controlador de interfaz al mismo tiempo.

Normalmente WatchKit muestra el primer interface controller. Para cambiar el interface controller que se muestra inicialmente, ejecutar el método becomeCurrentPage desde init o awakeWithContext.

A medida que el usuario navega de una página a otra, WatchKit activa y desactiva interface controller. 

Durante la transición, se llama al método didDeactivate del interface controller actualmente visible, seguido de una llamada al método willActivate del interfazce controller que está a punto de ser llamado.

Utilizar el método willActivate para actualizar el contenido de su interface controller para reflejar los cambios de última hora.



Navegación Interfaz

Para las App WatchKit con más de una pantalla de contenido, debe elegir una técnica para navegar entre pantallas. WatchKit Apps admiten dos estilos de navegación, que son mutuamente excluyentes:

Page-based: (Basado en páginas)

 Este estilo es adecuado para aplicaciones con modelos de datos simples, donde los datos de cada página no está estrechamente relacionado con los datos en cualquier otra página. 
Una interfaz basada en páginas contiene dos o más controladores de interfaz independientes, sólo uno de los cuales se muestran en un momento dado.
En tiempo de ejecución, el usuario navega entre controladores de interfaz al deslizar izquierda o derecha en la pantalla. 

Hierarchical: (Jerárquica) 

Este estilo es adecuado para aplicaciones con modelo de datos más compleja o aplicaciones cuyos datos sean más jerárquica. Una interfaz jerárquica siempre comienza con un controlador de interfaz de raíz única. En ese controlador de interfaz, usted proporciona controladores que al pulsar, muestran nuevos controladores de interfaz en pantalla.



Las aplicaciones pueden utilizar presentaciones modales para complementar su estilo de navegación base. 

Presentaciones modales son una manera de interrumpir el flujo de trabajo del usuario actual para solicitar información de entrada o la pantalla.

 Puede presentar controladores de interfaz de forma modal de ambas aplicaciones basadas en páginas y jerárquicas. La presentación en sí modal puede consistir en una sola pantalla o varias pantallas dispuestas en un diseño basado en páginas.

sábado, 27 de diciembre de 2014

Internacionalizando su interfaz

Los Storyboards de la WatchKit App tiene una internacionalización de base de forma predeterminada. Esta característica hace que cualquier string es añadida al Localizable.strings del proyecto.

Todo lo que tiene que hacer es traducir las cadenas en los archivos para cada idioma de destino e incluirlos en la App. 

Al pensar en la internacionalización, su principal preocupación debe ser la organización de su interfaz para que las etiquetas y los controles que contiene texto tienen espacio para expandirse. 

Para ver el texto y las imágenes que se especifica mediante programación, utilizar las mismas técnicas de internacionalización que utilizar para las aplicaciones iOs y OS x. 

Utilizar NSLocalizedString para cargar strings desde un fichero de recursos.

Utilizar NSNumberFormatter para formatear valores numéricos.

Utilizar NSDateFormatter para formatear valores de fechas.

lunes, 22 de diciembre de 2014

Como actua el Interface Controllers

Interfaz Controllers administran el contenido de sus escenas del storyboard. Cada Interfaz Controller utiliza outlets para almacenar referencias a objetos de la escena y define los métodos para responder a las interacciones del usuario.

En tiempo de ejecución utilizar los métodos init, awakeWithContext y willActivate para configurar la interfaz. En estos métodos realizar las tareas:

- Obtener los datos que se desea mostrar.

- Establecer los valores iniciales y configuración de etiquetas, imágenes y otros controles.

- Ocultar objetos de interfaz que no necesites y mostrar los que necesite.


    domingo, 21 de diciembre de 2014

    App WatchKit básico

    Xcode suministra storyboard como apoyo para crear la interfaz de la apps WatchKit. Cuando se agrega una App WatchKit al proyecto, Xcode ofrece un storyboard para implementar la interfaz de usuario. 

    El storyboard tiene al menos una escena para la interfaz de usuario de la WatchKit App. Tú puedes añadir escenas (scenes) al storyboard desde la librería de objetos.

    Cada nueva escena en el storyboard extiende de WKInterfaceController. ( Para las interfaz de notificaciones, extender de WKUserNotificacionInterfaceController ). Para cada nueva escena, introducir un nombre de su controlador de interfaz en el inspector de Identidad. No incluir ningún código en la WatchKit App.



    iOS Tecnologias

    WatchKit Extension tiene acceso a las mismas tecnologías que se encuentran en aplicaciones iOs, pero como son extensiones, el uso de algunas tecnologías no se recomiendan o están restringidas.

    - No utilizar tecnologías que soliciten permisos del usuario, como Core Location.

    - No utilizar ejecución en background. WatchKit Extension sólo se ejecutan mientras que el usuario interactúa con la app WatchKit y por lo tanto se considera ejecución foreground.

    - Evite realizar tareas de larga ejecución. WatchKit Extension se suspende poco después de que el usuario deja de interactuar con la app WatchKit. La extensión podría ser suspendida antes de que nos retornase los datos solicitados.

    La mejor solución para llevar a cabo cualquier tarea de larga ejecución es dejar que la aplicación iOs realice la tarea. Por ejemplo, en lugar de iniciar los servicios de localización en WatchKit Extension, iniciarlo en la aplicación iOS.

    Utilizar el método openParentApplication:reply: para iniciar tareas y recibir una respuesta para comunicar datos entre su aplicación para iOS y WatchKit Extension. 

      miércoles, 17 de diciembre de 2014

      Ciclo de vida de una WatchKit App


      Las interacciones de los usuario sobre Apple Watch lanza la aplicación e inicia el ciclo de vida de la App. Cuando el usuario inicia la App en el Apple Watch, el iPhone del usuario inicia automáticamente su WatchKit Extension

      La WatchKit de la app y el WatchKit Extension se conectan para que fluyan los mensajes. Esos mensajes continúan fluyendo hacia atrás y adelante hasta que el usuario deja de interactuar con la aplicación. 

      En ese momento, iOS suspende la ejecución de su extensión.

      Durante la ejecución, WatchKit crea el controlador de interfaz apropiado. Si el usuario lanza el Glance, se crea el interfaz controller asociado con el Glance. 

      Si el usuario lanzó directamente la aplicación, se carga el interfaz controller desde el storyboard. En todos los casos, WatchKit Extension suministra un WKInterfaceController subclase para gestionar la correspondiente interfaz.


      Mientras que el controlador de interfaz muestra la pantalla, las interacciones del usuario son manejadas por sus controladores de interfaz. A medida que el usuario interactúa con tablas, botones, y otros controles, WatchKit ejecuta los métodos para que puedan responder. Utiliza los métodos para actualizar su interfaz o realizar otras tareas. Para realizar tareas en otro momento, utilizar un objeto NSTimer para ejecutar código en el momento que usted designe.

      WatchKit Extension sigue funcionando solo cuando el usuario está interactuando con la aplicación en Apple Watch

      Las interacciones en Apple Watch están destinadas a ser breves, por lo que los controladores de interfaz deben ser ligeros y nunca realizar tareas de larga ejecución.

      Cuando el usuario sale de su aplicación de forma explícita o deja de interactuar con el Apple Watch, iOS desactiva el controlador de interfaz actual y suspende se WatchKit Extension.









      jueves, 11 de diciembre de 2014

      Arquitectura WatchKit

      Apps construidas para Apple Watch constan de dos partes:

      Una App WatchKit y una WatchKit Extension

      - La App WatchKit reside en Apple Watch del usuario y contiene los archivos storyboard y de recursos, pero sin código
      - La WatchKit Extension reside en el iPhone del usuario (dentro de su aplicación iOs que contiene) y contiene los archivos de código y de recursos para la gestión de la interfaz de su aplicación WatchKit.

      La App WatchKit y la WatchKit Extension trabajan en conjunto para implementar la interfaz de la aplicación. 

      Cuando el usuario interactúa con la aplicación Apple Watch, elige una escena apropiada para mostrar desde el storyboard de la App WatchKit.  

      Por ejemplo, si el usuario selecciona el Glance de la app, elige una escena del Glance. Después de elegir la escena, WatchKit comunica al iPhone para lanzar WatchKit Extension y crear los objetos necesarios para gestionar esa escena. 

      Cada escena de la aplicación es manejado por un solo objeto controlador de interface, que es una instancia de la clase WKInterfaceController

      Un controlador de interaz en WatchKit juega un papel similar al de un controlador de vista en iOS: presenta y administra el contenido en la pantalla y responde a las interacciones del usuario con ese contenido

      A diferencia de un controlador de vista, un controlador de interfaz no gestiona las vistas de su interfaz. Estas vistas se gestionan en las escenas por WatchKit.

      Cuando el usuario inicia una aplicación desde la pantalla de inicio, el sistema carga el inicial interface controller escena desde el storyboard, mientras que la extensión WatchKit Extension crea el controlador de interface correspondiente.

      WatchKit llama a los métodos de controlador de interfaz para dar al código de la aplicación la oportunidad de configurar etiquetas y otros contenidos. Una vez que la escena se inicializa ,WatchKit la presenta al usuario. 
      Las interacciones con los botones y otros controladores en la escena hacen que los métodos del controlador de interfaz se ejecuten.   

      Dependiendo del estilo de navegación utilizada por la aplicación, WatchKit puede crear un controlar de interfaz o varios controladores de interfaz inicialmente. 

      Las interfaces basados en páginas suelen terne dos o más controladores de interfaz, cada una de las cuales se crea en el momento del lanzamiento. 

      Glances y Nofications muestran sólo un controlador de interfaz única que contiene la información correspondiente. 


      Custom Local and Remote Notifications

      Customizar Interfaces para las Notificaciones Locales y Remotas

      Apple Watch trabaja con el iPhone para mostrar notificaciones locales y remotas.

      Inicialmente, Apple Watch utiliza una interfaz mínima para mostrar notificaciones entrares.

      Cuando el movimiento del usuario indica un deseo de ver más información, la interfaz mínima cambia a una interfaz más detallada que muestra el contenido de la notificación.

      Puede personalizar esta interfaz detallada y añadir gráficos personalizados u organizar los datos de notificación de manera diferente que la interfaz predeterminadas proporcionada poe el sistema.

      Apple Watch ofrece soporte automático para las notificaciones recurribles introducidas en iOS 8. 

      Notificaciones recurribles son una manera de agregar botones a su interfaz de notificación que reflejan las acciones que el usuario pueda obtener. 

      Por ejemplo, una notificación para una reunión podría incluir botones para notificaciones recurribles, Apple Watch agrega los botones correspondientes para las interfaces de notificación en Apple Watch. Todo lo que necesita es hacer manejar las acciones seleccionadas por el usuario en su WatchKit Extension.

      miércoles, 10 de diciembre de 2014

      Glance Interface


      Un Glace Interface está enfocado para presentar información importante que el usuario necesita en ese momento. 

      Glance no contiene scroll, por lo que toda la interfaz de la vista debe caber en una sola pantalla. 

      Glance es de sólo lectura y no puede contener buttons, switches o otro control interactivo. Al pulsar sobre el Glance lanza la Watch App.

      El código para la gestión de un Glance reside en su WatchKit Extension

      Las clases que se utilizan para gestionar su interfaz simple son los mismos que utiliza para la aplicación del Watch. 

      A pesar de que las clases y comportamientos básicos son el mismo, un Glance es más simple de implementar porque no responde a interacciones del usuario.

      Watch App


      Una Watch App es la base para interactuar con su contenido en Apple Watch. La aplicación es accesible desde la pantalla de inicio y suele proporcionar sólo una parte de la funcionalidad de la aplicación para iOS

      El propósito de una aplicación de reloj es dar al usuario un acceso rápido pero más en profundidad a los datos relacionados con la App.

      La Watch App funciona en tándem con una WatchKit Extension correspondiente que se ejecuta en el iPhone del usuario. 

      La Watch App no contiene ningún código y sólo se ejecuta para almacenar la interfaz gráfica y los archivos de recursos asociados con la interfaz de usuario.  

      WatchKit Extension es el cerebro de la operación. Contiene la lógica de negocio y el código que se utiliza para administrar su contenido, responder a las interacciones del usuario, y actualizar su interfaz de usuario.  

      Y ya que se ejecuta en el iPhone del usuario,  WatchKit Extension puede coordinarse fácilmente con su aplicación para iOS para recoger las actualizaciones de ubicación o realizar otras tareas de larga ejecución.


      Apple Watch

      Acerca de Apple Watch / WatchKit

      Apple ofrece a los usuarios una manera muy personal y discreta para acceder a los datos. En lugar de extraer el móvil del bolsillo, un usuario puede echar un vistazo a su Apple Watch para visualizar la información de forma rápida.

      Las aplicaciones Apple Watch deben de ofrecer la información más relevante de la manera más sencilla.

      Apple Watch requiere la presencia de un iPhone para ejecutar la aplicación desarrollada.

      Crear un aplicación requiere dos ejecutables separados: una aplicación de reloj que se ejecuta en en Apple Watch y un WatchKit extension que se ejecuta en el iPhone del usuario.

      - La aplicación del reloj contiene sólo la interfaz y archivos de recursos.

      - La extensión WatchKit contiene el código para la gestión de interfaz de usuario del reloj de aplicaciones y responder a las interacciones del usuario. 

      Tres tipos de interacciones con Apple Watch.


      • Watch App  contiene la interfaz de usuario completa de la aplicación. El usuario lanza la aplicación en la pantalla principal y utiliza la aplicación para ver o manipular datos.
      • Glance App es una interfaz sólo de lectura que se utiliza para mostrar la información oportuna y relevante de su aplicación.
      • Custom Notification permite modificar la interfaz predeterminada que se muestra para las notificaciones locales y remotas recientemente recibidas y añadir gráficos personalizados, contenido y formato. 

      Se requiere una aplicación de reloj para todas las interacciones en Apple Watch. 


      Debido a que una aplicación de reloj extiende el comportamiento de su aplicación para iOS existente, la Watch App y la WatchKit extension se agrupan y se empaquetan dentro de la aplicación iOS. 


      Durante la instalación de la aplicación para iOS, el sistema solicita al usuario que instale la aplicación del reloj si un Apple Watch emparejado esta presente.