[iOS] DeepLink, URIScheme, Universal Link, DynamicLink

Hyunndy·2023년 2월 20일
0

iOS-Push

목록 보기
2/4

🐸

일하면서 듣는 온갖 Link에 대한 정리 입니다.


DeepLink

정의

딥링크란 A앱에서 B앱을 실행하거나, B앱의 특정 화면으로 이동할 수 있는 기능을 말합니다.
👩‍💻 예시)
1. 카카오톡에서 카카오맵의 특정 위치 Link를 탭할 경우, 카카오맵이 켜지면서 바로 특정 위치 정보가 뜸
2. 카카오맵이 깔려있지 않다면, 설치 유도 웹 / App Store로 이동

유형

딥링크에는 기본 딥링크와 디퍼드(deferred) 딥링크 두 가지가 있습니다.

기본형

앱이 설치된 경우에만 사용자를 앱으로 연결합니다.
앱이 설치되어있지 않은 경우 링크를 통해 앱의 최종 목적지에 도달할 수 없기 때문에 오류 메세지가 표기됩니다.
앱 마케터가 앱을 설치한 사용자를 찾아 이들이 앱을 다시 사용하게 만드는 리타겟팅 캠페인에서 유용하게 쓰입니다.

디퍼드(deferred)

사용자가 앱을 설치하지 않은 경우에는 사용자를 앱스토어로 안내한 다음, 원래 의도된 곳으로 가게합니다.
👩‍💻 예시)
인스타에서 무신사 광고를 보고 예뻐서 클릭했다. 무신사 안깔려있다. 앱스토어에서 무신사 깔아서 실행하니 아까 예뻐서 클릭한 그 옷의 상세 화면으로 이동했다.

디퍼드 딥링크는 딥링킹 솔루션(SDK) 연동을 통해서만 제공되는 기능입니다.
AirBridge, OneLink 등과 같은 중간 플랫폼이 있으며,
매체 앱(인스타)에서 광고를 클릭했을 때, 미리 등록해둔 트래킹 링크를 통해 중간 플랫폼에게 디퍼드 딥링크 생성을 요청합니다.

이후, 앱을 실행했을 때 앱에 설치해둔 중간 플랫폼의 SDK를 이용해서 디퍼드 딥링크를 체크하고 내려받습니다.
내려받은 디퍼드 딥링크로 특정 행동(이벤트)를 취하도록 파싱합니다.

기본형 구현 방식

  1. [1세대] URI Scheme
  2. [2세대 - 안드로이드] App Link
  3. [2세대 - iOS] Universal Link

[1세대] URI Scheme

👩‍💻 URI란?

Uniform Resource Identifier, 통합 자원 식별자
언제 어디서든 늘 같은 리소스(텍스트, 이미지, 비디오)를 보여줄 수 있도록 해주는 식별자 이다.

<스킴>://<사용자이름>:<비밀번호>@<호스트>:<포트>/<경로>?<쿼리>#<프래그먼트>

이해

URI Scheme을 이용한 딥링크는 앱에 스킴 값을 등록하는 형태로 앱을 구분합니다.
스킴은 앱 마다 등록할 수 있는 값으로 👩‍💻 "특정 스킴을 호출하면 특정 앱을 오픈한다!" 라는 약속입니다.
트위터 앱을 오픈하고 싶다면 twitter:// 라는 스킴값을 이용하면 된다.

이 scheme값은 앱 개발 시 효율적인 앱 오픈을 위해 자체적으로 개발사에서 자신들만의 고유한 값을 등록합니다.
근데? 사람이 하는거니까 당연히 앱 scheme이 중복되는 경우가 발생합니다.
이 경우 같은 scheme을 공유하는 여러 앱 중 선택하라는 시트가 나오게 됩니다.
👩‍💻 예시)

  • market:// 라는 scheme값은 플레이 스토어, 원스토어 등 오픈 마켓에서 다 사용합니다.

앱 내에서의 특정 페이지는 'Path'값으로 구분한다.
Scheme://Path 라는 형식으로 사용하면된다.
👩‍💻 예시)

  • 트위터의 회원가입 페이지: twitter://Signup
  • 유투브 뮤직: youtubemusic://

적용

iOS의 경우 타겟 > Info > URL Types에서 등록할 수 있다.

특징

기본 브라우저에서 URI Scheme 링크를 입력하면 앱이 실행되는 것을 확인할 수 있다.

문제점

URI Scheme 방식은 Scheme이 중복될 수 있다. 라는 문제점이 있습니다.
개발자는 본인의 앱의 스킴 값이 고유한 값인지 확인할 방법이 없습니다.

이 한계를 극복하고자 2세대의 App Link, Universal Link가 나왔습니다


[2세대] Universal Link

이해

우리가 사용하는 웹페이지 도메인 주소는 모두 고유하다.
네이버는 (naver.com) 다음은 (daum.net)

따라서 애플과 구글의 개발자들은 이 고유한 도메인 주소를 딥링크 실행 값으로 사용하도록 결정합니다.
이 기능을 안드로이드는 App Link, iOS는 Universal Link 라고 합니다.

특징

기본형 딥링크에서의 서술과 다르게 앱이 설치되어있지 않으면 해당 유니버셜 링크가 가리키는 웹 사이트로 이동하게 됩니다.

👩‍💻 플로우
유니버셜 링크(= 웹사이트 도메인) 실행 ->
유니버셜링크를 지원하는가? ->
Y: 앱 설치 유무에 따라 앱으로 이동 || 웹사이트로 이동
N: 웹사이트로 이동

세팅 과정

  1. 웹 서버 작업 - Web Server에 AASA(Apple-App-Site-Associtaion) 파일을 추가
  • 어떤 앱이 이 링크에 연결 되어있는지 알려준다. 이 작업에서 앱이 유니버셜 링크를 지원하는가?를 알 수 있다.
  1. 앱 작업 - Signing & Capabilities -> Associated Domains 추가
  • 앱이 유니버셜 링크를 지원하는가? 를 통과하면 AASA 파일로부터 어떤 앱이 연결되어있는지 파악한 OS가 연결된 앱을 호출하는데, 이 때 사용자가 직접 실행하는게 아닌 OS가 백그라운드에서 외부 URL에 의해 앱을 실행시키는 것이기 떄문에 사전에 정의되어 있어야 한다.

문제점

모든 앱에서 지원하지 않는다.
앱 링크는 구글에서 만든 앱에서만 작동하고, 구글 이외의 앱에서는 정상 작동하지 않습니다.
유니버셜 링크는 애플에서 만든 앱 이외에는 정상적으로 동작하지 않습니다.


Dynamic Link

Firebase가 지원하는 기능이다.
유니버셜링크와 동작이 같으며, 웹서버에 AASA등록하는 작업을 Firebase가 대신 해준다.
안드로이드-iOS 모두 한 링크로 관리할 수 있다.


마무리

출처

예전에 정리는 한 번 해두었는데 이번에 더 디테일하게 정리된 것 같습니다.
좋네요!

profile
https://hyunndyblog.tistory.com/163 티스토리에서 이사 중

0개의 댓글