안드로이드

[Android] 딥링크(deeplink)의 정의(URI Scheme, App Link, Deferred Deep Link)

IT꿈나무 2023. 2. 7. 16:27
반응형
딥링크는 특정 주소 혹은 값을 입력하면 앱이 실행되거나 앱 내 특정 화면으로 이동 시키는 기능을 수행 한다.[1]

URI Scheme
: 앱에 URI 스킴(Scheme) 값을 등록하여 딥링크에 사용한다.
앱이 없을 경우, 앱스토어로 이동하며 데이터는 유실 된다[1], 동일한 스킴값을 갖는 앱이 여러게 생길수 있으며 여러게 일 경우 선택창이 활성화 된다. 이는 URI Scheme의 단점에 속한다.

App Link (AOS), Universal Link (IOS)
:도메인 주소를 이용하여[1] URI Scheme의 단점을 보완한다. 따라서 복수개의 앱선택이 없이 하나의 도메인에 속하나는 하나의 앱만이 실행된다. 인텐트 필터의 host에 등록된 도메인 주소가 assetlinks.json 파일이 https://www.example.com/.well-known/assetlinks.json과 https://www.example.net/.well-known/assetlinks.json 양쪽에서 모두 발견되지 않으면 인증에 실패한다.[3]

Deferred Deep Link[2]
지연 딥링크라고 해석할수 있다. 앱이 설치되지 않은 유저에게는 딥링킹을 할수 없기 때문에, 앱을 설치하고 앱을 실행하기까지 기다렸다가 딥링크를 실행해 주는 기술이다. 앱을 설치하고 오픈한 유저의 정보는 물론 딥링크를 보관하고 내려줄 서버가 필요하기 때문에 직접 구현하는 것이 쉽지 않다. AOS는 Google Play Install Referrer을 이용하여 좀 수월하게 구현이 가능하다.[2]

Android 스킴 설정.

  <application>

    <activity android:name=”MainActivity”>
      <intent-filter android:autoVerify="true"> <!-- 스킴 딥링크 -->
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <data android:scheme="jkyscheme" android:host="jkyhost" />
      </intent-filter>
      <intent-filter><!-- 앱 딥링크 -->
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <data android:scheme="https" android:host="www.example.net" />
        <data android:scheme="http"/> 
      </intent-filter>
    </activity>

  </application>

호출 방법.
1. 앱에서 호출

String urlScheme ="jkyscheme://jkyhost?key1=value1&key2=value2";
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.addCategory(Intent.CATEGORY_BROWSABLE);
intent.addCategory(Intent.CATEGORY_DEFAULT);
intent.setData(Uri.parse(urlScheme));
startActivity(intent);


2. 웹에서 호출[4]

Intent://[스킴을 제외한주소]#Intent;scheme=[스킴];package=[패키지명]

window.location.href = `intent://jkyhost?op1=20&op2=33#Intent;scheme=jkysceme;package=com.jky.mywebview;end`;



참고자료
[1]  딥링크(Deeplink) : URI스킴, 유니버셜 링크, 앱링크 구분과 이해, 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
[2] [딥링크101] 디퍼드 딥링크로 앱을 설치하지 않은 유저도 앱 내 특정 페이지로 연결하기, https://www.airbridge.io/blog-ko/deeplink-101-deferred-deep-linking
[3] 딥 링크와 앱 링크의 차이 , https://developer.android.com/training/app-links/verify-android-applinks?hl=ko
[4] [Android Deeplink] 웹에서 앱을 설치 및 실행시키기 , https://vintageappmaker.tistory.com/249
[5] 외부 스킴 사용하여 앱 실행, https://black-jin0427.tistory.com/99
[6]  타 앱 호출하기, https://es1015.tistory.com/350


 

 

 

 

반응형