SlideShare una empresa de Scribd logo
1 de 48
Descargar para leer sin conexión
Development
tvOS Development DATOS DE CONTACTO
ORADORES
Juliana Caccavo: juliana.caccavo@globant.com / @JulieCaccavo
Daniel Pilla: daniel.pilla@globant.com / @pillade
Matías Fernandez: mr.fernandez@globant.com / @MatiasSF9
Matías Gelós: matias.gelos@globant.com / @matiasgelos
Luciano Rubinsztejn: luciano.rubinsztejn@globant.com / @axo_insanit
Matías Burcheri: matias.burcheri@globant.com / @matbur
COMMUNICATIONS
hello@globant.com / @Globant
WANT TO JOIN OUR TEAM?
cv@globant.com
tvOS Development CONTENT
CÓDIGO
Construyendo la app base de tvOS
DESARROLLO CON JS
Frameworks: TVMLJS y TVMLKit
INTRODUCCIÓN
Características, hardware, frameworks y limitaciones
CASOS DE ÉXITO
Demo
El nuevo paradigma de TV
▸ Nuevo sistema operativo para Apple TV (4ta Gen).
▸ Primer SO para Apple TV abierto a terceros para desarrollo.
▸ Basado en iOS: conceptos similares y soporte a frameworks como Metal, UIKit, CloudKit, entre otros.
▸ tvOS SDK 9.0 agrega además nuevos frameworks propios.
▸ Trae al Apple TV un App Store propio y soporte para Siri.
INTRODUCCIÓN
tvOS: El futuro de la TV son las Apps
Objetivo → Proporcionar una experiencia de usuario mucho mas completa, haciendo énfasis en la
interacción, ya sea a través redes sociales, juegos, o nuevos contenidos.
Hardware: Apple TV 4ta Gen
▸ 64-bit A8 processor
▸ 32GB or 64GB of storage
▸ 2GB of RAM
▸ 10/100Mbps Ethernet
▸ WiFi 802.11a/b/g/n/ac
▸ 1080p resolution
▸ HDMI
▸ New Siri Remote / Apple TV Remote
▸ Bluetooth 4.0
INTRODUCCIÓN
El tamaño de una aplicación está limitado a 200 MB.
Una app solo dispone de 500 KB de almacenamiento local para persistencia (NSUserDefaults).
Opciones para manejar estos recursos:
▸ Almacenar y obtener información de usuarios desde iCloud (CloudKit y iCloud KVS).
▸ Descargar la información necesaria a la caché → Mientras la aplicación esté corriendo, la caché no
elimina datos descargados.
▸ Acceder a assets de solo lectura a traves de On-demand Resources - Hasta 20 GB. (iOS 9 y tvOS)
Aplicaciones más chicas, Lazy loading de recursos, Almacenamiento remoto de recursos poco frecuentes.
INTRODUCCIÓN
Hardware: Almacenamiento
INTRODUCCIÓN
App Groups
Background Modes
Data Protection
Game Center
Game Controllers
iCloud
In-App Purchase
Keychain Sharing
Address Book
Apple Pay
Calendar
HealthKit
HomeKit
iMessage
Maps
Personal VPN
Photos
Push Notifications
Wallet
4K
tvOS: Capacidades Soportadas
tvOS SDK 9.0: Frameworks
INTRODUCCIÓN
WebKit
HealthKit
HomeKit
Social
Apple TV: Control Remoto
En los países que está disponible Siri, se llama Siri Remote. En el resto, simplemente Apple TV Remote.
INTRODUCCIÓN
Game Controller
INTRODUCCIÓN
Requerimientos para Juegos
▸ Deben soportar el Control Remoto.
▸ Si soportan Game Controllers, deben soportar extended control layout.
▸ Se deben poder jugar usando standalone controllers (conforman con protocolo MFI).
▸ Deben soportar el botón de Pausa.
INTRODUCCIÓN
Apple TV Remote como Game Controller
▸ El touchpad se puede usar como D-pad. Provee datos analógicos como input.
▸ Se puede usar tanto con orientación portrait como landscape.
▸ El touchpad además funciona como botón principal al hacer click (botón A).
▸ El botón de Play/Pause es otro botón digital (botón X).
▸ El botón de Menú funciona como Pausa.
INTRODUCCIÓN
Limitaciones del Simulador
● Acelerometro
● Siri
● MetalKit
→ El control remoto físico se puede conectar al simulador para probar el Acelerómetro y Siri.
INTRODUCCIÓN
UI en tvOS
No Mouse y No Touch
En cambio, el nuevo Control Remoto Siri y los Game Controllers
Macs y dispositivos iOS son generalmente para usuarios individuales
Con el nuevo Apple TV, la experiencia de usuario es mucho más social. Varias personas pueden interactuar
a la misma vez con una aplicación.
→ Es fundamental diseñar aplicaciones que aprovechen al máximo estos cambios ←
INTRODUCCIÓN
UI: Nuevos desafíos
Un nuevo concepto: Foco
▸ Es el efecto que se ve en pantalla cuando un usuario interactúa con la aplicación. En Apple TV esta
interacción se realiza mediante un control remoto.
▸ Estar en foco implica que el usuario puede interactuar con esa vista.
▸ El framework de UIKit solo soporta interfaces orientadas al uso de foco.
▸ Solo las vistas pueden recibir foco
▸ Solo una vista puede estar en foco al mismo tiempo
INTRODUCCIÓN
Focus Engine
▸ Es el encargado de manejar el foco.
▸ Cuando la jerarquía de vistas cambia, el Focus Engine genera un mapa con las vistas que aceptan
foco.
▸ Si un usuario navega en una dirección, el Focus Engine busca vistas en esa dirección chequeando
tamaños y posiciones relativas.
INTRODUCCIÓN
Clases que reciben foco
● UIButton
● UIControl
● UISegmentedControl
● UITabBar
● UITextField
● UISearchBar (Una UISearchBar no es focalizable pero su textField si)
● UIImageView (tiene una propiedad adjustImageWhenAncestorFocused)
● UICollectionViewCell / UITableViewCell son excepciones. El foco se determina en el delegado:
○ collectionView(_:canFocusItemAtIndexPath:)
○ tableView(_:canFocusRowAtIndexPath:)
INTRODUCCIÓN
Foco actual
● Se puede consultar a cualquier vista si está actualmente en foco:
myButton.focused // true o false
● También se puede consultar a una UIScreen cuál es la vista focalizada actualmente (puede no haber
ninguna)
UIScreen.mainScreen().focusedView
● Se puede debuggear una vista para ver porque no está siendo focalizada:
self.myButton.performSelector(Selector("_whyIsThisViewNotFocusable"))
ISSUE: This view has userInteractionEnabled set to NO. Views must allow user interaction to be
focusable.
INTRODUCCIÓN
Actualizando el foco
● Solo el Focus Engine puede actualizar un foco.
● Para interactuar con el Focus Engine existe un protocolo: UIFocusEnvironment
setNeedsFocusUpdate() → El foco va a ser actualizado durante el próximo ciclo
updateFocusIfNeeded() → Fuerza una actualización del foco inmediata
● En cada ciclo, el Focus Engine pregunta por la propiedad preferredFocusedView. Si no es nula y es una
vista focalizable, entonces el Focus Engine va a seleccionar esa vista.
INTRODUCCIÓN
Cómo saber qué vista va a ser focalizada?
● Poner un breakpoint dentro de los metodos shouldUpdateFocusInContext: o didUpdateFocusInContext:
withAnimationCoordinator:
INTRODUCCIÓN
Cómo saber qué vista va a ser focalizada?
INTRODUCCIÓN
Un problema común
INTRODUCCIÓN
Solución
1. Crear un UIFocusGuide
2. Setear la preferredFocusedView del objeto
3. Agregarla a la vista padre
4. Usar constraints
INTRODUCCIÓN
Gestures: Tap
● Nos permite detectar que un botón del control remoto fue presionado.
● Ejemplo:
let tapRecognizer = UITapGestureRecognizer(target: self, action: “tapped:”)
tapRecognizer.allowedPressTypes = [NSNumber(integer: UIPressType.PlayPause.rawValue)];
self.view.addGestureRecognizer(tapRecognizer)
INTRODUCCIÓN
Gestures: Swipe
● Nos permite detectar movimientos sobre el touchpad del control remoto.
● Ejemplo:
let swipeRecognizer = UISwipeGestureRecognizer(target: self, action: “tapped:”)
tapRecognizer.direction = .Right
self.view.addGestureRecognizer(swipeRecognizer)
INTRODUCCIÓN
Top Shelf
● Es el área superior que aparece en el menú
● Muestra contenido particular de una
aplicación y permite la interacción con ellos.
INTRODUCCIÓN
Importante: Como mínimo, cada aplicación tiene que tener una imagen estática que pueda ser mostrada
cuando la aplicación se encuentre en foco y en la fila superior de la pantalla principal.
TV Services
● Permite describir contenido de la aplicación al sistema operativo.
● Qué tenemos que hacer?
● Organizar el contenido que queremos mostrar en una lista simple o en un modelo de jerarquía.
● Crear un objeto de la clase TVContentItem para cada contenido que vamos a mostrar
● Diseñar un algoritmo que devuelva cada TVContentItem con un identificador único.
● Agregar una extensión, cuya clase principal implemente el protocolo TVTopShelfProvider
INTRODUCCIÓN
TVContentItem
La clase TVContentItem tiene una propiedad llamada imageShape que nos permite setear la forma
deseada del contenido.
● None → Sin forma
● Poster → Aspect ratio 2:3
● Square → Aspect ratio 1:1
● HDTV → Aspect ratio 16:9
● SDTV → Aspect ratio 4:3
● Wide → Aspect ratio 8:3
● Extrawide → Aspect ratio 80:27
INTRODUCCIÓN
Desarrollando tvOS con JS
Nuevos frameworks para tvOS
Apple introduce los siguientes frameworks nuevos, específicos para tvOS:
▸ TVMLKit: Provee una manera de incorporar JavaScript y elementos TVML en tu aplicación.
▸ TVJS: Describe la API JavaScript utilizada para cargar las páginas TVML que se utilizan para
mostrar información en aplicaciones cliente-servidor.
▸ TVML: Un lenguaje de markup similar a XML que adhiere a algunos templates de Apple.
DESARROLLO CON JS
¿Qué es TVMLKit?
▸ Framework para aplicaciones nativas
▸ Controla contexto y configuración de la app
▸ Punto de entrada nativo para apps TVJS
▸ Crear elementos custom con TVElementFactory
DESARROLLO CON JS
¿Qué es TVML?
▸ Television Markup Language
▸ Lenguaje declarativo basado en XML para templates tvOS
▸ Cada página está construida en base a un template TVML
▸ Hay elementos simples y compuestos
DESARROLLO CON JS
A la fecha hay 18 templates TVML:
DESARROLLO CON JS
DESARROLLO CON JS
Un template TVML se ve así:
¿Qué es TVJS?
▸ Conjunto de APIs para crear aplicaciones cliente-servidor
▸ Incorpora un subset del DOM
▸ Usa el motor JavaScript Nitro
▸ Soporta un poco de la sintaxis ES6:
■ Clases y herencia
■ String templates
■ Symbol
■ Object shorthands
DESARROLLO CON JS
ECMAScript 6 Compatibility Table
OK, copado… ¿Y qué se banca
este TVJS?
DESARROLLO CON JS
Soporte TVJS
TVJS soporta un subset de la API del DOM:
DESARROLLO CON JS
Arquitectura de una app TVMLKit Cliente-Servidor
DESARROLLO CON JS
Arquitectura de una app TVMLKit (cont.)
Flujo de interacción de una app simple Cliente-Servidor:
DESARROLLO CON JS
Algo como esto
DESARROLLO CON JS
DESARROLLO CON JS
Algo como esto
Ok, ok, entiendo… y para que
sirve?
DESARROLLO CON JS
Plex.tv
▸ Fotos, música, streaming de video.
▸ Mix de Native y TVML.
▸ Desarrollado en solo 5 semanas.
▸ Muchos features.
▸ XSLT a TVML (copado!).
▸ Se ve INCREÍBLE.
DESARROLLO CON JS
Hora de una demo!
DESARROLLO CON JS
Apple tv development Meetup - Montevideo  Uruguay

