Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Bring your apps to the big screen 📺
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Boris Bügling
October 30, 2015
Programming
620
1
Share
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
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
340
Cross-platform Swift
neonichu
3
960
Swift Package Manager
neonichu
2
370
Swift Package Manager
neonichu
0
83
📺
neonichu
0
2k
Cross-Platform Swift
neonichu
0
130
Swift Package Manager
neonichu
6
4.4k
Other Decks in Programming
See All in Programming
SREに優しいTerraform構成 modulesとstateの組み方
hiyanger
2
170
From Formal Specification to Property Based Test
ohbarye
0
2.4k
AI-DLC Deep Dive
yuukiyo
9
5.7k
Are We Really Coding 10× Faster with AI?
kohzas
0
140
AIを導入する前にやるべきこと
negima
2
340
Lightning-Fast Method Calls with Ruby 4.1 ZJIT / RubyKaigi 2026
k0kubun
3
2.7k
クラウドネイティブなエンジニアに向ける Raycastの魅力と実際の活用事例
nealle
2
250
KMP × Kotlin 2.3 - How Android Got Slower While iOS Builds Improved by 47%
rio432
0
160
過去のレビュー知見をSkillsで資産化した話
pkshadeck
PRO
1
1.7k
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
570
AI時代のエンジニアリングの原則 / Engineering Principles in the AI Era
haru860
0
1.1k
ソフトウェア設計の結合バランス #phperkaigi
kajitack
0
500
Featured
See All Featured
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
1
370
Fireside Chat
paigeccino
42
3.9k
Claude Code のすすめ
schroneko
67
220k
Build your cross-platform service in a week with App Engine
jlugia
234
18k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Darren the Foodie - Storyboard
khoart
PRO
3
3.3k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
130
Un-Boring Meetings
codingconduct
0
280
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2k
The agentic SEO stack - context over prompts
schlessera
0
770
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
170
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