반응형
LinkedIn 개발자로 성장하면서 남긴 발자취들을 확인하실 수 있습니다.
Github WWDC Student Challenge 및 Cherish, Tiramisul 등 개발한 앱들의 코드를 확인하실 수 있습니다.
개인 앱 : Cherish 내 마음을 들여다보는 시간, 체리시는 디자이너와 PM과 함께 진행 중인 1인 개발 프로젝트입니다.
10년 후, 20년 후 나는 어떤 스토리 텔러가 되어 있을지 궁금하다. 내가 만약에 아직 조금 더 탐구하고 싶은 게 있고, 궁금한 게 있다면, 그게 설사 지금 당장의 내 인생에 도움이 안 되는 것 같더라도 경험해보자. 그 경험들을 온전히 즐기며 내 것으로 만들고, 내 일에 녹여내고... 그러다보면 그 점들이 모여 나란 사람을 그려내는 선이 될 테니까.

Recent Posts
Recent Comments
Total
관리 메뉴

꿈꾸는리버리

딥링크 ( 이론 ) 본문

오뚝이 개발자/iOS

딥링크 ( 이론 )

rriver2 2023. 5. 4. 15:00
반응형

 Deeplink란? 

Deeplink란 이름 그대로 "Deep"한 "Link"이다. 링크를 타고 앱이 켜졌을 때 화면속의 특정 부분으로 바로 이동 할 수 있는 링크를 의미한다. 예를 들어 카카오톡에서 A가 보낸 메세지 “뭐해?”와 같은 push알림을 받고 사용자가 해당 알림을 탭했을 때, A와 나눈 카카오톡 메세지 화면으로 바로 이동하는 것이다. ( 만약 딥링크가 없었다면 로그인 -> 메인화면 -> 메세지 화면으로 이동할 것이다. )

  • 원리: 서버에서 앱에 URL전송 -> 앱에서 URL을 가지고 문자열을 파싱하여, 특정 화면으로 화면전환

1️⃣ URI scheme 방식

: 앱에 URI 스킴(scheme) 값을 등록하여 딥링크 사용

가장 일반적인 딥링크 방식으로, URI 스킴을 이용한 딥링크는 앱에 Scheme값을 등록하는 형태로 앱을 구분한다. 예를 들어 트위터 앱을 오픈하고자 한다면 twitter:// 라는 스킴값을 이용하면 된다. 그리고 앱 내에서의 특정 페이지는 'path' 값으로 구분한다. 예를 들어, 트위터 앱의 회원가입 페이지를 오픈하고자 한다면 twitter://signup 이라는 값을 사용하는 것이다.

Scheme://Path

Scheme = 앱을 특정함 (트위터)
Path = 앱 내 페이지를 특정함 (트위터 내 회원가입 페이지)

iOS의 경우 URL Scheme 항목에 스킴 값을 입력할 수 있다.

문제

1. URL 스킴 방식의 딥링크는 앱의 수가 적었던 시기에 광고를 통해 앱을 실행시키기에 적합했다. 하지만, 앱의 수가 증가하면서 앱 스킴의 값이 중복되는 문제가 발생하게 되었다. 앱을 개발하는 개발자가 자신이 적용한 스킴 값이 다른 앱은 사용하지 않는 고유 값인지 아닌지 확인할 수 있는 방법이 없고 다른 앱이 자신의 스킴 값을 사용한다 할지라도 이를 방지할 방법이 없는 상황이라고 한다.

ex. pdf 파일을 열고 싶을 때 여러 앱 중 어떤 걸 통해서 pdf를 열지 선택하게 함

 

2. 앱이 설치되어 있지 않다면 앱 마켓 등 다른 곳으로의 이동이 불가능하기 때문에 아무런 동작이 일어나지 않는다. 이러한 기능의 한계로 인해, 광고 클릭 후 아무런 동작이 발생하지 않거나 앱 설치까지 하는 번거로운 과정 끝에 앱의 메인 페이지만 나타나게 되어서 고객 유입의 목적에 발목이 잡혔다.

 

이러한 문제를 해결하기 위해서 나온 게 Deferred Deeplink ( 애플에서는 유니버셜 링크, 구글에서는 앱링크)이다.

2️⃣ Deferred Deeplink

: 도메인 주소를 이용한 딥링크 사용, 설치 과정에서 링크가 유실되지 않는다는 점에서 따온 이름

현재 우리가 사용하고 있는 사이트의 인터넷 주소는 모두 고유의 값 즉, 도메인을 가지고 있다. 그리고 이 도메인 주소를 딥링크의 실행 값으로 사용해서 구현된 딥링크이다.

기존에 앱이 설치된 유저는 앱 내의 특정 페이지로 이동, 앱이 설치되지 않은 유저는 각각의 앱 스토어로 이동 후, 앱 내 특정 페이지로 이동한다. (가삼 개발하면서 들은 건데, 앱을 실행하고 바로 딥링크로 가지 않고 스플래시 화면을 거쳐서 갈 때에도 Deffered Deeplink을 사용한다고 한다.)

 

Deffered Deeplink는 SDK 연동을 통해 생성하기 때문에 OS마다 각각의 Deffered Deeplink를 구현해줘야한다.

  • App Link (Android 제공) : 에어브릿지 Android SDK 가이드
  • Universal Link(iOS 제공) : 에어브릿지 iOS SDK 가이드

 

iOS의 경우에는 Signing & Capabilities의 Associated Doamain에서 등록이 가능하다.

문제

앱링크는 구글에서 만든 앱에서만 동작하고, 구글 이외에 앱에서는 정상적으로 동작하지 않고, 유니버셜 링크 역시 애플에서 만든 앱 이외에는 정상적으로 동작하지 않는다. 따라서 하나의 앱링크를 통해 다양한 OS에서 작동하기 위해서 Dynamic Deeplink가 나오게 된다.

 

3️⃣ Dynamic Deeplink, One link

다이나믹 링크는 파이어베이스에서 제공하는 딥링크의 일종으로, 똑같은 링크에 접속했을 때 접속 플랫폼에 따라 적절한 반응을 하도록 한다. 예를 들어 기기에 앱이 설치되어 있지 않을 때 iOS면 앱스토어로 보내주고 안드로이드면 플레이스토어로 보내주는 식이다.

또한, 일반적인 URI 혹은 URL스킴(ex. http://, https://, ..)으로 구현된 경우 뿐만이 아니라, 커스텀 스킴(ex. myapp://, ..)의 경우 앱이 설치되어 있지 않은 경우에도 문제가 발생하지 않는다.


 느낀점 

과거에 위젯을 통해서 앱이 열릴 때 link 관련해서 얕게 공부한 적이 있는데, 그때 생각보다 되게 쉽게 구현이 되어서 놀랐던 기억이 있다. 하지만,, 반면에 딥링크는 좀 더 정교한 작업이 필요해 보였다. 최근에 가삼 개발을 하면서 iOS 디렉터 분의 사고 방식을 따라가고 싶은 마음에 디렉터 분이 올리신 PR을 머지하고나서 대략적인 설명을 해줬으면 좋겠다는 요청을 했었는데, 흔쾌히 허락해주신 덕분에 오늘 설명을 들을 수 있었다. 미팅 전에 대략적으로 딥링크가 뭔지 공부하고 PR 코드를 읽고 갔는데에도 이해가 잘 안 되지는 않았다.. 하지만 원래 공부는 ,,, 힘들게 하는 거라고,,, 해주신 설명을 토대로 내일은 좀 더 코드를 뜯어봐야겠다.

 참고한 블로그 

반응형
Comments