December 9th, 2015
As of iOS 9.2, released December 8th, 2015, Apple has sounded the death knell for URI scheme based redirects, the standard for deep linking for the last seven years. They’ve decided that Universal Links are the future. Since you depend on Branch to leverage the best technology in order to drive the highest quality link-based user experience, we’re adopting these changes immediately.
Basically, you should assume that the URI scheme based deep linking that you’ve worked so hard to integrate is now unusable. If you’re just joining us in the deep linking conversation, here’s an example of a deep link that you can no longer use.
The problem with this is that when the app is not installed, it shows a ‘Cannot Open Page’ error. I’m sure you’ve all seen it. It’s the bane of deep linking. There was a glorious period during iOS 7 and iOS 8 where it was possible to bypass this, but the golden age has passed.
When the app was installed, it will display the modal below, prompting the user if they want to open the app. You can see an example here while trying to open the Twitter app.
Here’s a video of the 9.2 experience when the app is installed.
This means it’s impossible to try and open up the app from Safari without showing an error message if the app is not installed. Because this is such a bad user experience, URI schemes, from our perspective, are effectively useless at this point.
The only observable difference in iOS 9.2 is that your app will not open immediately when a link is clicked (unless you’ve set up Universal Links). It will redirect to the App Store 100% of the time, even when the app is installed. So, if a user has your app, they’ll see an ‘Open’ button instead of the ‘Get’ button.
Please note that deep linking through install, passing parameters to the app, and all of your attribution and analytics are unaffected. These work just fine. For most people, this is why you’ve integrated Branch in the first place.
Don’t fear! There is a solution. Apple delivered Universal Links to handle opening of the app when installed, and falling back to your chosen path (mobile web, App Store, or Deepview). Branch has made enabling Universal Links extremely easy. You just need to add ‘bnc.lt’ and your custom link domain to your app in the Domain Entitlements file and check a box on our dashboard.
If you currently use URI schemes for deep linking, check out our post for transitioning to Universal Links. If you want to check if your domain is properly configured for Universal Links, try our validator tool.
We’d highly recommend that you invest the five minutes it takes to make this update, as it will deliver substantially better routing from your Branch links on iOS 9.2 and above.
We don’t need to change much, since we already support Universal Links.
We’re going to assume that this was not an accident and that Apple actually wants URI schemes gone. Over the next few days, you’ll see some substantial changes to our service to make it easier for you to adopt Apple’s mobile link scheme.
Here are some things you’ll see happen.
Most of you don’t need to read this section, as it’s already clear why you would use a Branch Universal Link. Here’s a simple diagram.
With Branch, you get all the basic routing of a Universal Link plus the deferred deep linking and install attribution for the new user acquisition flow. That’s why Branch is your go-to tool for mobile app growth. Read our guide for setting up Universal Links or view our Universal Links best practices for more information.
And of course, if you don’t have a website for your app already, Branch will host your apple-app-site-association file for you and give you Universal Link technology with the check of a box. Learn more by requesting a Branch demo.