앱에서 유니버설 링크를 지원하기 위해서는 apple-app-site-association(AASA) 파일을 작성해서 웹 서버에 올려두는 작업이 필요
⚠️ Note
If your site uses multiple subdomains (such as example.com, www.example.com, and support.example.com), each requires its own entry in the Associated Domains Entitlement, and each must serve its own apple-app-site-association file.
applinks 형식 예시)
//applinks:your_dynamic_links_domain
applinks:example.com
applinks:*.example.com
이렇게 하면, 사용자가 앱 설치 시, 여기에 등록된 도메인의 해당 url의 .well-known/apple-app-site-association 경로에 가서 AASA 포맷을 확인하라고 파일에 대한 요청을 보내게 됩니다.
{
"applinks": {
"details": [
{
"appIDs": [ "ABCDE12345.com.example.app", "ABCDE12345.com.example.app2" ],
"components": [
{
"#": "no_universal_links",
"exclude": true,
"comment": "Matches any URL with a fragment that equals no_universal_links and instructs the system not to open it as a universal link."
},
{
"/": "/buy/*",
"comment": "Matches any URL with a path that starts with /buy/."
},
{
"/": "/help/website/*",
"exclude": true,
"comment": "Matches any URL with a path that starts with /help/website/ and instructs the system not to open it as a universal link."
},
{
"/": "/help/*",
"?": { "articleNumber": "????" },
"comment": "Matches any URL with a path that starts with /help/ and that has a query item with name 'articleNumber' and a value of exactly four characters."
}
]
}
]
},
"webcredentials": {
"apps": [ "ABCDE12345.com.example.app" ]
},
"appclips": {
"apps": ["ABCED12345.com.example.MyApp.Clip"]
}
}
components에 선언한 url과 웹에서 일치하는 페이지에서 링크를 상단에 표시
링크를 타고 들어갈 때 동일한 앱에서의 url 페이지로 이동
웹브라우저에서 직접 url 입력시 실제로 그 주소로 이동하고자 하는 의사가 있다고 생각해서 universal link가 동작 x
iOS version이 10 미만인 경우 Universal Link가 동작 x
Apple CDN 캐시가 존재하면 AASA 를 변경 해도 바로 반영x
https://developer.apple.com/documentation/xcode/supporting-associated-domains
https://lxxyeon.tistory.com/74
https://jooeungen.tistory.com/entry/iOSSwift-Universal-link-%EC%A0%81%EC%9A%A9%ED%95%98%EA%B8%B0