Date post: | 14-Apr-2017 |
Category: |
Mobile |
Upload: | codemotion |
View: | 287 times |
Download: | 0 times |
DEVELOP APPS FOR (APPLE) TV
Francesco Novelli
FRANCESCO NOVELLI
• iOS Developer since 2009
• Web Developer (LAMP)
• Development Book Author
• BLINKAR employee
• Lovers
AGENDA
• Apps vs. TV?
• Apple TV!
• tvOS SDK
• TVMLKit
• Design Principle
• Recap
SMART TV!
NO!
Apple TV
Apple TV 2/3
Apple TV 4
2007
2010 2012
2015
APPLE TV 4
• Nuovo OS, tvOS
• AppStore
• Nuovo Remote
• Siri
TVOS• Semplice da controllare
• AppStore SOLO per TV
• SDK per sviluppatori
• Basato su iOS (e OSX)
• Game-platform
•
SIRI REMOTE
• Touch Surface (with tap)
• Accelerometer
• Giroscope
• Microphone
• Tasti (menu, play)
GAME CONTROLLER
• OPTIONAL
• Più tasti
• Utilizzabile anche per le interfacce
• Massimo di 2 controller (più il telecomando)
Frameworks On-demandResources Focus
TVOS FRAMEWORKS• UIKIT
• Metal/OpenGL
• AVKit
• CoreLocation
• CoreImage
• CoreMedia
• ….
NEW TVOS FRAMEWORKS
• TVMLJS
• TVMLKit
• TVServices
TVSERVICES FRAMEWORK
• Top Shelf
• Utile per le prime 5 app (Dock)
• Media content
• Velocizzare apertura di contenuto
• Gestito da tvOS
ON-DEMAND RESOURCES
• 200MB AppStore limit
• Tag bundle
• TV è sempre connessa
• Download interface
• Gestione automatica della cache
ICLOUD STORAGE
• TV 32GB o 64GB
• iCloud KVS fino a 1MB
• CloudKit oltre 1MB
• Servizi cloud
• Evitare servizi con login (GDrive, Dropbox etc)
FOCUS DRIVEN DESIGN
• Niente dita sullo schermo
• Indirect Manipulation
• Focus su un elemento prima del tap
• Far avvicinare l’elemento all’utente
• Parallax effect
FOCUS MODEL
• Standard UIKit Control
• Elementi grandi abbastanza
• Cambio focus fluido
• Rendere il Focus ovvio!!!
PARALLAX EFFECT
• Parallax Previewer
• Parallax Exporter (per Photoshop)
• Effetto grafico integrato in UIKit
• Do not reinvent the wheel!
A B C
TVMLKIT
func application(application: UIApplication , didFinishLaunchingWithOptions launchOptions: [ NSObject : AnyObject ]?) -> Bool {
self.window = UIWindow(frame: UIScreen.mainScreen().bounds) let appControllerContext = TVApplicationControllerContext() let javascriptURL = NSURL(string: “https://sample.cloud/app.js“) appControllerContext.javaScriptApplicationURL = javascriptURL! if let options = launchOptions { for (kind, value) in options { if let kindStr = kind as? String { appControllerContext.launchOptions[kindStr] = value } } } self.appController = TVApplicationController(context: appControllerContext,
window: self.window, delegate: self) return true }
TVML
• 1 TVML per View
• Template pronti (alert, catalog, compilation etc)
• HTML Style
• TVML Style (CSS)
TVML: PROS AND CONS
• Easy
• Fast
• No ObjC
• No Swift
• Web
• No Flexibility
• No personalization
• Slow
• Network dependent
• No games
DESIGN PRINCIPLES
• Connected
• Clear
• Immersive
CONNECTED
• Utente e TV devono sentirsi vicini
• Gesture
• Parallax Effect!
CLEAR• Mantenere app semplici
• Utenti devono usare le app in modo istintivo
• Menu Button torna SEMPRE indietro
• Semplice da leggere da lontano
• Nessuna gesture complicata
IMMERSIVE
• Usare TUTTA la TV per il contenuto
• edge-to-edge artwork
• Meno elementi grafici possibili
Thanks! Q&A TimeFrancesco Novelli [email protected]
@if9
http://www.9lli.it/francesco
www.blinkar.com