Top Banner
48
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Apple watch deck  yodel meetup 4-16
Page 2: Apple watch deck  yodel meetup 4-16

Boost Your WatchKit App

Max Mai

Hepeng Zhang

Yahoo News Digest

Page 3: Apple watch deck  yodel meetup 4-16

Demo

Page 4: Apple watch deck  yodel meetup 4-16

Engineering Challenges

Architecture

Best practices

Known issues

Thoughts

Page 5: Apple watch deck  yodel meetup 4-16

Engineering Challenges

Architecture

Best practices

Known issues

Thoughts

Page 6: Apple watch deck  yodel meetup 4-16

Challenges

● Quick interaction

● Communication between iphone and watch

● Strictly limited memory

Page 7: Apple watch deck  yodel meetup 4-16

Engineering Challenges

Architecture

Best practices

Known issues

Thoughts

Page 8: Apple watch deck  yodel meetup 4-16

Architecture

Page 9: Apple watch deck  yodel meetup 4-16

Architecture

https://developer.apple.com/library/prerelease/ios/documentation/General/Conceptual/WatchKitProgramming

Guide/ConfiguringYourXcodeProject.html#//apple_ref/doc/uid/TP40014969-CH2-SW1

Page 10: Apple watch deck  yodel meetup 4-16

Interface components

● Main view

● Glance view

● Notification

Page 11: Apple watch deck  yodel meetup 4-16

Interface components

● Main view

● Glance view

● Notification

Page 12: Apple watch deck  yodel meetup 4-16

Interface components

● Main view

● Glance view

● Notification

Page 13: Apple watch deck  yodel meetup 4-16

Engineering Challenges

Architecture

Best practices

Known issues

Thoughts

Page 14: Apple watch deck  yodel meetup 4-16

● Avoid UIImage methods.

Quick Interaction

Page 15: Apple watch deck  yodel meetup 4-16

● dispatch_async

Quick Interaction

Page 16: Apple watch deck  yodel meetup 4-16

● Prepare your data before user opens app

Quick Interaction

Page 17: Apple watch deck  yodel meetup 4-16

● Avoid changing UI dynamically

Quick Interaction

Page 18: Apple watch deck  yodel meetup 4-16

● NSUserDefaults

● Shared group container

● Watchkit special treat+ (void) openParentApplication:reply:- (void)application:(UIApplication *)application handleWatchKitExtensionRequest:(NSDictionary *)userInfo reply:(void

(^)(NSDictionary *replyInfo))reply

But, reply info must be serializable as plist data.

Communicate with iphone app

Page 19: Apple watch deck  yodel meetup 4-16

● NSUserDefaults

● Shared group container

● Watchkit special treat+ (void) openParentApplication:reply:- (void)application:(UIApplication *)application handleWatchKitExtensionRequest:(NSDictionary *)userInfo reply:(void

(^)(NSDictionary *replyInfo))reply

But, reply info must be serializable as plist data.

Communicate with iphone app

Page 20: Apple watch deck  yodel meetup 4-16

● NSUserDefaults

● Shared group container

● Watchkit special treat+ (void) openParentApplication:reply:- (void)application:(UIApplication *)application handleWatchKitExtensionRequest:(NSDictionary *)userInfo reply:(void

(^)(NSDictionary *replyInfo))reply

But, reply info must be serializable as plist data.

Communicate with iphone app

Page 21: Apple watch deck  yodel meetup 4-16

● Avoid UIImage.

● Be cautious when calling non WatchKit

framework methods

● addCachedImageWithData:name:

● Profile watchkit extension

Strictly limited memory

Page 22: Apple watch deck  yodel meetup 4-16

● Avoid UIImage.

● Be cautious when calling non WatchKit

framework methods

● addCachedImageWithData:name:

● Profile watchkit extension

Strictly limited memory

Page 23: Apple watch deck  yodel meetup 4-16

● Avoid UIImage.

● Be cautious when calling non WatchKit

framework methods

● addCachedImageWithData:name:

● Profile watchkit extension

Strictly limited memory