Más contenido relacionado

Destacado

Sintesis informativa julio 03 2013
Sintesis informativa julio 03 2013Sintesis informativa julio 03 2013
Sintesis informativa julio 03 2013megaradioexpress
 
Manual Router Yota Vigor fly200
Manual Router Yota Vigor fly200 Manual Router Yota Vigor fly200
Manual Router Yota Vigor fly200 Arnold Salgado
 
Kfl suggestions akhil
Kfl suggestions akhilKfl suggestions akhil
Kfl suggestions akhilAkhil Nair
 
Historia de lo que nos pasa
Historia de lo que nos pasaHistoria de lo que nos pasa
Historia de lo que nos pasaAna UR
 
Escoitar.org por Chiu Longina
Escoitar.org por Chiu LonginaEscoitar.org por Chiu Longina
Escoitar.org por Chiu LonginaChiu Longina
 
Mechanic 20. Sayı
Mechanic 20. SayıMechanic 20. Sayı
Mechanic 20. SayıDeko Medya
 
El valor de la solidaridad.
El valor de la solidaridad.El valor de la solidaridad.
El valor de la solidaridad.mil61
 
Journal of hepatology association between consumption of herbalife nutritio...
Journal of hepatology   association between consumption of herbalife nutritio...Journal of hepatology   association between consumption of herbalife nutritio...
Journal of hepatology association between consumption of herbalife nutritio...quoththeraven
 
Mbag tc18 grupo_4_cartavio_saa
Mbag tc18 grupo_4_cartavio_saaMbag tc18 grupo_4_cartavio_saa
Mbag tc18 grupo_4_cartavio_saaastritatiana
 
Historia del internet y como funciona
Historia del internet y como funcionaHistoria del internet y como funciona
Historia del internet y como funcionaIvan Castillo
 
Modos griegos
Modos griegosModos griegos
Modos griegoszero0174
 
