Upload
jgoullaud
View
561
Download
4
Embed Size (px)
DESCRIPTION
One of the most powerful aspects of mobile computing is the always-on connectivity of our modern devices. Looking at the App Store today, you would be hard pressed to find an app that doesn't use a web service to some degree. Whether it's to stream videos and music, share photos, receive notifications, or sync documents and data, web services are an essential part of most mobile applications. This session will examine the best practices for building networked apps and APIs by building a small, networked iOS app. You'll learn: - When and how to leverage web services in a mobile application - How to building the client networking code, including caching and secure storage for credentials/tokens - Best practices for building mobile web service APIs Be sure to grab the Example App from http://github.com/joe-goullaud/Github-iOS
Citation preview
Example iOS Apphttp://github.com/joe-goullaud/Github-iOS
Don’t forget to grab the submodules:$> git submodule update --init --recursive
Overview
• How to Leverage Web Services in Your App
• iOS Patterns Overview
• Example App
• Mobile API Best Practices
Leveraging Web Services
Leveraging Web Services
• Content
• Images
• Video
• Documents
• Communication
• Text
• Voice
• Video
• Synchronization
• Game Play
• Document Collaboration
• Data
• Sharing
iOS Client Applications
• Common Patterns
• MVC(S) - Model-View-Controller-(Store)
• Delegation
• Callback/Completion Blocks (Closures)
UIViewController
UIViewModel
Store
UIViewController UITableView
tableView:cellForRowAtIndexPath:
UITableViewCell
tableView:heightForRowAtIndexPath:
44
tableView:didSelectRowAtIndexPath:
Main Thread Background Thread
Network Request
Data Import
Network Completion
Import Completion
Update UI
User Action
DEMO
Mobile API Best Practices
Mobile API Goals
• Reduce Network Calls
• Small Responses with Just Enough Data
• Secure
Caching
• Cache-Control Headers
• Set no-cache and max-age as appropriate
• Set to no-cache on Errors
• Images
• GET and HEAD request headers
• Content-Length
• Content-Type
• Last-Modified
JSON
• Compact
• Low memory footprint
• 2x faster to parse than XML
• Easier to create on device
• Smaller Request Bodies
REST-like
• Resource Endpoints
• Plural Endpoints should return object summaries
• Single Resource Endpoints return full object
• Can return object summaries of related objects
• Action Endpoints
• Perform complex service actions atomically
Security
• HTTPS
• No secure data in URL Query
• OAuth 2
• Token-based
• Authorization Headers
• HMAC for request authentication