하이퍼링크 http는 웹주소를 연결하는 sheme로서 무조건 인터넷웹사이트가 열리도록 약속한거다.
deeplink는 이름처럼 좀더 깊은 곳까지 링크시켜 해당자료가 열리도록 하는거다.
안드로이드/아이폰 에서는 http://가 아닌 abcde://등으로 개발자맘대로 정하기만 하면 누군가 abcd:// 링크를 여는순간 개발자의 앱이 열리도록 할수 있다.
안드로이드에서는 Activity 선언에 intent(의도,의지)-filter 태그를 통해서 해당 액티비티를 외부에서 바로가기 링크등을 통해서 바로 앱기동과 액티비티 이동이 가능하도록 할수 있다.
<activity
android:name=".MainActivity1">
<intent-filter>
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<action android:name="android.intent.action.VIEW" />
<data android:scheme="testapp" android:host="main" />
</intent-filter>
</activity>
<activity
android:name=".MainActivity2">
<intent-filter>
<data android:scheme="testapp" android:host="info"/>
<data android:scheme="https" android:host="myapp.com" android:pathPattern="/detail.*" />
</intent-filter>
</activity>
testapp://main 과 testapp://info 에 대한 딥링크를 정의했으니, 여기저기 광고할때에 이들 딥링크를 이용하여 사용자들이 앱을 이용할수 있도록 할수 있다.
하나의 액티비티에 여러개의 딥링크를 지정할수도 있다.
android:pathPatterndms 속성을 통해서 특정 단어가 들어가는 링크만 받을수도있다.
외부에서 링크를 testapp://info?myid1=1100
...
Intent intent = getIntent();
Uri data = intent.getData();
if (data != null) {
String data1= data.getQueryParameter("myid1");
//String data2= data.getQueryParameter("key2");
}
...
테스트 할때는 adb에서 직접할수도있다.
adb shell am start -a android.intent.action.VIEW -c android.intent.category.BROWSABLE -d "testpp://info? myid 1=value1& myid 2=value2"
deeplink 의 scheme는 아무나 정할수 있기 때문에, 같은 scheme라면 어떤 앱이냐고 물어보는 안드로이드대화상자가 나타난다. 그래서 scheme를 자신만의 것으로 하는것도 중요하다.
딥링크를 제공할때 , 사용자가 내가만든 딥링크 testapp://main 의 링크를 클릭했는데, 사용자핸폰에 내 앱이 설치되어있지 않다면 ? 앱설치부터 시켜야한다.
구글 마켓에서 그걸 지원하는데,
Android의 defer deeplink 라고 하고 Google Play Install Referrer라고 합니다. 이 기능은 Android에서 Android 마켓인 Google Play Store를 통해 공식적으로 지원한다 .
Firebase Dynamic Link 를 쓰면 deferer 딥링크도 지원해주고, 아주 편리하다.
0 comments:
댓글 쓰기