Educació física 2n Resistència i Escalfament]
Educació física 2n Resistència i Escalfament]Educació física 2n Resistència i Escalfament]
Educació física 2n Resistència i Escalfament]Ramon Plans
 

Destacado (18)

Coleccion Cadenas NFP
Coleccion Cadenas NFPColeccion Cadenas NFP
Coleccion Cadenas NFP
 
Sintesis informativa julio 03 2013
Sintesis informativa julio 03 2013Sintesis informativa julio 03 2013
Sintesis informativa julio 03 2013
 
Edebé
EdebéEdebé
Edebé
 
Prepara Tu Entrevista De Trabajo Y Los 10 Errores De Imagen Profesional En La...
Prepara Tu Entrevista De Trabajo Y Los 10 Errores De Imagen Profesional En La...Prepara Tu Entrevista De Trabajo Y Los 10 Errores De Imagen Profesional En La...
Prepara Tu Entrevista De Trabajo Y Los 10 Errores De Imagen Profesional En La...
 
Manual Router Yota Vigor fly200
Manual Router Yota Vigor fly200 Manual Router Yota Vigor fly200
Manual Router Yota Vigor fly200
 
Kfl suggestions akhil
Kfl suggestions akhilKfl suggestions akhil
Kfl suggestions akhil
 
Historia de lo que nos pasa
Historia de lo que nos pasaHistoria de lo que nos pasa
Historia de lo que nos pasa
 
Escoitar.org por Chiu Longina
Escoitar.org por Chiu LonginaEscoitar.org por Chiu Longina
Escoitar.org por Chiu Longina
 
Catalogo Sentry Safe España
Catalogo Sentry Safe EspañaCatalogo Sentry Safe España
Catalogo Sentry Safe España
 
Mechanic 20. Sayı
Mechanic 20. SayıMechanic 20. Sayı
Mechanic 20. Sayı
 
El valor de la solidaridad.
El valor de la solidaridad.El valor de la solidaridad.
El valor de la solidaridad.
 
Reyes-Pedagogía kantiana (30 diapositivas)
Reyes-Pedagogía kantiana (30 diapositivas)Reyes-Pedagogía kantiana (30 diapositivas)
Reyes-Pedagogía kantiana (30 diapositivas)
 
Journal of hepatology association between consumption of herbalife nutritio...
Journal of hepatology   association between consumption of herbalife nutritio...Journal of hepatology   association between consumption of herbalife nutritio...
Journal of hepatology association between consumption of herbalife nutritio...
 
Mbag tc18 grupo_4_cartavio_saa
Mbag tc18 grupo_4_cartavio_saaMbag tc18 grupo_4_cartavio_saa
Mbag tc18 grupo_4_cartavio_saa
 
Historia del internet y como funciona
Historia del internet y como funcionaHistoria del internet y como funciona
Historia del internet y como funciona
 
Modos griegos
Modos griegosModos griegos
Modos griegos
 
Gestores de un mundo VUCA
Gestores de un mundo VUCAGestores de un mundo VUCA
Gestores de un mundo VUCA
 
Educació física 2n Resistència i Escalfament]
Educació física 2n Resistència i Escalfament]Educació física 2n Resistència i Escalfament]
Educació física 2n Resistència i Escalfament]
 

Similar a Apple tv development Meetup - Montevideo Uruguay

Apple TV Meet Up Slides
Apple TV Meet Up SlidesApple TV Meet Up Slides
Apple TV Meet Up SlidesGlobant
 
[Globant Summer Take Over] Apple Tv Development
[Globant Summer Take Over] Apple Tv Development[Globant Summer Take Over] Apple Tv Development
[Globant Summer Take Over] Apple Tv DevelopmentGlobant
 
Tv Future is Apps - tvOS vs AndroidTV
Tv Future is Apps - tvOS vs AndroidTVTv Future is Apps - tvOS vs AndroidTV
Tv Future is Apps - tvOS vs AndroidTVPablo Azaña Sánchez
 
CocoaHeads México: Introducción a CocoaTouch:UIKit
CocoaHeads México: Introducción a CocoaTouch:UIKitCocoaHeads México: Introducción a CocoaTouch:UIKit
CocoaHeads México: Introducción a CocoaTouch:UIKitErick Camacho
 
WinObjC: Windows Bridge para iOS
WinObjC: Windows Bridge para iOSWinObjC: Windows Bridge para iOS
WinObjC: Windows Bridge para iOSJavier Suárez Ruiz
 
Insertar video
Insertar videoInsertar video
Insertar video0cero
 
Presentacion android mistela&tweets
Presentacion android mistela&tweetsPresentacion android mistela&tweets
Presentacion android mistela&tweetsJorge Soro
 
Consejos principales para Android UI Cómo alcanzar la magia en los tablets
Consejos principales para Android UI Cómo alcanzar la magia en los tabletsConsejos principales para Android UI Cómo alcanzar la magia en los tablets
Consejos principales para Android UI Cómo alcanzar la magia en los tabletsMotorola Mobility - MOTODEV
 
Tutorial de eclipse_completo-a
Tutorial de eclipse_completo-aTutorial de eclipse_completo-a
Tutorial de eclipse_completo-aAlan Cárdenas
 
Proyect Evenge. Event manager
Proyect Evenge. Event managerProyect Evenge. Event manager
Proyect Evenge. Event managerIvan Ortega
 

Similar a Apple tv development Meetup - Montevideo Uruguay (20)

Apple TV Meet Up Slides
Apple TV Meet Up SlidesApple TV Meet Up Slides
Apple TV Meet Up Slides
 
[Globant Summer Take Over] Apple Tv Development
[Globant Summer Take Over] Apple Tv Development[Globant Summer Take Over] Apple Tv Development
[Globant Summer Take Over] Apple Tv Development
 
Tv Future is Apps - tvOS vs AndroidTV
Tv Future is Apps - tvOS vs AndroidTVTv Future is Apps - tvOS vs AndroidTV
Tv Future is Apps - tvOS vs AndroidTV
 
Introducción a Windows 10
Introducción a Windows 10Introducción a Windows 10
Introducción a Windows 10
 
DotNetDom: El futuro de Xamarin
DotNetDom: El futuro de XamarinDotNetDom: El futuro de Xamarin
DotNetDom: El futuro de Xamarin
 
Extendiendo Xamarin.Forms
Extendiendo Xamarin.FormsExtendiendo Xamarin.Forms
Extendiendo Xamarin.Forms
 
CocoaHeads México: Introducción a CocoaTouch:UIKit
CocoaHeads México: Introducción a CocoaTouch:UIKitCocoaHeads México: Introducción a CocoaTouch:UIKit
CocoaHeads México: Introducción a CocoaTouch:UIKit
 
WinObjC: Windows Bridge para iOS
WinObjC: Windows Bridge para iOSWinObjC: Windows Bridge para iOS
WinObjC: Windows Bridge para iOS
 
Insertar video
Insertar videoInsertar video
Insertar video
 
Introducción a Windows 10
Introducción a Windows 10Introducción a Windows 10
Introducción a Windows 10
 
