iOS 유니버셜 링크란 (Apple Universal Link)
기능
웹에서 앱을 호출 하는 기능이 필요할 때가 있습니다.
기존에는 Scheme URL 방식으로 호출을 했었는데 이 방식을 사용하면 기기에 앱이 설치되어있는 없든 사용자가 링크를 눌렀을 때
'앱스토어로 이동하시겠습니까?'라는 알럿이 뜹니다. 이 알럿창 확인 버튼을 누르면 앱이 깔려있으면 앱으로 이동하게 됩니다.
동작 사항이 부자연스럽습니다.
앱으로 이동하는데 안내 문구는 앱스토어를 말하니깐요
해당 문제를 해결할 수 있는 방법이 유니버셜 링크입니다.
유니버셜 링크를 이용하면 앱이 설치되어있는 사용자가 링크를 누르면 앱으로 이동하고 없으면 앱스토어로 이동하게 됩니다.
좀 더 나아가 이 기능을 OS에서 처리해주나 기대를 했지만 앱스토어로 보내는 부분은 웹 개발 쪽에서 구현을 하게 됩니다.
앱쪽에서는 프로젝트 세팅을 해주고 링크받아 들어온 이벤트 후처리를 해주는 해줍니다.
유의사항
ip 및 http에선 동작하지 않음
앱이 미설치되어 있을 경우 앱스토어로 보내는 기능은 앱이 아닌 웹에서 a 태그로 구현함
지원 OS 버전 : iOS 9 이상
적용 방법
1. Associated Domains Entitlement 추가
위치 : Xcode Signing & Capabilities 탭 Associated Domains.
형식 : <service>:<fully qualified domain>[:port number]
service 종류 및 설명 : 유니버셜 링크에서는 applinks를 사용합니다.
- webcredentials: Use this service for shared web credentials.
- applinks: Use this service for universal links.
- activitycontinuation: Use this service for Handoff.
2. Apple App Site Association 파일을 웹사이트에 추가
파일명: apple-app-site-association (확장자 없음)
위치: .well-known 디렉터리 또는 root 디렉터리에 추가
3. apple-app-site-association 파일 내용
apps : 유니버셜 링크에서는 사용하지 않지만 빈 배열로라도 반드시 명시되어 있어야 합니다.
details : 웹사이트에서 핸들링되는 앱들의 목록입니다. 즉 한 웹사이트에서 유니버셜 링크를 사용하는 여러 앱 연동이 가능합니다.
appId : 앱의 식별값으로 팀 아이디와 번들 identifier를 사용합니다. 형식:<team identifier>.<bundle identifier>.
paths : 앱에서 지원하는 웹사이트 경로(*: 전 위치 가능)
{
"applinks": {
"apps": [],
"details": [{
"appID": "yourTeamID1.com.your.domain1",
"paths": ["*"]
},
{
"appID": "yourTeamID2.com.your.domain2",
"paths": ["/videos"]
}]
}
}
링크 쿼리문 조작
기본적으로는 웹 링크에 get방식으로 앱과 규칙을 정해서 파라미터로 넘깁니다.
보안상 문제가 생길것도 같지요
그래서 그런지 19년도 wwdc에서 아래와 같이 aasa파일에 명시하여 파라미터를 넘기는 방법이 소개되었습니다.
19년도에 소개되었기 때문에 하위 버전들 호환에 있어서 어떨지는 잘 모르겠네요 일단 테스트는 잘 안 해봤습니다
공식 개발문서에는 언급돼있지 않습니다.
https://www.yourdomain.com/?parameter=something
{
"applinks": {
"apps": [],
"details": [{
"appID": "MYID",
"components": [{
"/" : "",
"?": { "parameter": "something" }
}]
}]
}
}
https://developer.apple.com/videos/play/wwdc2019/717/
참고 싸이트
https://valuefactory.tistory.com/166 아이피로는 동작하지 않아 도메인을 만들어야 함
https://medium.com/@abhimuralidharan/universal-links-in-ios-79c4ee038272
https://rhammer.tistory.com/261
'IT > iOs' 카테고리의 다른 글
생체인증 구현하기 (0) | 2020.01.14 |
---|---|
Xcode 11.1,11.2,11.3 Crash (0) | 2020.01.12 |
시물레이터에서 3d 터치 쓰는법 (0) | 2020.01.08 |
아이폰 개발자 맥 하드 용량 확보 팁 (0) | 2019.12.20 |
폴더 생성, 삭제, 파일 삭제 (0) | 2019.12.19 |