[web] 딥링크(Universal Link)
# 오류
IOS에서 safari이용시 scheme으로 된 딥링크 사용시 해당 app이 있을경우에는 상관이 없으나, 해당 app이 없을 때
'주소가 유효하지 않기 때문에 Safari가 해당 페이지를 열 수 없습니다'
경고창이 발생
-> 사용하는데 문제는 없으나 저 경고창을 보니 오류같아 보임.
# 해결방안
WEB 프로젝트(ex. https://sample.com)에 AASA(apple-app-site-asscocation )파일을 넣어준다.
경로 '최상단/.well-known/apple-app-site-asscocation'
// apple-app-site-asscocation
{
"applinks": {
"apps": [],
"details": [ {
"appID": "10자리의AppId.com.apple.example",
"paths": ["/pathaaa/*"]
} ]
}
}
appID 에는 AppId.BundleID 적어주면 된다. 해당 부분은 app파트에 문의하면 된다.
path 에는 내가 딥링크로 사용할 링크를 적어준다. 위의 설정파일을 따른다면 https://sample.com/pathaaa 로 접근하면 메인페이지로 이동. 여기서 https://sample.com/pathaaa?params=aaa이런식으로 매개변수를 넣어서 특정 화면으로 이동할 수 있다. 저 뒤에 매개변수는 app파트에 문의하면 된다.
# 해설
Safari에서는 https://~~로 시작하는 링크가 아닌 scheme(ex. sample://app)으로 된 링크를 오픈할 경우. Safari 자체적으로 위 경고창을 띄움. 따라서 https://~~ 인 링크로 딥링크를 만들어야 하는데 이것은 Universal Link라고 함.
따라서 Universal Link는 웹파트 뿐만 아니라 앱파트에서도 따로 설정을 해줘야한다.(본 글에서는 웹 부분만)
# AASA
IOS는 url 이동을 하면 해당 링크(path부분 포함 ex. https://sample.com/pathaaa)의 AASA의 유무를 확인 -> AASA에 정의되어 있는 appID의 app이 해당 모바일에 설치 되어있는지 확인 -> 해당 앱이 있을 경우 해당 앱이 열림 -> 해당 앱이 없다면 /pathaaa라 redirect 시켜주는 페이지로 이동하게 된다.
즉, /pathaaa라는 경로에서 appStore로 이동해주는 script도 구현해줘야 함.
# 참고
https://twitter.com/.well-known/apple-app-site-association
https://branch.io/resources/aasa-validator/#resultsbox -> 해당 페이지에서는 나의 딥링크 전용 웹에서 AASA설정이 잘 되어 있는지 확인 가능하다