목차
반응형
react native를 사용해서 프로젝트를 만들때 deep link라는것을 본적이있다.
link와 비슷한 동작을 하는데, 왜 deep link라고 하는거지..?라는 궁금증이 들어서 한번 공부해서 정리해보자
딥링크에 대한 정의를 먼저 보자
특정 페이지에 직접적으로 도달할 수 있는 링크
링크란 모든 형식의 자료를 연결하고 가리킬 수 있는 참조고리이다.
(모바일)딥링크란?
앱에서 링크에 해당하는 컨텐츠로 이동시킬수 있는것. 즉, 앱과 앱간의 이동을 의미
- 채팅으로 링크를 받아서 특정 앱의 화면으로 이동시키기
- 광고에서 버튼을 눌러서 광고 컨텐츠에 맞는 화면으로 이동시키기
- 푸시를 눌렀을때 푸시내용에 맞는 화면으로 이동시키기
스킴 딥링크(URI Scheme)
- 초기에 사용된 딥링크 구현 방식이다.
- URI Scheme는 아래와 같은 패턴으로 구성된다.
{scheme}://{path}?xxxx=1234
- scheme : 어떤 앱인지
- path : 어떤 화면을 보여줄건지
그리고 아래처럼 사용하면됨!!!!!
기본적인 모바일에서의 동작을 쓸수도있음. 전화나 문자같은거?
kakaotalk://me sms:// <- 문자
tel:// <- 전화
mailto:// <- 메일
geo:// <- 위치/지도
market:// <- 앱마켓
URI Scheme의 한계
- 앱이 설치되어 있을때만 실행할 수 있다.
- 원하는 스킴을 아무나 만들수있어서 같은 스킴을 사용하는 경우가 생긴다. 즉, 스킴은 유일하지않다.
- 만약 같은 스킴을 사용하는 앱이 여러개일때는
- android의 경우, 어떤앱으로 열지 선택하는 팝업이 뜨고,
- iOS는 마지막에 설치한 앱이 열린다.
그래서 악의적으로 다른 앱에서 사용하는 스킴과 똑같은 스킴을 정의해서 내 앱이 열리도록 할 수 있다.
예를들면, 카카오톡에서 사용하는 kakaotalk://xxx와 동일한 URI Scheme을 만들어서 내 앱이 실행되도록 할 수 있음
이러한 URI Scheme의 한계를 극복하기 위해 아래와 같은 개념들이 생겼다.
앱링크/유니버셜링크
이 링크들은 항상 웹사이트 형태의 딥링트 URL로 만들어진다.
웹 페이지 주소를 사용한 딥링크이다.
https://www.heydealer.com/chat
https://deeplink.heydealer.com/cars/xxx
https://heydealer.com/events?id=123
- 고유한 웹사이트 주소(도메인)로 만들어지기때문에 항상 유일하다.
- 이 도메인이 이 앱의 소유자라는것을 인증해줘야 제대로 동작한다. (iOS, android 둘다)
- 앱링크/유니버셜링크를 구현하기 위해서 소유한 도메인이 있어야한다.
- 유니버셜 링크는 해당 url 상위 페이지에 도메인 정보가 포함된 JSON파일인 apple-app-site-association(AASA)파일을 함께 올려야한다.
- 앱링크는 인덴트 설정을 해주면된다. 웹사이트의 기존 URL을 앱의 활동에 매핑할 수 있다.
실행동작
- 앱이 설치되어있다면 해당 딥링크에 맞는 화면이 실행됨 (앱이 바로 실행됨)
- 앱이 설치되어있지 않다면 웹 URL로 인식되어 실제 해당 웹 링크를 열려고 시도함
- 웹서비스도 함께 제공하고있다면, 해당 웹서비스에서 맞는 컨텐츠를 보여준다.
- 하지만 웹서비스를 제공하고있지 않다면, 해당 URL로 웹을 열었을때 앱마켓으로 이동시키도록 처리해두면 된다.
Deferred DeepLink
- 지연된 딥링크
- 설치 과정을 통해 특정 콘텐츠의 문맥을 보존하여 설치 후 사용자를 정확한 지점으로 인도합니다.
- 딥링크를눌렀을때 아래와 같은 경우의 수로 동작하게 된다.
- 앱이 설치되어있으면 : 앱이 바로 열리면서 해당 컨텐츠를 실행
- 앱이 설치되어있지않으면 : 딥링크동작을 지연시켰다가 앱설치 이후 실행되었을때 해당 컨텐츠를 실행한다.
- 앱을 처음 설치해서 실행한 사용자에게도, 보여주려고 의도했던 컨텐츠를 앱 실행직후에 바로 보여줄 수 있음
항공권 예약서비스 혹은 쇼핑몰 등에서
1. 친구에게 해당 상품을 알려주고
2. 그 친구가 그 상품을 웹으로 살펴보다가
3. 구매를 하기위해 앱을 설치하고 열었을 때
4. 앱의 최초 시작 화면을 바로 해당 상품의 화면으로 이동시킬 수 있습니다.
- 이 기능을 쉽게 사용할 수 있도록 지원해주는 업체들이 많음
- firebase, appsFlyer, Branch….
- Firebase dynamic link
- 구글에서 지원하는 딥링크 지원 sdk이다.
- Dynamic Link의 Deferred DeepLink를 통해 구글 플레이 앱 설치 화면에 유입된 경우, [열기] 대신 [계속] 으로 표시됩니다.
'개발' 카테고리의 다른 글
Next.js 14 app directory 사용시 새로 알게된 내용 정리 (0) | 2024.11.12 |
---|---|
저의 훼이보릿 라이브러리 zod에 대해 정리해보겠어요(+ 실제 사용 예시) (0) | 2024.08.04 |
[GIT] 실무에서 자주쓰는 Git 명령어 정리 (21) | 2024.07.26 |
Error 객체를 JSON.stringify에 넣으면 빈객체가 출력되는건에 대하여 (1) | 2024.04.27 |
10분만에 npm cli 명령어로 자기소개하기 (1) | 2023.09.28 |