I went through a problem with Universal Links on iOS and find out that a lot of people have been experiencing this same problem on iOS 13 at forums, stackoverflow threads, but without any very precise or satisfactory answer. So I decided to write this quick tip to help this people.
Universal Links are controlled by swc on iOS (if you want to see the logs for that service at Console, look for the swcd process).
The SWC has a little-known and low-documented way of working, so I will explain step-by-step how the SWC makes the connection of a domain to an app.
- When installing an app, iOS validates that it has an Associated Domain, and in the case of Universal Links, an applink in its entitlement.
- If so, he sends it to the SWC to be processed.
- The SWC has a list of important TLDs. TLD (Top-Level Domain) are the famous .com, .net, .org that we see in website domains.
- If your applink has an important TLD, it runs immediately, in foreground.
- If your applink does not have an important TLD, it’s placed in a background queue.
- When possible, your applink will be processed, and if it complies with Apple’s demands, iOS will link the domain with your app.
Some important details need to be analysed.
The important TLDs are defined based in user’s region
Some apps have an international scope, like Google for example. Into those apps, there are several domains (.com, .co.uk, .nl, etc.) built-in one compilation.
So imagine an app like Google’s, with all possible domains. It’s a huge list.
For this reason, iOS has a list of important TLDs, which are processed immediately when the app is installed.
That way, domains relevant to your country are run first. For example, if I am in England, .co.uk domains will be processed immediately, and the rest (such as those from China, France, etc.) will be processed later.
The domains put in background will be processed (some hour, some day)
When your domain is placed to be processed in the background, iOS will process when possible.
The time it will run can vary depending on many OS variables and available resources, such as network availability, battery, processing time, etc. Another important point is the number of applications that the user has installed, and the number of applinks that those applications have to be processed.
Therefore, it is impossible to say when your applink will be processed and be ready for use.
The golden tip
The golden (and undocumented) tip for Universal Links is: if you want your applink to be processed immediately, use an “important” domain.
Many apps use their own domains, or generic domains (like .me, .link, etc.). If this is the case, wait for the OS to process your applink, or consider changing or adding a new domain for your Universal Links.
I hope I helped a lot of people there, and if anyone has any more problems that I can help, don’t forget to tell me 😉.
Categories: Quick Tips