Presentacion android mistela&tweets
Presentacion android mistela&tweetsPresentacion android mistela&tweets
Presentacion android mistela&tweets
 
Consejos principales para Android UI Cómo alcanzar la magia en los tablets
Consejos principales para Android UI Cómo alcanzar la magia en los tabletsConsejos principales para Android UI Cómo alcanzar la magia en los tablets
Consejos principales para Android UI Cómo alcanzar la magia en los tablets
 
Android
AndroidAndroid
Android
 
Preguntas sobre android
Preguntas sobre androidPreguntas sobre android
Preguntas sobre android
 
Tutorial de eclipse_completo-a
Tutorial de eclipse_completo-aTutorial de eclipse_completo-a
Tutorial de eclipse_completo-a
 
Preguntas de android
Preguntas  de androidPreguntas  de android
Preguntas de android
 
Preguntas de android
Preguntas  de androidPreguntas  de android
Preguntas de android
 
Cobertura de pruebas unitarias - NetBaires
Cobertura de pruebas unitarias - NetBairesCobertura de pruebas unitarias - NetBaires
Cobertura de pruebas unitarias - NetBaires
 
Cobertura de pruebas unitarias en C#
Cobertura de pruebas unitarias en C#Cobertura de pruebas unitarias en C#
Cobertura de pruebas unitarias en C#
 
Proyect Evenge. Event manager
Proyect Evenge. Event managerProyect Evenge. Event manager
Proyect Evenge. Event manager
 

Más de Globant

Webinar MLOps: When AA gets serious.
Webinar MLOps: When AA gets serious.Webinar MLOps: When AA gets serious.
Webinar MLOps: When AA gets serious.Globant
 
Google Cloud Spanner y NewSQL
Google Cloud Spanner y NewSQLGoogle Cloud Spanner y NewSQL
Google Cloud Spanner y NewSQLGlobant
 
Eventos Asíncronos como estrategia virtual
Eventos Asíncronos como estrategia virtualEventos Asíncronos como estrategia virtual
Eventos Asíncronos como estrategia virtualGlobant
 
Cultura y valores 4.0 para líderes 4.0
Cultura y valores 4.0 para líderes 4.0Cultura y valores 4.0 para líderes 4.0
Cultura y valores 4.0 para líderes 4.0Globant
 
Tech Insiders Salesforce: SFDX e Integración Continua
Tech Insiders Salesforce: SFDX e Integración ContinuaTech Insiders Salesforce: SFDX e Integración Continua
Tech Insiders Salesforce: SFDX e Integración ContinuaGlobant
 
Como impulsar tu carrera Salesforce
Como impulsar tu carrera SalesforceComo impulsar tu carrera Salesforce
Como impulsar tu carrera SalesforceGlobant
 
3D Programming Basics: WebGL
3D Programming Basics: WebGL3D Programming Basics: WebGL
3D Programming Basics: WebGLGlobant
 
Converge augmented report
Converge augmented reportConverge augmented report
Converge augmented reportGlobant
 
Sistema de recomendación entiempo real usando Delta Lake
Sistema de recomendación entiempo real usando Delta LakeSistema de recomendación entiempo real usando Delta Lake
Sistema de recomendación entiempo real usando Delta LakeGlobant
 
Kubeflow: Machine Learning en Cloud para todos
Kubeflow: Machine Learning en Cloud para todosKubeflow: Machine Learning en Cloud para todos
Kubeflow: Machine Learning en Cloud para todosGlobant
 
Orquestando Pipelines de Datosen AWS con Step Function y AWS Glue
Orquestando Pipelines de Datosen AWS con Step Function y AWS GlueOrquestando Pipelines de Datosen AWS con Step Function y AWS Glue
Orquestando Pipelines de Datosen AWS con Step Function y AWS GlueGlobant
 
Apache Beam: Lote portátil y procesamiento de transmisión
Apache Beam: Lote portátil y procesamiento de transmisiónApache Beam: Lote portátil y procesamiento de transmisión
Apache Beam: Lote portátil y procesamiento de transmisiónGlobant
 
Navegando el desafío de transformación digital de los servicios financieros
Navegando el desafío de transformación digital de los servicios financierosNavegando el desafío de transformación digital de los servicios financieros
Navegando el desafío de transformación digital de los servicios financierosGlobant
 
Converge 2020
Converge 2020 Converge 2020
Converge 2020 Globant
 
Converge 2020
Converge 2020Converge 2020
Converge 2020Globant
 
Tendencias de tecnología para el recién egresado
Tendencias de tecnología para el recién egresadoTendencias de tecnología para el recién egresado
Tendencias de tecnología para el recién egresadoGlobant
 
SRE: ¿Qué es y cómo gestionar el Toil?
SRE: ¿Qué es y cómo gestionar el Toil?SRE: ¿Qué es y cómo gestionar el Toil?
SRE: ¿Qué es y cómo gestionar el Toil?Globant
 
Monitoreo en tiempo real para la mejora continua de una aplicación
Monitoreo en tiempo real para la mejora continua de una aplicaciónMonitoreo en tiempo real para la mejora continua de una aplicación
Monitoreo en tiempo real para la mejora continua de una aplicaciónGlobant
 
¿Cómo automatizar pruebas de infraestructura y no morir en el intento?
¿Cómo automatizar pruebas de infraestructura y no morir en el intento?¿Cómo automatizar pruebas de infraestructura y no morir en el intento?
¿Cómo automatizar pruebas de infraestructura y no morir en el intento?Globant
 
Automatización en AWS con Chatbot Serverless (Amazon Lex)
Automatización en AWS con Chatbot Serverless (Amazon Lex)Automatización en AWS con Chatbot Serverless (Amazon Lex)
Automatización en AWS con Chatbot Serverless (Amazon Lex)Globant
 

Más de Globant (20)

Webinar MLOps: When AA gets serious.
Webinar MLOps: When AA gets serious.Webinar MLOps: When AA gets serious.
Webinar MLOps: When AA gets serious.
 
Google Cloud Spanner y NewSQL
Google Cloud Spanner y NewSQLGoogle Cloud Spanner y NewSQL
Google Cloud Spanner y NewSQL
 
Eventos Asíncronos como estrategia virtual
Eventos Asíncronos como estrategia virtualEventos Asíncronos como estrategia virtual
Eventos Asíncronos como estrategia virtual
 
Cultura y valores 4.0 para líderes 4.0
Cultura y valores 4.0 para líderes 4.0Cultura y valores 4.0 para líderes 4.0
Cultura y valores 4.0 para líderes 4.0
 
Tech Insiders Salesforce: SFDX e Integración Continua
Tech Insiders Salesforce: SFDX e Integración ContinuaTech Insiders Salesforce: SFDX e Integración Continua
Tech Insiders Salesforce: SFDX e Integración Continua
 
Como impulsar tu carrera Salesforce
Como impulsar tu carrera SalesforceComo impulsar tu carrera Salesforce
Como impulsar tu carrera Salesforce
 
3D Programming Basics: WebGL
3D Programming Basics: WebGL3D Programming Basics: WebGL
3D Programming Basics: WebGL
 
