웹에서는 http 링크를 통해 각 화면에 접근할 수 있다. 모바일 앱에서도 이와 같은 기능을 딥링크라고 한다.
예를 들면, push 데이터에 딥링크를 필드를 분석하여 모바일 앱 각 페이지에 랜딩할 수 있다. 딥링크는 발전을 해왔다.
- URIScheme : 앱에 URI 스킴을 등록하여 사용, OS시스템 레벨로 동작, 스토어 유도 안됨, 파라미터 전송 쉬움.
- App Link + Universal Link : 각각 Android와 IOS에서 제공하고 도메인 주소로 사용, 앱설치까지 유도 가능
- Dynamic Link : Firebase에서 제공, 스토어 유도 후 파라미터 제공까지 가능
가장 일반적으로 사용한다. 많은 연동이 필요하지 않거나 유입되는 경로가 좁을 경우이다. 스킴은 앱마다 등록할 수 있는 값으로 "특정 스킴값을 호출하면 특정 앱이 오픈된다." 라는 약속을 실행합니다.
앱 내에서의 특정 페이지는 'path' 값으로 구분합니다. 예를 들어, 트위터 앱의 회원가입 페이지를 오픈하고자 한다면 twitter://signup 이라는 값을 사용합니다.
// Android의 경우 Androidmanifest.xml 정의
<data android:scheme="스킴" android:host="path"/>
// IOS의 경우 앱정보 화면에서 URL Scheme 항목에 입력한다.
스킴의 중복이 발생하고 한계가 있어서 링크 방식 나오게 되었다.
도메인으로 앱과 화면에 접근할 수 하고 연동 작업을 할 수 있다.
안드로이드의 경우 아래와 같이 접근 가능(애드브릭스 화면에서 가져옴)
IOS의 경우, Singing & Capabilities 에서 Associated Domains 에서 등록
완벽했다면 좋았겠지만, Android와 Ios 따로 구현해야 하고 스토어 접근 안됨
앱이 설치 안되어 있으면, 앱 스토어로 이동하고 앱 설치까지만 진행할 수 있다.
딥링크의 문제점들을 개선을 하면서 FB에서 다이나믹링크를 소개하였다. 동작은 유사하지만 두 플랫폼 동시에 사용 가능하고 예외처리들이 가능하다. 물론 스토어 설치 후, 랜딩을 원했던 화면으로 파라미터 까지 들고 들어 갈 수 있다. 아래는 파베 소개 내용이다.
실제적으로 다이나믹링크를 사용하여 개발을 해보자.
1. 링크 생성 방법
//Request
POST https://firebasedynamiclinks.googleapis.com/v1/shortLinks?key=
"FB API Key" //firebase web api key
Content-Type: application/json
{
"dynamicLinkInfo": {
"domainUriPrefix": "도메인", //위 정의된 prefix 추가
"link": "도메인?test=wonsh2000", //만들고자하는 url
"androidInfo": {
"androidPackageName": "패키지명" //aos 패키지명(위 참조)
},
"iosInfo": {
"iosBundleId": "번들명" //ios 번들명(위 참조)
}
}
}
//Response
{
"shortLink": "도메인/28VBTeimccM9HRsH8", //실제 앱을 호출하게 될 URI
"warning": [
{
"warningCode": "UNRECOGNIZED_PARAM",
"warningMessage": ""
},
{
"warningCode": "",
"warningMessage": ""
}
],
"previewLink": "솰라솰라"
}
//AOS 연동 코드
FirebaseDynamicLinks.getInstance().getDynamicLink(intent).addOnSuccessListener() {
Timber.d("dynamictest : " + it.link.toString())
Timber.d("dynamictest : " + it.link?.getQueryParameter("test")) //test 파라미터 get할수 있다.
}.addOnFailureListener {
Timber.d(it.toString())
}
앱을 처음 설계할 때, 스킴이나 딥링크를 고려해서 설계하면 나중에 편해진다.
개념을 정확하게 이해하고 설계해보자~
디파이너리 딥링크 : https://help.dfinery.io/hc/ko/articles/360039757433-%EB%94%A5%EB%A7%81%ED%81%AC-Deeplink-URI%EC%8A%A4%ED%82%B4-%EC%9C%A0%EB%8B%88%EB%B2%84%EC%85%9C-%EB%A7%81%ED%81%AC-%EC%95%B1%EB%A7%81%ED%81%AC-%EA%B5%AC%EB%B6%84%EA%B3%BC-%EC%9D%B4%ED%95%B4
딥링크 블로그 : https://skyfox83.tistory.com/567