App URIScheme와 Dynamic Link

원성희·2022년 5월 16일
0

목표

  • 외부로 부터의 유입 등을 고려하여 개발한다.
  • 앱은 Scheme 으로 접근하고 화면별 Path로 정의하여 개발한다.
  • 스키마 정리와 Dlink를 알아본다.

웹에서는 http 링크를 통해 각 화면에 접근할 수 있다. 모바일 앱에서도 이와 같은 기능을 딥링크라고 한다.
예를 들면, push 데이터에 딥링크를 필드를 분석하여 모바일 앱 각 페이지에 랜딩할 수 있다. 딥링크는 발전을 해왔다.

  • URIScheme : 앱에 URI 스킴을 등록하여 사용, OS시스템 레벨로 동작, 스토어 유도 안됨, 파라미터 전송 쉬움.
  • App Link + Universal Link : 각각 Android와 IOS에서 제공하고 도메인 주소로 사용, 앱설치까지 유도 가능
  • Dynamic Link : Firebase에서 제공, 스토어 유도 후 파라미터 제공까지 가능

Scheme 앱스킴

가장 일반적으로 사용한다. 많은 연동이 필요하지 않거나 유입되는 경로가 좁을 경우이다. 스킴은 앱마다 등록할 수 있는 값으로 "특정 스킴값을 호출하면 특정 앱이 오픈된다." 라는 약속을 실행합니다.
앱 내에서의 특정 페이지는 'path' 값으로 구분합니다. 예를 들어, 트위터 앱의 회원가입 페이지를 오픈하고자 한다면 twitter://signup 이라는 값을 사용합니다.

// Android의 경우 Androidmanifest.xml 정의 
<data android:scheme="스킴" android:host="path"/>

// IOS의 경우 앱정보 화면에서 URL Scheme 항목에 입력한다.

스킴의 중복이 발생하고 한계가 있어서 링크 방식 나오게 되었다.

앱링크와 유니버셜 링크

도메인으로 앱과 화면에 접근할 수 하고 연동 작업을 할 수 있다.

  • 안드로이드의 경우 아래와 같이 접근 가능(애드브릭스 화면에서 가져옴)

  • IOS의 경우, Singing & Capabilities 에서 Associated Domains 에서 등록

완벽했다면 좋았겠지만, Android와 Ios 따로 구현해야 하고 스토어 접근 안됨

앱이 설치 안되어 있으면, 앱 스토어로 이동하고 앱 설치까지만 진행할 수 있다.

딥링크의 문제점들을 개선을 하면서 FB에서 다이나믹링크를 소개하였다. 동작은 유사하지만 두 플랫폼 동시에 사용 가능하고 예외처리들이 가능하다. 물론 스토어 설치 후, 랜딩을 원했던 화면으로 파라미터 까지 들고 들어 갈 수 있다. 아래는 파베 소개 내용이다.

https://firebase.google.com/docs/dynamic-links?hl=ko

사용법

실제적으로 다이나믹링크를 사용하여 개발을 해보자.
1. 링크 생성 방법

  • Firebese Libaray를 이용한 생성
  • 콘솔에서 수동으로 생성 : 동적인 파라미터 대입이 불가함.
  • RestAPI를 통한 링크 생성(다른 플랫폼에서 동적 파라미터를 위해 꼭 필요함)
  1. RestApi를 통한 Link 생성

//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

profile
Simple is Best

0개의 댓글