Page 24: Apple watch deck  yodel meetup 4-16

● Avoid UIImage.

● Be cautious when calling non WatchKit

framework methods

● addCachedImageWithData:name:

● Profile watchkit extension

Strictly limited memory

Page 25: Apple watch deck  yodel meetup 4-16

Engineering Challenges

Architecture

Best practices

Known issues

Thoughts

Page 26: Apple watch deck  yodel meetup 4-16

Known issues

CFBundleName in watchkit extension target and watchkit

app is ignored.

Display name for your watchkit app is CFBundleName of

your main app

Page 27: Apple watch deck  yodel meetup 4-16

add background task that ends 2 seconds later after reply

Known issues

- (void)application:(UIApplication *)application

handleWatchKitExtensionRequest:(NSDictionary *)userInfo reply:(void (^)(NSDictionary

*))reply

{

UIBackgroundTaskIdentifier watchBackgroundTask;

watchBackgroundTask = [[UIApplication sharedApplication]

beginBackgroundTaskWithExpirationHandler:^{

[[UIApplication sharedApplication] endBackgroundTask:watchBackgroundTask];

}];

/**

Handle request

*/

reply(something);

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC)),

dispatch_get_main_queue(), ^{

[[UIApplication sharedApplication] endBackgroundTask:watchBackgroundTask];

});

}

Page 28: Apple watch deck  yodel meetup 4-16

Best tips

https://developer.apple.com/watchkit/tips/

Page 29: Apple watch deck  yodel meetup 4-16

Engineering Challenges

Architecture

Best practices

Known issues

Thoughts

Page 30: Apple watch deck  yodel meetup 4-16

Thoughts

- Swift or Objective-C?

- Reuse iphone app code base?

Page 31: Apple watch deck  yodel meetup 4-16
Page 32: Apple watch deck  yodel meetup 4-16

Designing for the Apple

WatchYahoo Fantasy Sports App

Ed Lu - UX Designer

@superindustrial

Page 33: Apple watch deck  yodel meetup 4-16

Where we started

Page 34: Apple watch deck  yodel meetup 4-16

Where we startedApple Watch Human Interface Guidelines

Glances, notifications, app views

PSDs & Sketch templates

Interactions are quick

Shouldn’t replace app

Page 35: Apple watch deck  yodel meetup 4-16

Fantasy design

Page 36: Apple watch deck  yodel meetup 4-16

Use cases

1. I’m on a date. Am I winning?

2. She’s in the bathroom. Winning by what margin?

Page 37: Apple watch deck  yodel meetup 4-16

Am I winning?

By what margin? (General)

By what margin? (Specific)

Glance App

Page 38: Apple watch deck  yodel meetup 4-16

Best practices

Page 39: Apple watch deck  yodel meetup 4-16

Dark themes

conserve

battery

Don’t be THAT app…

Page 40: Apple watch deck  yodel meetup 4-16

Get creative with

Glance

templates

Page 41: Apple watch deck  yodel meetup 4-16

Can your

animations

Page 42: Apple watch deck  yodel meetup 4-16

Everything looks

way too big in

comps so…

Page 43: Apple watch deck  yodel meetup 4-16

preview on

device at all

costs

Page 44: Apple watch deck  yodel meetup 4-16

I’ll be WATCHing you

Still too early to understand use patterns.

Analytics will be very important.

Page 45: Apple watch deck  yodel meetup 4-16

Thanks!

Page 46: Apple watch deck  yodel meetup 4-16

Flurry Analytics –

Apple Watch Support

PRESENTED BY

Brad Jones | Product Management, Flurry Analytics

Page 47: Apple watch deck  yodel meetup 4-16

Flurry Analytics – Extensions

47Yahoo Confidential & Proprietary

Flurry Reporting

Compare Active Users

between Watch and App

Events for Extensions

› Count

› Unique Users

› Unique Users as % of

App Active Users

Funnels across App and

Extensions

Flurry Explorer

Segmentation

Funnels

Page 48: Apple watch deck  yodel meetup 4-16

Flurry Analytics

48Yahoo Confidential & Proprietary