iOS 10, Xcode 8, and Swift 3, oh my!

We know that it’s important for you to make sure your apps can run on the latest and greatest technology out there. And in the world of iOS development, there’s this little release on the horizon called iOS 10 that many of you are excited about supporting with your apps.

Well, we here on the Firebase team also want to make sure your apps are up and running on iOS 10 as soon as it’s made available to the general public. So we’re going to go over some of the changes that we’ve included in the latest version (3.5.1) of the Firebase Cocoapod, and let you know about upcoming changes that will affect you as we move into the exciting new world of iOS 10 development.

With the latest version of the Firebase library, we’ve added support for handling deep links on iOS 10. If your app uses a feature that relies on deep links — specifically, Dynamic Links, Firebase Invites, and App Indexing — go ahead and update to the latest version of the library. Rebuild your app (no code changes needed!), and these features should all work properly.

Firebase Analytics

The latest version of the Firebase SDK includes some changes to more accurately track app installs resulting from AdWords search and display ads. If this sounds familiar, it’s because this feature was also included in version 3.3.0 of Firebase, but now we’ve added support for this on iOS 10 as well. Like the new deep link support, this should work automatically if you rebuild your code with the new library.

Firebase Cloud Messaging

iOS 10 made a lot of exciting changes around notifications, along with new ways for you as a developer to handle incoming user notifications. Specifically, notifications are now handled by methods belonging to the UNUserNotificationCenterDelegate protocol, while the old UIApplicationDelegate methods like application:didReceiveRemoteNotification are now deprecated.

That said, you might notice that the most recent release of the Firebase SDK is still calling the older appDelegate methods. We hope to have support for these new UNUserNotificationCenterDelegate protocol methods soon, so do keep an eye out for any future announcements as we update our libraries.

A Quick Note About Firebase Auth and Xcode 8

We’ve noticed what seems to be an issue with the latest iOS 10 simulators (up to beta 6 at the time of this writing) that causes Firebase Auth to throw an error due it to not being able to write values to the keychain. This issue does not affect real devices.

We have filed a radar with Apple and are hoping to get this issue resolved shortly, but you may encounter errors when testing Firebase Auth in the simulator. As a workaround, we recommend testing Auth on a physical device running iOS 10. If you do not have access to a real device, you also can try enabling Keychain Sharing in the Capabilities section of your app, as described in this StackOverflow post.

What about Swift 3?

You might have noticed that the code samples in our documentation still reflect Swift 2.3. With all the changes that are still happening in Swift 3, we’ve decided to wait until version 3.0 has been officially released before switching over the code samples in our documentation.

Of course, if you’re interested in trying out our samples in Swift 3, you can always download our latest sample code and let Xcode’s Swift conversion tool convert the samples for you. It does a remarkably good job. And, in the next few days, we’ll be creating a specific Swift 3 branch of our sample apps, so you can check out those branches from GitHub and see the source code without having to go through the conversion process.

Send us Feedback!

Obviously, releasing a library to support an operating system that’s still in beta is a tricky proposition. Issues may still arise here and there as new versions of iOS 10 are made available, and if they do, we’ll try to address them as quickly as we can. So if you encounter an error that seems to be specific to iOS 10, please let us know! Our Google Group is a good place to start.