2021년 1월 27일 수요일

[Android] DeepLink 로 앱의 특정 화면에 바로가기

하이퍼링크 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:

댓글 쓰기