In an iOS app I am working on I have setup Associated Domains (Universal Links). The app hosts multiple domains. Some domains I have set up with a wildcard. These domains do not seem to work. For example, I want to link to https://news.mydomain.com/
.
If I add the following to the list of associated domains:
applinks:*.mydomain.com
-> Does not work
applinks:news.mydomain.com
-> works fine
So I believe I did set up all correct, the apple-app-site-association file is setup fine. I can even see in both cases (using Charles Proxy) the apple-app-site-association file got retrieved ok.
In the case of the wildcard, the link only opens in Safari.
When I configure the domain without a wildcard, the App opens.
Am I missing something here? I am running iOS 9.3.2 on the device and I am running Xcode 7.3.1 which are today the latest versions.
How do I set up Universal Links for my app? Log into your Apple developer account and go to the app's ID page. Enable the Associated Domains app service. Take note of your Prefix (bundle ID) and your ID (team ID) - you will need them later.
Add the associated domains entitlement to your app For watchOS apps, you must add the Associated Domains capability to the WatchKit Extension target. To add your domain to the entitlement, click Add (+) at the bottom of the Domains table to add a placeholder domain.
After you create the apple-app-site-association file, upload it to the root of your HTTPS web server or to the . well-known subdirectory. The file needs to be accessible via HTTPS—without any redirects—at https://<domain>/apple-app-site-association or https://<domain>/.well-known/apple-app-site-association .
I added my findings to this thread: https://forums.developer.apple.com/thread/47315
In short, even in iOS 10, it appears that the wildcard setup requires that the apple-app-site-association
file be served by the wildcard's root.
For instance, if you want to use *.domain.com
, then the apple-app-site-association
needs to be hosted at both, e.g., app1.domain.com
and domain.com
, else it won't work with simply specifying applinks:*.domain.com
in Xcode.
This is unfortunate if your main site is hosted at www.domain.com
, and that you have a 301 redirect on domain.com
(which redirects you to www.domain.com
), because Universal Links do not allow redirects.
The workaround I found was to create a main subdomain for your app, and to use sub-subdomains for the wildcard. E.g.
app.domain.com
(must serve the apple-app-site-association
file)server1.app.domain.com
(must serve the apple-app-site-association
)server2.app.domain.com
(...)That way, in Xcode, you may only specify applinks:*.app.domain.com
and Universal Links will work without you having to specify server1.app.domain.com
, server2.app.domain.com
, and so on... in Xcode.
Note, however, that you must also explicitly specify applinks:app.domain.com
if you plan on using that server as well with your app.
I hope this helps.
It seems that adding a wildcard in the domain part of the applinks
has only been introduced in iOS 9.3 Beta 2
. In 9.3 Beta 2 release notes:
You can now use Universal Links with arbitrary subdomains instead of needing to list all of the app’s subdomains as fully qualified domain names. Entries have the form:
:[:port number] in which is “webcredentials”, “activitycontinuation”, or “applinks”.
The part of the entry can now optionally be prefixed with “*.” to indicate a wildcard subdomain. For example:
applinks:*.example.com
You say that you run on iOS 9.3.2
. But is your deployment target
>= iOS 9.3
? If it's not: try by changing it. I think it will solve your issue.
Here you can found a copy of this release notes (sorry, I do not have any other public source)
Edit:
Even if the Apple Doc say that you can use wildcards on domains, they seems to have an issue on this:
To match all subdomains of an associated domain, you can specify a wildcard by prefixing . before the beginning of a specific domain (the period is required). Domain matching is based on the longest substring in the applinks entries. For example, if you specify the entries applinks:.mywebsite.com and applinks:*.users.mywebsite.com, matching for the domain emily.users.mywebsite.com is performed against the longer *.users.mywebsite.com entry. Note that an entry for *.mywebsite.com does not match mywebsite.com because of the period after the asterisk. To enable matching for both *.mywebsite.com and mywebsite.com, you need to provide a separate applinks entry for each.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With