This presentation will cover how developers can take advantage of the most beneficial aspects of the watch in their apps, along with optimal ways of using watch frameworks. Looking at current user behavior, I'll pair these habits with key features that any compelling watch app should have.
This includes:
Watch accessibility
Animations
Data and file transfer (Watch Connectivity)
Optimal battery performance
Dictation
I'll also take a look at the best uses for complications (widgets on watch home screen), and how to use the ClockKit framework better-suited to developers' needs. This largely differs based on the type of service that developers' apps provide and the talk will cover the most optimal ways to show their users the information that is most useful to them.
The audience will be able to walk away with a better idea of what it takes to create a watch app experience that will keep users coming back again and again.
9. @kristinathai
THEY'RE LIKE DIET VERSIONS OF THE
FULL SMARTPHONE APP, AND THEY
MAKE NO SENSE ON THE WATCH.
Steve Kovach
“APPLE WATCH APPS ARE BAD” - BUSINESS INSIDER
businessinsider.com/apple-watch-apps-are-bad-2015-5
22. @kristinathai
let suggestions = ["Hello", "Self", "Conference"]
presentTextInputControllerWithSuggestions(suggestions, allowedInputMode: .AllowEmoji)
{ (input) -> Void in
if let userInput = input?.first {
// Do something with user input here
self.contentLabel.setText(userInput as? String)
}
}
31. @kristinathai
WATCH CONNECTIVITY
COMMUNICATION CATEGORIES
Background transfers Interactive messaging
Information isn’t needed
immediately
Information needed
immediately
Operating system determines
the most suitable time to send
the data
Requires reachable state
Content is queued for transfer
32. @kristinathai
WATCH CONNECTIVITY
SENDER AND RECEIVERS - BACKGROUND TRANSFERS
Data Type Sender Receiver
Dictionary
(overwrite latest data)
updateApplicationContext didReceiveApplicationContext
Dictionary
(keep all data - FIFO)
transferUserInfo didReceiveUserInfo
File,
Dictionary (metadata)
transferFile didReceiveFile
33. @kristinathai
WATCH CONNECTIVITY
SENDER AND RECEIVERS - INTERACTIVE MESSAGING
Data Type Sender Receiver
Dictionary sendMessage didReceiveMessage
NSData sendMessageData didReceiveMessageData
42. @kristinathai
CLOCKKIT - TEXT PROVIDERS
CLKSimpleTextProvider
let textProvider =
CLKSimpleTextProvider(text: "your string here", shortText: "string")
43. @kristinathai
CLOCKKIT - TEXT PROVIDERS
CLKDateTextProvider
Thursday, January 14, 2016
Thursday, January 14
Thursday, Jan 14
Thurs, Jan 14
Jan 14
14
let textProvider = CLKDateTextProvider(date: NSDate(), units: .Day)
53. @kristinathai
func getNextRequestedUpdateDateWithHandler(handler: (NSDate?) -> Void) {
// Call the handler with the date when you would next like
to be given the opportunity to update your complication content
handler(nil);
}
May be unreliable to give you the date that you want
May exhaust your limited update budget
54. @kristinathai
IN YOUR MAIN IOS PARENT APP
BACKGROUND FETCH
func application(application: UIApplication, performFetchWithCompletionHandler
completionHandler: (UIBackgroundFetchResult) -> Void) {
// use Watch Connectivity to transfer data back to watch in here
getUpdatedWatchComplicationData()
completionHandler(UIBackgroundFetchResult.NewData)
}
56. @kristinathai
15% OF THE WORLD’S POPULATION
LIVES WITH SOME FORM OF DISABILITY
World Health Organization
WORLD REPORT ON DISABILITY
http://www.who.int/disabilities/world_report/2011/report/en/