$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Bring your apps to the big screen 📺
Search
Boris Bügling
October 30, 2015
Programming
1
600
Bring your apps to the big screen 📺
An introduction to building tvOS apps, given at Swift Summit SF 2015.
Boris Bügling
October 30, 2015
Tweet
Share
More Decks by Boris Bügling
See All by Boris Bügling
Testing ⌚️ Apps and Other Extensions
neonichu
1
4.7k
Cross-platform Swift
neonichu
4
18k
Building better API clients in Swift
neonichu
1
320
Cross-platform Swift
neonichu
3
940
Swift Package Manager
neonichu
2
350
Swift Package Manager
neonichu
0
67
📺
neonichu
0
2k
Cross-Platform Swift
neonichu
0
110
Swift Package Manager
neonichu
6
4.4k
Other Decks in Programming
See All in Programming
生成AI時代を勝ち抜くエンジニア組織マネジメント
coconala_engineer
0
360
バックエンドエンジニアによる Amebaブログ K8s 基盤への CronJobの導入・運用経験
sunabig
0
170
ZJIT: The Ruby 4 JIT Compiler / Ruby Release 30th Anniversary Party
k0kubun
0
250
令和最新版Android Studioで化石デバイス向けアプリを作る
arkw
0
430
AtCoder Conference 2025「LLM時代のAHC」
imjk
2
560
Context is King? 〜Verifiability時代とコンテキスト設計 / Beyond "Context is King"
rkaga
10
1.4k
チームをチームにするEM
hitode909
0
370
Graviton と Nitro と私
maroon1st
0
130
脳の「省エネモード」をデバッグする ~System 1(直感)と System 2(論理)の切り替え~
panda728
PRO
0
120
Findy AI+の開発、運用におけるMCP活用事例
starfish719
0
1.7k
SwiftUIで本格音ゲー実装してみた
hypebeans
0
480
公共交通オープンデータ × モバイルUX 複雑な運行情報を 『直感』に変換する技術
tinykitten
PRO
0
160
Featured
See All Featured
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
91
Tell your own story through comics
letsgokoyo
0
750
We Are The Robots
honzajavorek
0
120
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
980
Designing Powerful Visuals for Engaging Learning
tmiket
0
180
First, design no harm
axbom
PRO
1
1.1k
sira's awesome portfolio website redesign presentation
elsirapls
0
89
Marketing to machines
jonoalderson
1
4.3k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
51k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
0
180
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Transcript
BRING YOUR APP TO THE BIG SCREEN SWIFT SUMMIT, OCTOBER
2015 BORIS BÜGLING - @NEONACHO
None
COCOAPODS
CONTENTFUL
None
None
“‘I’d like to create an integrated television set that is
completely easy to use,’ he told me. [...] ‘It will have the simplest user interface you could imagine. I finally cracked it.’”
OCTOBER 21, 2011
SEPTEMBER 9, 2015
None
None
The future of TV is iOS
Accelerate AudioToolbox AudioUnit AVFoundation AVKit CFNetwork CloudKit CoreBluetooth CoreData CoreFoundation
CoreGraphics
CoreImage CoreLocation CoreMedia CoreSpotlight CoreText CoreVideo Darwin Foundation GameController GameKit
GameplayKit
GLKit ImageIO MachO MediaAccessibility MediaPlayer MediaToolbox Metal MetalKit MetalPerformanceShaders MobileCoreServices
ModelIO OpenGLES SceneKit Security simd SpriteKit StoreKit Swift Standard Library
SystemConfiguration UIKit
WEBKIT
MULTIPEERCONNE CTIVITY
PORTING EXISTING APPS
COCOAPODS ▸ Supports tvOS since 0.39.0 ▸ New platform: platform
:tvos, '9.0'
PODS SUPPORTING TVOS ["AFNetworking","Alamofire","CocoaLumberjack","SwiftyJSON","Charts", "Quick","Bolts","SnapKit","RxBlocking","RxCocoa","RxSwift","Nimble", "Argo","UICKeyChainStore","AsyncSwift","DTFoundation","Sync", "KeychainAccess","upnpx","AlamofireImage"] If you are
adventurous ! https://github.com/orta/cocoapods-expert-difficulty
SPRITEKIT EXAMPLE
DOOM CLASSIC ▸ UIKit changes (UIAlertView, UISlider) ▸ AudioSession isn't
available ▸ Newer C++ compiler
NIBS ! If you feel like copy-pasting stuff between NIBs
! https://github.com/neonichu/DOOM-IOS2/tree/tvos
STORAGE LIMITATIONS ▸ app is limited to 200 MB ▸
500 KB of persistent storage (NSUserDefaults) ▸ Use iCloud ▸ Use On-Demand resources
NO DIRECT MANIPULATION
FOCUS ENGINE UIButton().canBecomeFocused() // == true or false UIButton().focused //
== true or false UIScreen.mainScreen().focusedView // nil or the view in focus
REACTING TO FOCUS CHANGES func didUpdateFocusInContext(context: UIFocusUpdateContext, withAnimationCoordinator coordinator: UIFocusAnimationCoordinator)
context.nextFocusedView // the view which gets the focus context.previouslyFocusedView // the view which had the focus func addCoordinatedAnimations(_ animations: (() -> Void)?, completion completion: (() -> Void)?)
DEMO
SIRI?
GAME CONTROLLERS
None
NSNotificationCenter.defaultCenter().addObserverForName(GCControllerDidConnectNotification, object: nil, queue: nil) { (note) in if let
controller = note.object as? GCController { if let microPad = controller.microGamepad { microPad.dpad.valueChangedHandler = { (_, x, y) in if let paddle = self.childNodeWithName("Paddle") { paddle.position.y += CGFloat(y) } } } } }
GAME CONTROLLERS WORK WITH UIKIT COMPONENTS
SIRI REMOTE IS ALSO A GAME CONTROLLER ▸ Profile GCMicroGamepad
▸ Touch surface is a dpad ▸ Two action buttons ▸ Motion (GCMotion) ▸ Seems not to work in the simulator
2.27 If your app’s core functionality doesn’t work with the
Siri remote it will be rejected. The app may, however, provide enhanced functionality in connection with a game controller or other peripheral
A maximum of two game controllers (plus one remote) can
be connected to an Apple TV at any given time.
DEMO
TVML
APP REVIEW !
CONCLUSION ▸ tvOS works very well ▸ If you know
UIKit, it's easy to start ▸ Think about interaction
RESOURCES ▸ https://developer.apple.com/tvos/human-interface-guidelines/ ▸ "Ich glotz TV", @avbelow, Macoun 2015
▸ https://github.com/contentful/tvful ▸ http://nerds.airbnb.com/tvos-focus-engine/ ▸ https://eternalstorms.wordpress.com/2015/10/05/pair-the-apple- tv-developer-kit-siri-remote-with-xcodes-simulator/
THANKS!
@NeoNacho
[email protected]
http://buegling.com/talks