iOS 9.2 Update: The Fall of URI Schemes and the Rise of Universal Links

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.

iOS 9.2 Universal Links

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.

imdb://title/tt3569230

What Happened to URI Schemes in iOS 9.2?

Traditionally, in order to use a URI scheme, you have to manually handle the case of the app not being installed. The typical process was to attempt to open up the app in Javascript by setting window.location to the URI path that you wanted.

window.location =imdb://title/tt3569230”;

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.

ios 9.2 uri scheme error

So, in order to avoid this, you had to add some Javascript to your page where you would redirect away to the App Store. This way, the user was not left with an error on the screen.

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.

iOS 9.2 Redirect to Twitter

What happens now is that in iOS 9, Apple changed the ‘Open App’ modal from a Javascript blocking modal to a non-blocking modal. When you try to open up the app, the modal will no longer block Javascript from executing, meaning that the fallback URL to the App Store will execute immediately before the user can click ‘Open 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.

Are My Branch Links Alright? 

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.

What Should I Do?

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.

enable universal links on Branch

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.

With Apple’s iOS 9.2 Update, What is Branch Going to Do?

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.

    1. Universal Link support for /a/branch_key links
    2. Universal Link support for aliased links
    3. Improved analytics around Universal Links (clicks registered for ‘open’ events)
    4. Some neat tools for verifying your Universal Link config
Why Should I use Branch for Universal Links?

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.

Branch Universal Links redirection

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.