Universal Links not working IOS 13 PROD only

I have an app where we create a UAT build and PROD enterprise build internally. We have apple-app-site-association on two different servers. One for UAT and one for PROD. Apple Site Validator says both are good. Both apple-app-site-association are at the app root (not .well-known).


On IOS 11.2.1, both UAT and PROD build work fine. Universal links work perfectly.

On IOS 13.1 (or any 13+) UAT works. PROD does not work. This is the confusing part because both are using the same TEAM, profile and cert. Only difference is bundleID. Both bundleID's are all lowercase, except the team name. Both are all UPPERCASE. I verified what is in the app bundle as ID and what is in the apple-app-site-association file. Identical.


Only difference I see is in the response from the server. PROD one returns cookie as part of response. This doesn't seem to bother ios 11 or 12. It might not bother ios 13. But just an observation.

UAT Response Header : apple-app-site-association

HTTP/1.1 200 OK

X-Backside-Transport: OK OK,FAIL FAIL

Content-Type: application/json

X-Global-Transaction-ID: 2e9c5f725e55844c0f93157d

X-Akamai-CSITE: RFDC

Content-Length: 588

Date: Tue, 25 Feb 2020 20:32:12 GMT

Connection: keep-alive


PROD Response Header : apple-app-site-association

HTTP/1.1 200 OK

X-Backside-Transport: OK OK,FAIL FAIL

Content-Type: application/json

X-Global-Transaction-ID: 47b14c8d5e5583f001fc330d

X-Akamai-CSITE: 390G

Content-Length: 516

Date: Tue, 25 Feb 2020 20:30:40 GMT

Connection: keep-alive

Set-Cookie: C_SITE=390g; path=/; domain=.mydomain.com; secure; HttpOnly


On a side note, I also have a PROD build that is an ad-hoc build. Non-enterprise. The team, profiles, bundle ID, etc all differ. My associate file has that info in it as well. It behaves the same way as the Enterprise one does. Works on ios 11 and 12, but not 13.


I checked console logs for working and non-working. IOS 11 has nice logs that say it’s downloading json file and then how it’s adding entries. IOS 13 is not very verbose in either case. Both IOS 11 and 13 mention this however:

JSON file for ap….ci….com had no entries


And I only see that for the PROD server. Never mentions that for the UAT server. I’m not quite sure what that means. It could not get/read the file? Or it can read the file but my entries don’t match what is expected somehow.


Can anyone give insight into what I should check? I checked certs, mobile provisions, the ones actually embedded in the .ipas. Everything looks good.

Replies

Were you able to find a solution? I'm getting that same "JSON file for ... had no entries" error as well.

I am having the same issue. Any solution?

For anyone running into this issue, placing in .well-known directory seems to be required for this to work properly.