Filters

Dispatch: Support for New AASA Format

February 2, 2022 | Updates & Announcements

Overview

Apple has released new support for Associated Domains with an updated apple-app-site-association (AASA) file format. The biggest change in the AASA format is the ability to include URL parameters for Universal Link determination. This change will allow for enhanced flexibility on the exclusion for a better user experience.

AASA files can now specify a set of components that determine paths and parameters on a domain that will allow or disallow the app from opening on link click. For Branch, this means enhanced flows for Branch Links and Universal Email. When you set your app.link domain and when Branch integrates with an Email Service Provider (ESP), Branch will generate an AASA file to enable iOS Universal Links on those domains.

When Branch generates the AASA file, it will now include the following component:

{
  "/": "/e/*",
  "?": { "$web_only": "true" },
  "exclude": true,
  "comment": "Matches any URL whose path starts with /e/ or includes $web_only=true and instructs the system NOT to open it as a Universal Link"
}

How does it work?

The core functionality of the AASA file is to provide instruction for what paths and parameters are included or excluded when determining if the app should open via Universal Links or not.

For example, say you have the following AASA file hosted on a domain:

{
  "applinks": {
      "details": [
           {
             "appIDs": [ "ABCDE12345.com.example.app", "ABCDE12345.com.example.app2" ],
             "components": [
               {
                  "#": "no_universal_links",
                  "exclude": true,
                  "comment": "Matches any URL whose fragment equals no_universal_links and instructs the system not to open it as a universal link"
               },
               {
                  "/": "/buy/*",
                  "comment": "Matches any URL whose path starts with /buy/"
               },
               {
                  "/": "/help/website/*",
                  "exclude": true,
                  "comment": "Matches any URL whose path starts with /help/website/ and instructs the system not to open it as a universal link"
               },
               {
                  "/": "/help/*",
                  "?": { "articleNumber": "????" },
                  "comment": "Matches any URL whose path starts with /help/ and which has a query item with name 'articleNumber' and a value of exactly 4 characters"
               }
             ]
           }
       ]
   },
   "webcredentials": {
      "apps": [ "ABCDE12345.com.example.app" ]
   },

    "appclips": {
        "apps": ["ABCED12345.com.example.MyApp.Clip"]
    }
}

Looking closer at the components array, we can see for which URL paths and parameters will allow the app to open via Universal Links. In the case of the URLs with the no_universal_links fragment or paths that start with /help/website/, the app will not open via Universal links because of the "exclude": true attribute.

FAQ

I already have Universal Email enabled, do I need to do anything?

If you already have Universal Email enabled and integrated, you do not need to update anything to preserve functionality. You can, however, make the following updates to reduce code bloat:


Will this change how my current Branch Links function?

No. Your standard Branch Links (app.link or custom domains) should continue to function normally.