Validate that apple-app-site-association files are set up correctly

The idea is you can use these functions in your test suite for doing automated tests on the validity of your apple-app-site-association file

Fetching your apple-app-site-association files

To fetch the apple-app-site-association files, create a URL which is your domain, such as

let domainUrl:URL = URL(string:"https://www.example.com")!

and retrieve the two urls for the allowed locations like so:

let appleAppSiteAssociationURLs:[URL] = try! domainUrl.urlsForAppleAppSiteAssociation()

Then use the urls to fetch the files. it shoudle exist at one of the two locations.

Deserializing an apple-app-site-association file

Once you’ve fetched the Data of the apple-app-site-association file, deserialize it with a JSONDecoder, like so:

let appleAppSiteAssociation:AppleAppSiteAssociation = try! JSONDecoder().decode(AppleAppSiteAssociation.self, from: data)

Testing matching URLs

Test which app ids can be linked for a given URL, using the .matchedAppIds(...) method.

let testUrl:URL = URL(string: "https://www.example.com/buy/")!
let testAppId:String = "ABCED1234.com.example.app"
XCTAssertEqual(appleAppSiteAssociation.applinks?.matchedAppIds(testUrl).contains(testAppId), true)

Each class within contains its own testing methods and its properties can be introspected.

Unsupported features

percentEncoded is not handled correctly


View Github