Converge augmented report
Converge augmented reportConverge augmented report
Converge augmented report
 
Sistema de recomendación entiempo real usando Delta Lake
Sistema de recomendación entiempo real usando Delta LakeSistema de recomendación entiempo real usando Delta Lake
Sistema de recomendación entiempo real usando Delta Lake
 
Kubeflow: Machine Learning en Cloud para todos
Kubeflow: Machine Learning en Cloud para todosKubeflow: Machine Learning en Cloud para todos
Kubeflow: Machine Learning en Cloud para todos
 
Orquestando Pipelines de Datosen AWS con Step Function y AWS Glue
Orquestando Pipelines de Datosen AWS con Step Function y AWS GlueOrquestando Pipelines de Datosen AWS con Step Function y AWS Glue
Orquestando Pipelines de Datosen AWS con Step Function y AWS Glue
 
Apache Beam: Lote portátil y procesamiento de transmisión
Apache Beam: Lote portátil y procesamiento de transmisiónApache Beam: Lote portátil y procesamiento de transmisión
Apache Beam: Lote portátil y procesamiento de transmisión
 
Navegando el desafío de transformación digital de los servicios financieros
Navegando el desafío de transformación digital de los servicios financierosNavegando el desafío de transformación digital de los servicios financieros
Navegando el desafío de transformación digital de los servicios financieros
 
Converge 2020
Converge 2020 Converge 2020
Converge 2020
 
Converge 2020
Converge 2020Converge 2020
Converge 2020
 
Tendencias de tecnología para el recién egresado
Tendencias de tecnología para el recién egresadoTendencias de tecnología para el recién egresado
Tendencias de tecnología para el recién egresado
 
SRE: ¿Qué es y cómo gestionar el Toil?
SRE: ¿Qué es y cómo gestionar el Toil?SRE: ¿Qué es y cómo gestionar el Toil?
SRE: ¿Qué es y cómo gestionar el Toil?
 
Monitoreo en tiempo real para la mejora continua de una aplicación
Monitoreo en tiempo real para la mejora continua de una aplicaciónMonitoreo en tiempo real para la mejora continua de una aplicación
Monitoreo en tiempo real para la mejora continua de una aplicación
 
¿Cómo automatizar pruebas de infraestructura y no morir en el intento?
¿Cómo automatizar pruebas de infraestructura y no morir en el intento?¿Cómo automatizar pruebas de infraestructura y no morir en el intento?
¿Cómo automatizar pruebas de infraestructura y no morir en el intento?
 
Automatización en AWS con Chatbot Serverless (Amazon Lex)
Automatización en AWS con Chatbot Serverless (Amazon Lex)Automatización en AWS con Chatbot Serverless (Amazon Lex)
Automatización en AWS con Chatbot Serverless (Amazon Lex)
 

Último

Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023
Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023
Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023ANDECE
 
01 COSTOS UNITARIOS Y PRESUPUESTO DE OBRA-EXPEDIENTE TECNICO DE OBRA.pptx
01 COSTOS UNITARIOS Y PRESUPUESTO DE OBRA-EXPEDIENTE TECNICO DE OBRA.pptx01 COSTOS UNITARIOS Y PRESUPUESTO DE OBRA-EXPEDIENTE TECNICO DE OBRA.pptx
01 COSTOS UNITARIOS Y PRESUPUESTO DE OBRA-EXPEDIENTE TECNICO DE OBRA.pptxluiscisnerosayala23
 
5. MATERIAL COMPLEMENTARIO - PPT de la Sesión 02.pptx
5. MATERIAL COMPLEMENTARIO - PPT  de la Sesión 02.pptx5. MATERIAL COMPLEMENTARIO - PPT  de la Sesión 02.pptx
5. MATERIAL COMPLEMENTARIO - PPT de la Sesión 02.pptxJOSLUISCALLATAENRIQU
 
I LINEAMIENTOS Y CRITERIOS DE INFRAESTRUCTURA DE RIEGO.pptx
I LINEAMIENTOS Y CRITERIOS DE INFRAESTRUCTURA DE RIEGO.pptxI LINEAMIENTOS Y CRITERIOS DE INFRAESTRUCTURA DE RIEGO.pptx
I LINEAMIENTOS Y CRITERIOS DE INFRAESTRUCTURA DE RIEGO.pptxPATRICIAKARIMESTELAL
 
METROLOGÍA ÓPTICA E INSTRUMENTACIÓN BÁSICA.pdf
METROLOGÍA ÓPTICA E INSTRUMENTACIÓN BÁSICA.pdfMETROLOGÍA ÓPTICA E INSTRUMENTACIÓN BÁSICA.pdf
METROLOGÍA ÓPTICA E INSTRUMENTACIÓN BÁSICA.pdfesparzadaniela548
 
EJERCICIOS DE -LEY-DE-OHM aplicaciones prácticas
EJERCICIOS DE -LEY-DE-OHM aplicaciones prácticasEJERCICIOS DE -LEY-DE-OHM aplicaciones prácticas
EJERCICIOS DE -LEY-DE-OHM aplicaciones prácticasEfrain Yungan
 
Tema 7 Plantas Industriales (2).pptx ingenieria
Tema 7 Plantas Industriales (2).pptx ingenieriaTema 7 Plantas Industriales (2).pptx ingenieria
Tema 7 Plantas Industriales (2).pptx ingenieriaLissetteMorejonLeon
 
MUROS Y CONEXIONES NTC 2017 CONCRETO REFORZADO.pptx
MUROS Y CONEXIONES NTC 2017 CONCRETO REFORZADO.pptxMUROS Y CONEXIONES NTC 2017 CONCRETO REFORZADO.pptx
MUROS Y CONEXIONES NTC 2017 CONCRETO REFORZADO.pptxIcelaMartnezVictorin
 
LIQUIDACION OBRAS PUBLICAS POR CONTRATA.pdf
LIQUIDACION OBRAS PUBLICAS  POR CONTRATA.pdfLIQUIDACION OBRAS PUBLICAS  POR CONTRATA.pdf
LIQUIDACION OBRAS PUBLICAS POR CONTRATA.pdfManuelVillarreal44
 
594305198-OPCIONES-TARIFARIAS-Y-CONDICIONES-DE-APLICACION-DE-TARIFAS-A-USUARI...
594305198-OPCIONES-TARIFARIAS-Y-CONDICIONES-DE-APLICACION-DE-TARIFAS-A-USUARI...594305198-OPCIONES-TARIFARIAS-Y-CONDICIONES-DE-APLICACION-DE-TARIFAS-A-USUARI...
594305198-OPCIONES-TARIFARIAS-Y-CONDICIONES-DE-APLICACION-DE-TARIFAS-A-USUARI...humberto espejo
 
PPT - MODIFICACIONES PRESUPUESTARIAS - Anexo II VF.pdf
PPT - MODIFICACIONES PRESUPUESTARIAS - Anexo II VF.pdfPPT - MODIFICACIONES PRESUPUESTARIAS - Anexo II VF.pdf
PPT - MODIFICACIONES PRESUPUESTARIAS - Anexo II VF.pdfDarwinJPaulino
 
