Nolan and Darryl discuss background operations on iOS, including some of the less-obvious pitfalls you can avoid.
Tweet Shoutouts
@iOhYesPodcast I didn’t get an Apple TV dev kit, nor will buy it. As long as @netflix & co will support rev 3 I’ll stick with it— You can call me Joe (@mokagio) November 5, 2015
@iOhYesPodcast overscan on the ?TV is killing me. Fairly old but 1080p60 tv has no adjustments! Consoles have own controls, ?TV has none ????— Ashton Williams (@AshtonDev) November 5, 2015
@AshtonDev @iOhYesPodcast and imho, the margin guides ought to be set to the content-safe borders.— Darryl H. Thomas (@dh_thomas) November 5, 2015
@dh_thomas @iOhYesPodcast yeah surprised you have to add the safe zone guides yourself https://t.co/HyW9m028Qx @jim_rutherford— Ashton Williams (@AshtonDev) November 5, 2015
@iOhYesPodcast @Plex for the new #AppleTV is fantastic. Good design and excellent PQ when running movies from my NAS. Plus, it’s #free!— BaraLabs, LLC (@BaraLabs) November 5, 2015
How do you get the WWDC videos on the new Apple TV? And the apple events?— ????? (@scottaw) November 6, 2015
@scottaw @RonnieLutes1 I do have this github link from @dh_thomas on this weeks @iOhYesPodcast to roll your own. https://t.co/v8liidTHDZ— Vic Hudson (@vichudson1) November 6, 2015
Discussion: Background work
Getting the User’s Attention
Local Notification
Background Data Callbacks
Bluetooth
Location Updates
Newsstand Downloads
Accessory callbacks
WWDC 2014 Session 701 - Designing Accessories for iOS and OS X
Elevated Multitasking Background Work
VoIP
Audio / Airplay
This is what Facebook has been scrutinized for
Background Processing Work
[UIApplication backgroundTimeRemaining] - (10 seconds with no background tasks/fetches running)
Background work is often paired with greatly diminished CPU priority and can often end up with as little as 4% of the CPU
Background Tasks
*[UIApplication beginBackgroundTaskWithName:expirationHandler:]
[UIApplication endBackgroundTask:]
[UIApplication backgroundTimeRemaining] - (600 secs pre-iOS 7, otherwise 180 secs)
Background Fetch
Project checkbox “Background Fetch” to enable
Specify [UIApplication setMinimumBackgroundFetchInterval:]
Minimum == as frequently as the OS will permit
Never == disable BG fetch callbacks
[UIApplication backgroundTimeRemaining] - (~45 secs)
Push Fetch
Effectively the same behavior as background fetch
Background URL Sessions
Download to file or Upload from file
Performed out of process
Calls back either on completion or when authentication is needed
Remember to clean up when going into the background
No OpenGL
Suspend timers
Expect Network Failures
Clean up Bonjour and other shared resources (Address Book, Calendar, etc)
Clear sensitive info from screen
Clean up alerts (if needed)
Stop updating UI
Save the app state
Clear unneeded resources
Clean up Audio Sessions (Facebook Bug)
Opt out
Set UIApplicationExitsOnSuspend to YES
Picks
Nolan
Background Modes in Swift
Darryl
Anova Precision Cooker Wi-Fi