making apps for the apple tv

69
Making apps for tv Sally Shepard // @mostgood 1

Upload: sally-shepard

Post on 05-Aug-2015

115 views

Category:

Software


1 download

TRANSCRIPT

Making apps for tv

Sally Shepard // @mostgood

1

One thing I hear a lot is…

2

I want an Apple TV SDK

3

• What is the tv

• Making apps!

• Design considerations

• What the future might hold

X

What is tv?

5

*does not include hand6

512 MB of RAM

8 GB of flash memory to cache content

7

Apple TV gives you access to the best 1080p HD content —

including blockbuster films, hit TV programmes, live sport, your

music, photos, videos and more — all on your high-definition TV. You can even play content from your iOS device or Mac on your

TV using AirPlay.X

Device as a remote

8

9

tv features

• Home Sharing

• iCloud

• iTunes

• AirPlay

10

11

Focused on sharing and watching.

12

If an SDK came out tomorrow, what would you

make?

13

Making an tv app.

14

15

*holy grail*

16

How are these apps made?

X

17

design

18

How does one navigate?

19

Apple remote

Remote app20

Collection View Table View

21

Coverflow-esqueTable View

22

Buttons

Labels, Text ViewsImages

23

Ultra clear.

24

Would this work for your app?

25

Controls

X

Class dump

http://nshipster.com/backrow/

X

Back Row UIKit

<BRResponder> <UIResponder>

<BRAppliance> <UIApplication>

BRController UIViewController

BRMenuController UITableViewController

BRControllerStack UINavigationController

BRGridView UICollectionView

BRListView UITableView

X

bad

*obligatory cat imageX

AirPlay

26

What is AirPlay?

X

Enabling AirPlay

• Mirroring

• Second screen

• Multi-user

• Controller

27

Mirroring

• No code needed • Not optimised for TV screen

28

Second Screen• Optimised for TV • Same or related content as device

29

Multi-user

• Multi-player games • Multi-user apps • Each user can view their view in addition

to other users

30

Controller• Main display on tv • Device acts controller

31

Second Screen

UIWindow *window = ![[UIApplication sharedApplication] keyWindow];

32

Second Screen

[UIScreen mainScreen]

33

Second Screen

1. Check for an external screen at app startup

2. Register for notifications for screen state changes

3. Create a second window, link to a screen and display it.

34

Second Screen

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {!//…!!

NSInteger screenCount = [[UIScreen screens] count];!if (screenCount > 1) {!

UIScreen *secondScreen = [[UIScreen screens] lastObject];![self setupSecondScreen:secondScreen];!

}!//...!

}

1. Check for an external screen at app startup

35

Second Screen// previous code![[NSNotificationCenter defaultCenter] addObserver:self ! selector:@selector(screenAdded:) ! name:UIScreenDidConnectNotification ! object:nil]; !![[NSNotificationCenter defaultCenter] addObserver:self! selector:@selector(screenRemoved:)! name:UIScreenDidDisconnectNotification! object:nil];!//...

2. Register for notifications for screen state changes

36

Second Screen2. Register for notifications for screen state changes

- (void)screenAdded:(NSNotification *)screenNotification {!UIScreen *newScreen = [screenNotification object];![self setupSecondScreen:newScreen];!

} !!- (void)screenRemoved:(NSNotification *)screenNotification {!

if (self.secondWindow) {!self.secondWindow.hidden = YES;!self.secondWindow = nil;!

}!}

37

Second Screen3. Create a second window, link to a screen and display it

- (void)setupSecondScreen:(UIScreen *)newScreen {!CGRect windowBounds = newScreen.bounds;!if (!self.secondWindow) {! self.secondWindow = [UIWindow alloc]

initWithFrame:windowBounds];! self.secondWindow.screen = newScreen;! //setup UI content and add as rootViewController! self.secondWindow.hidden = NO;!}!

}

38

Second ScreenThings to remember

1. Notifications will queue when you’re app is in the background so always add observers in an app lifetime object like AppDelegate.

2. To change the UIWindow attached to a UIScreen, hide the window first as it’s possible but an expensive operation.

3. Your second screen has no access to orientation information or notifications so use status bar orientation.

4. Use UIScreens availableModes to determine if a lower resolution is available for graphically intensive content

39

ControllerOnce you’ve setup a second screen and assigned it a rootViewController, you can then change the content on your main screen to be a controller or other content.

*hands still not included

40

Multiple UsersYou can expand the experience to display content from multiple

users onto your second screen by using Game Center API’s, or for non-game collaboration, the Multipeer Networking API’s

Game Center Bonjour

WWDC 2013 - Session 708WWDC 2013 - Session 50641

Testing AirPlay

42

Testing in the simulator

43

44

Testing with devices

45

!!!46

Design considerations

47

Screen sizes

48

TV screens are not for reading.

49

You can use sound!

50

Video & images == "

51

Design like everyone is looking.

52

The future of the tv

53

"Think how much your life has changed, and all the things around you that have changed, and yet TV, when you go into the living room to watch TV or wherever

it may be, it almost feels like you're rewinding the clock and you've entered

a time capsule and you're going backwards.”

-Tim Cook54

Something will probably happen, but who knows when

55

X

X

X

My wish list:• Sign in with TouchID

• Notification Center

• Vision

• Siri

• HomeKit Hub

X

Routes

AirPlay

X

Summary:• You don't need an SDK

• Relatively unexplored space

• 20 million+ sold

• New revenue possibilities

56

Thanks@mostgood

57