SEMANA 6 MEDIDAS DE TENDENCIA CENTRAL.pdf
SEMANA  6 MEDIDAS DE TENDENCIA CENTRAL.pdfSEMANA  6 MEDIDAS DE TENDENCIA CENTRAL.pdf
SEMANA 6 MEDIDAS DE TENDENCIA CENTRAL.pdffredyflores58
 
JimyPomalaza vivienda rural huancavelica .pdf
JimyPomalaza vivienda rural huancavelica .pdfJimyPomalaza vivienda rural huancavelica .pdf
JimyPomalaza vivienda rural huancavelica .pdfJimyPomalaza
 
5.1 MATERIAL COMPLEMENTARIO Sesión 02.pptx
5.1 MATERIAL COMPLEMENTARIO Sesión 02.pptx5.1 MATERIAL COMPLEMENTARIO Sesión 02.pptx
5.1 MATERIAL COMPLEMENTARIO Sesión 02.pptxNayeliZarzosa1
 
Informe Mensual MARZO DE SUPERVISION.docx
Informe Mensual MARZO DE SUPERVISION.docxInforme Mensual MARZO DE SUPERVISION.docx
Informe Mensual MARZO DE SUPERVISION.docxTAKESHISAC
 
3.3 Tipos de conexiones en los transformadores trifasicos.pdf
3.3 Tipos de conexiones en los transformadores trifasicos.pdf3.3 Tipos de conexiones en los transformadores trifasicos.pdf
3.3 Tipos de conexiones en los transformadores trifasicos.pdfRicardoRomeroUrbano
 
S454444444444444444_CONTROL_SET_A_GEOMN1204.pdf
S454444444444444444_CONTROL_SET_A_GEOMN1204.pdfS454444444444444444_CONTROL_SET_A_GEOMN1204.pdf
S454444444444444444_CONTROL_SET_A_GEOMN1204.pdffredyflores58
 
CFRD simplified sequence for Mazar Hydroelectric Project
CFRD simplified sequence for Mazar Hydroelectric ProjectCFRD simplified sequence for Mazar Hydroelectric Project
CFRD simplified sequence for Mazar Hydroelectric ProjectCarlos Delgado
 
Revista estudiantil, trabajo final Materia ingeniería de Proyectos
Revista estudiantil, trabajo final Materia ingeniería de ProyectosRevista estudiantil, trabajo final Materia ingeniería de Proyectos
Revista estudiantil, trabajo final Materia ingeniería de ProyectosJeanCarlosLorenzo1
 

Último (20)

Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023
Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023
Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023
 
01 COSTOS UNITARIOS Y PRESUPUESTO DE OBRA-EXPEDIENTE TECNICO DE OBRA.pptx
01 COSTOS UNITARIOS Y PRESUPUESTO DE OBRA-EXPEDIENTE TECNICO DE OBRA.pptx01 COSTOS UNITARIOS Y PRESUPUESTO DE OBRA-EXPEDIENTE TECNICO DE OBRA.pptx
01 COSTOS UNITARIOS Y PRESUPUESTO DE OBRA-EXPEDIENTE TECNICO DE OBRA.pptx
 
5. MATERIAL COMPLEMENTARIO - PPT de la Sesión 02.pptx
5. MATERIAL COMPLEMENTARIO - PPT  de la Sesión 02.pptx5. MATERIAL COMPLEMENTARIO - PPT  de la Sesión 02.pptx
5. MATERIAL COMPLEMENTARIO - PPT de la Sesión 02.pptx
 
I LINEAMIENTOS Y CRITERIOS DE INFRAESTRUCTURA DE RIEGO.pptx
I LINEAMIENTOS Y CRITERIOS DE INFRAESTRUCTURA DE RIEGO.pptxI LINEAMIENTOS Y CRITERIOS DE INFRAESTRUCTURA DE RIEGO.pptx
I LINEAMIENTOS Y CRITERIOS DE INFRAESTRUCTURA DE RIEGO.pptx
 
METROLOGÍA ÓPTICA E INSTRUMENTACIÓN BÁSICA.pdf
METROLOGÍA ÓPTICA E INSTRUMENTACIÓN BÁSICA.pdfMETROLOGÍA ÓPTICA E INSTRUMENTACIÓN BÁSICA.pdf
METROLOGÍA ÓPTICA E INSTRUMENTACIÓN BÁSICA.pdf
 
EJERCICIOS DE -LEY-DE-OHM aplicaciones prácticas
EJERCICIOS DE -LEY-DE-OHM aplicaciones prácticasEJERCICIOS DE -LEY-DE-OHM aplicaciones prácticas
EJERCICIOS DE -LEY-DE-OHM aplicaciones prácticas
 
Tema 7 Plantas Industriales (2).pptx ingenieria
Tema 7 Plantas Industriales (2).pptx ingenieriaTema 7 Plantas Industriales (2).pptx ingenieria
Tema 7 Plantas Industriales (2).pptx ingenieria
 
Linea del tiempo de la inteligencia artificial.pptx
Linea del tiempo de la inteligencia artificial.pptxLinea del tiempo de la inteligencia artificial.pptx
Linea del tiempo de la inteligencia artificial.pptx
 
MUROS Y CONEXIONES NTC 2017 CONCRETO REFORZADO.pptx
MUROS Y CONEXIONES NTC 2017 CONCRETO REFORZADO.pptxMUROS Y CONEXIONES NTC 2017 CONCRETO REFORZADO.pptx
MUROS Y CONEXIONES NTC 2017 CONCRETO REFORZADO.pptx
 
LIQUIDACION OBRAS PUBLICAS POR CONTRATA.pdf
LIQUIDACION OBRAS PUBLICAS  POR CONTRATA.pdfLIQUIDACION OBRAS PUBLICAS  POR CONTRATA.pdf
LIQUIDACION OBRAS PUBLICAS POR CONTRATA.pdf
 
594305198-OPCIONES-TARIFARIAS-Y-CONDICIONES-DE-APLICACION-DE-TARIFAS-A-USUARI...
594305198-OPCIONES-TARIFARIAS-Y-CONDICIONES-DE-APLICACION-DE-TARIFAS-A-USUARI...594305198-OPCIONES-TARIFARIAS-Y-CONDICIONES-DE-APLICACION-DE-TARIFAS-A-USUARI...
594305198-OPCIONES-TARIFARIAS-Y-CONDICIONES-DE-APLICACION-DE-TARIFAS-A-USUARI...
 
PPT - MODIFICACIONES PRESUPUESTARIAS - Anexo II VF.pdf
PPT - MODIFICACIONES PRESUPUESTARIAS - Anexo II VF.pdfPPT - MODIFICACIONES PRESUPUESTARIAS - Anexo II VF.pdf
PPT - MODIFICACIONES PRESUPUESTARIAS - Anexo II VF.pdf
 
SEMANA 6 MEDIDAS DE TENDENCIA CENTRAL.pdf
SEMANA  6 MEDIDAS DE TENDENCIA CENTRAL.pdfSEMANA  6 MEDIDAS DE TENDENCIA CENTRAL.pdf
SEMANA 6 MEDIDAS DE TENDENCIA CENTRAL.pdf
 
