Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Firebase
- JPA
- appstore
- SwiftUI
- MacOS
- Apple
- Python
- Realm
- IOS
- iOS16
- Swift
- 개발자
- github
- String
- 웹뷰
- Git
- FLUTTER
- UIButton
- Code
- 한글
- mac
- Session
- view
- darkmode
- rxswift
- Archive
- stack
- Xcode
- Notification
- error
Archives
- Today
- Total
EEYatHo 앱 깎는 이야기
Swift ) Deeplink, UniversalLink - EEYatHo iOS 본문
반응형
DeepLink
- 앱이 실행되거나 앱 내 특정 페이지에 도달할 수 있도록 하는 링크
- 두가지 방식이 존재. ( URL Scheme, Universal Link )
URL Scheme
- 가장 간단하고 오래된 딥링크 방식.
- 다른 앱과 중복 가능. ( 안드는 어떤 앱을 실행할지 고르라하고, iOS는 마지막에 설치한 앱이 열림 )
- 링크에 앱 스킴이 노출되기 때문에, 다른 앱이 작정하고 따라할 수 있다. ( 보안에 취약하다 )
- 타 앱에서 우리앱 오픈 시도 및 미설치시, 앱스토어 이동 등, 충분한 조치를 취할 수 없다.
- Info.plist - URL Types 에 어떤 스킴을 사용할지 등록 가능.
Universer Link
- URL Scheme 의 두가지 단점의 보완.
- 중복이 일어나 다른 앱을 실행시킬 수 있다.
- 앱이 설치되어 있지 않을 때 충분한 조치를 취할 수 없다.
- 웹 주소를 이용한 딥링크 방식. ( 웹 주소는 유일 → 중복 걱정 x )
- 작동 원리
- 웹 : 웹 서버에, JSON 형태로 AppID와 딥링크 경로 정보가 들어있는 apple-app-site-association 파일을 업로드. (참고)
- 앱 : 어떤 도메인으로 실행될 것인지 설정. ( Capability - Associated Domains ) (참고)
- 해당 앱이 설치될 때, iOS는 Info.plist를 체크, entitlements에서 Associated Domains Value를 찾고, 해당 HTTPS WebServer 에서 apple-app-site-association 파일을 찾은 뒤, 내부적으로 applink를 만듦.
( iOS 14부터는 애플의 content delivery network (CDN) 에 업로드하고 해당 파일을 참조함.) (참고) - 이후, 해당 웹 주소의 open커맨드를 받은 iOS는, 앱이 있다면 앱을 열고, 없으면 사파리를 엶.
- 사파리가 열렸다면, 개발자는 여기서 웹 서비스를 제공할지, 앱스토어로 보낼지 구현.
- 당연하지만, QR Code, NFC 태그 등으로 활용 가능.
- 안드로이드는 동일한 서비스로 이름만 다른 AppLink 가 있음.
- 웹서버에는 여러 앱을 담을 수 있음 → 하나의 웹 서버로 여러 앱의 유니버셜 링크 구현 가능.
- 주의사항
- 소유한 도메인이 필요
- iOS 9 이상에서 동작
- apple-app-site-association ( AASA ) 파일 크기는 128KB 보다 작아야함
- AASA 파일 확장자 없음. ( .json 아님 )
- .well-known 디렉터리 또는 root 디렉터리에 추가
- https 이어야함
- redirection이 없어야함
- 캐싱관련
- AASA 파일을 변경해도 바로바로 반영되지 않음.
- 앱을 설치하거나 업데이트할 때, 가져와놓고 쓰기 때문
- 애플은 AASA 파일을 24시간 마다 CDN에 AASA파일을 업데이트하고, 디바이스는 대략 일주일에 한번씩 CDN을 체크. (참고)
Firebase(Dynamic Link), AppsFlyer(One Link), AriBridge, DFinery(All Link), Adjust 등의 각종 서비스들..
- iOS의 유니버셜 링크, AOS의 앱링크 한번에 지원.( AppStore/PlayStore 로 잘 구분해서 랜딩 )
- 앱 미설치여서 앱스토어에서 설치 및 첫 실행했을 때, 소실된 딥링크를 앱에 쏴주는 Deferred DeepLink 서비스 제공.
- 앱 설치 후 본래 의도했던 페이지로 랜딩할 수 있다는 장점.
- 유저도 자연스럽게 탐색을 이어나가는 것이 가능하다는 장점.
- 각종 지표도 확인 가능
- 이 서비스들에서 꼭 유니버셜 링크를 사용하는 이유?
- 수많은 앱들을 관리하는 과정에서, URL Scheme 방식으로는 중복이 발생할 수 있기 때문.
Comments