It's the most wonderful time of the year, when new versions of our favorite mobile operating systems are released! iOS 10 started rolling out to devices everywhere on Tuesday 9/13, while Android 7.0 Nougat has been available officially since 8/23, and is rolling out gradually to Nexus and other recent Android devices as always.
If you've not kept up to date on what this means for your mobile apps, don't panic. With only a little effort you can make sure your apps are solid on updated devices everywhere.
What should I do right away?
If you haven't already tried out the latest beta versions ahead of time, there are a few things you need to do right away for your apps to make sure you don't fall behind.
The first and easiest thing to do for iOS 10 is to run your existing app builds on an updated device. If you've already got an installed copy, or your app is available for install on TestFlight, Crashlytics, or the App Store, this should be easy enough with no other updates. Apps which were built for older versions should have no issues on iOS 10, but it never hurts to check.
The next thing you should do is go ahead and get Xcode 8. It's available free on the Mac App Store for OS X El Capitan and soon for macOS Sierra as well. You'll need it to debug your apps on your iOS 10 devices.
Xcode 8 brings along with it required updates to Swift. When you open a project with Swift code in your updated Xcode it will warn you right away that you need to use Swift 3 or 2.3 if you want your code to build. The nice thing is it will offer to make the changes for you, and with few exceptions (I ran into an issue using CoreBluetooth's CBCentralManager.state property) these changes will just work.
Be warned that while updating to Swift 3 will be more future proof and get your updates out of the way, it will break code compatibility with Swift 2.2 and Xcode 7, so anyone who wants to build your new code will need Xcode 8. Updating to Swift 2.3 should be pretty painless for most developers who have been paying attention to the language depracation warnings, and will let you draw your transition out while everyone gets updated.
Finally as always it's good to peruse the updated Human Interface Guidelines for any changes which might get the next update to your app rejected. While iOS 10 is a major change, it is not nearly as drastic as iOS 6 to 7 was a few years ago, and most apps should (hopefully!) be fine.
The critical thing to do for all Android apps right now is to ensure any background processing your app was performing still works as intended. Android 7.0 Nougat has made several system behavior changes which could break apps that rely on being able to do whatever they want in the background. If your app makes use of WakeLock, AlarmManager, or constant background network access or location access, it may no longer rely on the ability to perform these on Android 7.0 devices when the screen is locked and the device is on battery power, due to the expanded Doze feature intended to preserve battery life.
To test your app, run it on an Android 7 device and initiate your background processing when on battery, then lock the screen and leave it locked for a period of time. If you'd expect your app to send data, wake the device, or something else under these conditions, and it is no longer doing so, you may need to consider use of JobScheduler to accomplish this background processing in a delayed but more power efficient manner.
What cool new stuff can I do though?
Once you've made sure your apps will work properly, you can explore some of the new features the updates bring for developers.
On iOS 10 one of the most noticable updates is to the Messages app, and Apple has given developers Messages extensions which allow third party apps to provide content for users to use right in Messages. You can also take advantage of even better Siri integration, letting your app handle Siri requests without even needing to enter the app. Finally in iOS 10 you can power up your notifications as well, with app-specific Action Sheets a user can pick from when swiping down or force touching a notification.
Android Nougat has a few new tricks as well. Multi-window support is a new one for stock Android, and might get you thinking about new ways your app could be useful alongside others. You need only enable support and specify the minimum resolution for your activities to support. The new Android also improves notifications, adding direct reply and other useful additions you can take advantage of. And at long last, Google is running WebView on Chrome, to the delight of developers everywhere.
Onward and Upward
Update time can be a mix of excitement and anxiety for developers, but a few quick checks will ensure you're ready to thrive in the post-update world.
If you have any suggestions of what has worked well for your team, or want to share your own experiences feel free to comment, we'd love to hear from you.