JimyPomalaza vivienda rural huancavelica .pdf
JimyPomalaza vivienda rural huancavelica .pdfJimyPomalaza vivienda rural huancavelica .pdf
JimyPomalaza vivienda rural huancavelica .pdf
 
5.1 MATERIAL COMPLEMENTARIO Sesión 02.pptx
5.1 MATERIAL COMPLEMENTARIO Sesión 02.pptx5.1 MATERIAL COMPLEMENTARIO Sesión 02.pptx
5.1 MATERIAL COMPLEMENTARIO Sesión 02.pptx
 
Informe Mensual MARZO DE SUPERVISION.docx
Informe Mensual MARZO DE SUPERVISION.docxInforme Mensual MARZO DE SUPERVISION.docx
Informe Mensual MARZO DE SUPERVISION.docx
 
3.3 Tipos de conexiones en los transformadores trifasicos.pdf
3.3 Tipos de conexiones en los transformadores trifasicos.pdf3.3 Tipos de conexiones en los transformadores trifasicos.pdf
3.3 Tipos de conexiones en los transformadores trifasicos.pdf
 
S454444444444444444_CONTROL_SET_A_GEOMN1204.pdf
S454444444444444444_CONTROL_SET_A_GEOMN1204.pdfS454444444444444444_CONTROL_SET_A_GEOMN1204.pdf
S454444444444444444_CONTROL_SET_A_GEOMN1204.pdf
 
CFRD simplified sequence for Mazar Hydroelectric Project
CFRD simplified sequence for Mazar Hydroelectric ProjectCFRD simplified sequence for Mazar Hydroelectric Project
CFRD simplified sequence for Mazar Hydroelectric Project
 
Revista estudiantil, trabajo final Materia ingeniería de Proyectos
Revista estudiantil, trabajo final Materia ingeniería de ProyectosRevista estudiantil, trabajo final Materia ingeniería de Proyectos
Revista estudiantil, trabajo final Materia ingeniería de Proyectos
 

