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.