Apple tv development Meetup - Montevideo Uruguay

  • 1.
  • 3. tvOS Development DATOS DE CONTACTO ORADORES Juliana Caccavo: juliana.caccavo@globant.com / @JulieCaccavo Daniel Pilla: daniel.pilla@globant.com / @pillade Matías Fernandez: mr.fernandez@globant.com / @MatiasSF9 Matías Gelós: matias.gelos@globant.com / @matiasgelos Luciano Rubinsztejn: luciano.rubinsztejn@globant.com / @axo_insanit Matías Burcheri: matias.burcheri@globant.com / @matbur COMMUNICATIONS hello@globant.com / @Globant WANT TO JOIN OUR TEAM? cv@globant.com
  • 4. tvOS Development CONTENT CÓDIGO Construyendo la app base de tvOS DESARROLLO CON JS Frameworks: TVMLJS y TVMLKit INTRODUCCIÓN Características, hardware, frameworks y limitaciones CASOS DE ÉXITO Demo
  • 6. ▸ Nuevo sistema operativo para Apple TV (4ta Gen). ▸ Primer SO para Apple TV abierto a terceros para desarrollo. ▸ Basado en iOS: conceptos similares y soporte a frameworks como Metal, UIKit, CloudKit, entre otros. ▸ tvOS SDK 9.0 agrega además nuevos frameworks propios. ▸ Trae al Apple TV un App Store propio y soporte para Siri. INTRODUCCIÓN tvOS: El futuro de la TV son las Apps Objetivo → Proporcionar una experiencia de usuario mucho mas completa, haciendo énfasis en la interacción, ya sea a través redes sociales, juegos, o nuevos contenidos.
  • 7. Hardware: Apple TV 4ta Gen ▸ 64-bit A8 processor ▸ 32GB or 64GB of storage ▸ 2GB of RAM ▸ 10/100Mbps Ethernet ▸ WiFi 802.11a/b/g/n/ac ▸ 1080p resolution ▸ HDMI ▸ New Siri Remote / Apple TV Remote ▸ Bluetooth 4.0 INTRODUCCIÓN
  • 8. El tamaño de una aplicación está limitado a 200 MB. Una app solo dispone de 500 KB de almacenamiento local para persistencia (NSUserDefaults). Opciones para manejar estos recursos: ▸ Almacenar y obtener información de usuarios desde iCloud (CloudKit y iCloud KVS). ▸ Descargar la información necesaria a la caché → Mientras la aplicación esté corriendo, la caché no elimina datos descargados. ▸ Acceder a assets de solo lectura a traves de On-demand Resources - Hasta 20 GB. (iOS 9 y tvOS) Aplicaciones más chicas, Lazy loading de recursos, Almacenamiento remoto de recursos poco frecuentes. INTRODUCCIÓN Hardware: Almacenamiento
  • 9. INTRODUCCIÓN App Groups Background Modes Data Protection Game Center Game Controllers iCloud In-App Purchase Keychain Sharing Address Book Apple Pay Calendar HealthKit HomeKit iMessage Maps Personal VPN Photos Push Notifications Wallet 4K tvOS: Capacidades Soportadas
  • 10. tvOS SDK 9.0: Frameworks INTRODUCCIÓN WebKit HealthKit HomeKit Social
  • 11. Apple TV: Control Remoto En los países que está disponible Siri, se llama Siri Remote. En el resto, simplemente Apple TV Remote. INTRODUCCIÓN
  • 13. Requerimientos para Juegos ▸ Deben soportar el Control Remoto. ▸ Si soportan Game Controllers, deben soportar extended control layout. ▸ Se deben poder jugar usando standalone controllers (conforman con protocolo MFI). ▸ Deben soportar el botón de Pausa. INTRODUCCIÓN
  • 14. Apple TV Remote como Game Controller ▸ El touchpad se puede usar como D-pad. Provee datos analógicos como input. ▸ Se puede usar tanto con orientación portrait como landscape. ▸ El touchpad además funciona como botón principal al hacer click (botón A). ▸ El botón de Play/Pause es otro botón digital (botón X). ▸ El botón de Menú funciona como Pausa. INTRODUCCIÓN
  • 15. Limitaciones del Simulador ● Acelerometro ● Siri ● MetalKit → El control remoto físico se puede conectar al simulador para probar el Acelerómetro y Siri. INTRODUCCIÓN
  • 17. No Mouse y No Touch En cambio, el nuevo Control Remoto Siri y los Game Controllers Macs y dispositivos iOS son generalmente para usuarios individuales Con el nuevo Apple TV, la experiencia de usuario es mucho más social. Varias personas pueden interactuar a la misma vez con una aplicación. → Es fundamental diseñar aplicaciones que aprovechen al máximo estos cambios ← INTRODUCCIÓN UI: Nuevos desafíos
  • 18. Un nuevo concepto: Foco ▸ Es el efecto que se ve en pantalla cuando un usuario interactúa con la aplicación. En Apple TV esta interacción se realiza mediante un control remoto. ▸ Estar en foco implica que el usuario puede interactuar con esa vista. ▸ El framework de UIKit solo soporta interfaces orientadas al uso de foco. ▸ Solo las vistas pueden recibir foco ▸ Solo una vista puede estar en foco al mismo tiempo INTRODUCCIÓN
  • 19. Focus Engine ▸ Es el encargado de manejar el foco. ▸ Cuando la jerarquía de vistas cambia, el Focus Engine genera un mapa con las vistas que aceptan foco. ▸ Si un usuario navega en una dirección, el Focus Engine busca vistas en esa dirección chequeando tamaños y posiciones relativas. INTRODUCCIÓN
  • 20. Clases que reciben foco ● UIButton ● UIControl ● UISegmentedControl ● UITabBar ● UITextField ● UISearchBar (Una UISearchBar no es focalizable pero su textField si) ● UIImageView (tiene una propiedad adjustImageWhenAncestorFocused) ● UICollectionViewCell / UITableViewCell son excepciones. El foco se determina en el delegado: ○ collectionView(_:canFocusItemAtIndexPath:) ○ tableView(_:canFocusRowAtIndexPath:) INTRODUCCIÓN
  • 21. Foco actual ● Se puede consultar a cualquier vista si está actualmente en foco: myButton.focused // true o false ● También se puede consultar a una UIScreen cuál es la vista focalizada actualmente (puede no haber ninguna) UIScreen.mainScreen().focusedView ● Se puede debuggear una vista para ver porque no está siendo focalizada: self.myButton.performSelector(Selector("_whyIsThisViewNotFocusable")) ISSUE: This view has userInteractionEnabled set to NO. Views must allow user interaction to be focusable. INTRODUCCIÓN
  • 22. Actualizando el foco ● Solo el Focus Engine puede actualizar un foco. ● Para interactuar con el Focus Engine existe un protocolo: UIFocusEnvironment setNeedsFocusUpdate() → El foco va a ser actualizado durante el próximo ciclo updateFocusIfNeeded() → Fuerza una actualización del foco inmediata ● En cada ciclo, el Focus Engine pregunta por la propiedad preferredFocusedView. Si no es nula y es una vista focalizable, entonces el Focus Engine va a seleccionar esa vista. INTRODUCCIÓN
  • 23. Cómo saber qué vista va a ser focalizada? ● Poner un breakpoint dentro de los metodos shouldUpdateFocusInContext: o didUpdateFocusInContext: withAnimationCoordinator: INTRODUCCIÓN
  • 24. Cómo saber qué vista va a ser focalizada? INTRODUCCIÓN
  • 26. Solución 1. Crear un UIFocusGuide 2. Setear la preferredFocusedView del objeto 3. Agregarla a la vista padre 4. Usar constraints INTRODUCCIÓN
  • 27. Gestures: Tap ● Nos permite detectar que un botón del control remoto fue presionado. ● Ejemplo: let tapRecognizer = UITapGestureRecognizer(target: self, action: “tapped:”) tapRecognizer.allowedPressTypes = [NSNumber(integer: UIPressType.PlayPause.rawValue)]; self.view.addGestureRecognizer(tapRecognizer) INTRODUCCIÓN
  • 28. Gestures: Swipe ● Nos permite detectar movimientos sobre el touchpad del control remoto. ● Ejemplo: let swipeRecognizer = UISwipeGestureRecognizer(target: self, action: “tapped:”) tapRecognizer.direction = .Right self.view.addGestureRecognizer(swipeRecognizer) INTRODUCCIÓN
  • 29. Top Shelf ● Es el área superior que aparece en el menú ● Muestra contenido particular de una aplicación y permite la interacción con ellos. INTRODUCCIÓN Importante: Como mínimo, cada aplicación tiene que tener una imagen estática que pueda ser mostrada cuando la aplicación se encuentre en foco y en la fila superior de la pantalla principal.
  • 30. TV Services ● Permite describir contenido de la aplicación al sistema operativo. ● Qué tenemos que hacer? ● Organizar el contenido que queremos mostrar en una lista simple o en un modelo de jerarquía. ● Crear un objeto de la clase TVContentItem para cada contenido que vamos a mostrar ● Diseñar un algoritmo que devuelva cada TVContentItem con un identificador único. ● Agregar una extensión, cuya clase principal implemente el protocolo TVTopShelfProvider INTRODUCCIÓN
  • 31. TVContentItem La clase TVContentItem tiene una propiedad llamada imageShape que nos permite setear la forma deseada del contenido. ● None → Sin forma ● Poster → Aspect ratio 2:3 ● Square → Aspect ratio 1:1 ● HDTV → Aspect ratio 16:9 ● SDTV → Aspect ratio 4:3 ● Wide → Aspect ratio 8:3 ● Extrawide → Aspect ratio 80:27 INTRODUCCIÓN
  • 33. Nuevos frameworks para tvOS Apple introduce los siguientes frameworks nuevos, específicos para tvOS: ▸ TVMLKit: Provee una manera de incorporar JavaScript y elementos TVML en tu aplicación. ▸ TVJS: Describe la API JavaScript utilizada para cargar las páginas TVML que se utilizan para mostrar información en aplicaciones cliente-servidor. ▸ TVML: Un lenguaje de markup similar a XML que adhiere a algunos templates de Apple. DESARROLLO CON JS
  • 34. ¿Qué es TVMLKit? ▸ Framework para aplicaciones nativas ▸ Controla contexto y configuración de la app ▸ Punto de entrada nativo para apps TVJS ▸ Crear elementos custom con TVElementFactory DESARROLLO CON JS
  • 35. ¿Qué es TVML? ▸ Television Markup Language ▸ Lenguaje declarativo basado en XML para templates tvOS ▸ Cada página está construida en base a un template TVML ▸ Hay elementos simples y compuestos DESARROLLO CON JS
  • 36. A la fecha hay 18 templates TVML: DESARROLLO CON JS
  • 37. DESARROLLO CON JS Un template TVML se ve así:
  • 38. ¿Qué es TVJS? ▸ Conjunto de APIs para crear aplicaciones cliente-servidor ▸ Incorpora un subset del DOM ▸ Usa el motor JavaScript Nitro ▸ Soporta un poco de la sintaxis ES6: ■ Clases y herencia ■ String templates ■ Symbol ■ Object shorthands DESARROLLO CON JS ECMAScript 6 Compatibility Table
  • 39. OK, copado… ¿Y qué se banca este TVJS? DESARROLLO CON JS
  • 40. Soporte TVJS TVJS soporta un subset de la API del DOM: DESARROLLO CON JS
  • 41. Arquitectura de una app TVMLKit Cliente-Servidor DESARROLLO CON JS
  • 42. Arquitectura de una app TVMLKit (cont.) Flujo de interacción de una app simple Cliente-Servidor: DESARROLLO CON JS
  • 45. Ok, ok, entiendo… y para que sirve? DESARROLLO CON JS
  • 46. Plex.tv ▸ Fotos, música, streaming de video. ▸ Mix de Native y TVML. ▸ Desarrollado en solo 5 semanas. ▸ Muchos features. ▸ XSLT a TVML (copado!). ▸ Se ve INCREÍBLE. DESARROLLO CON JS
  • 47. Hora de una demo! DESARROLLO CON JS