Bucket Place/Android

Deep linking, Part 1. Android

Cloud Travel 2015. 10. 2. 16:57


1. 여는글


 요즘 많이 대두가 되고 있는 Deep linking에 대해서 알아보도록 합시다. 그 첫번째 시간으로 안드로이드에서 Deep linking을 하는 방법에 대해서 알아보도록 합시다.



2. 단계1: Deep linking 추가하기


 Deep linking에 의해서 실행될 Activity를 선택하고, Manifest파일에서 해당 Activity 하위에 다음의 Intent를 추가하면 됩니다. 

<activity android:name="tistory.destiny738.DeeplinkActivity"
	android:label="@string/title_deeplink" >
     <intent-filter>
         <action android:name="android.intent.action.VIEW" />

         <!-- 어떤주소에 반응하여 해당 Activity를 실행할지를 정해주는 단계입니다. -->
         <data android:scheme="http"
               android:host="destiny738.tistory.com"
               android:pathPrefix="/deeplink" />

         <!-- 브라우저를 통해서 앱이 실행가능하게 카테고리를 설정합니다. -->
         <category android:name="android.intent.category.BROWSABLE" />
         <category android:name="android.intent.category.DEFAULT" />
     </intent-filter>
 </activity>

이외에 스키마를 잘 조정하면 자신만의 deep linking 주소를 생성할 수도 있습니다.



3. 단계2: 앱과 웹을 연결


 ㄱ. 구글 개발자 콘솔에서 연결할 어플리케이션을 선택합니다.

 ㄴ. 왼쪽 탭에서 Services & APIs 메뉴를 선택합니다.

 ㄷ. 하단부에 APP INDEXING FROM GOOGLE SEARCH라는 주제에서 "Verfiy website" 버튼을 클릭합니다.

 ㄹ. 사이트 주소를 적고, 인증과정을 시행합니다.

 ㅁ. Google Webmaster Tools를 클릭하여 Search Console로 이동합니다.

 ㅂ. 자신의 Website를 클릭(등록된 것이 없다면, 자신의 웹사이트를 등록합니다)합니다.

 ---- 등록과정은 여기까지이며, 하단은 확인 과정입니다.

 ㅅ. 오른쪽 상단의 톱니바퀴 메뉴를 클릭하여 "Associates"를 클릭합니다.

 ㅇ. Accounts에 앱의 package이름과 Google play 설명이 나오며 Google play위에 마우스를 올리면 앱과 웹이 연결된 것을 확인 할 수 있습니다.


4. 단계3: 웹에 페이지를 생성하여 딥링크 주소를 생성합니다.

 

 주소 형식은 : android-app://{package_id}/{scheme}/{host_path}?parameters 가 됩니다.

 예를 들어, 2단계 설정에 따르면 Deeplink 주소는 android-app://tistory.destiny738/http/destiny738.tistory.com/deeplink 가 됩니다.

 

 사이트에 추가할때는 아래와 같은 형식으로 해주면 됩니다.

 <a href="intent://destiny738.tistory.com/deeplink?name=Cloud#Intent;scheme=http;package=tistory.destiny738;end">안드테스트</a>



5. 단계4: 웹에서의 Head 설정


 <link rel="alternate" href="{deeplink 주소}" /> 를 추가합니다.

 위 예에서는 <link rel="alertnate" href="android-app://tistory.destiny738/http/destiny738.tistory.net/deeplink" />를

 head에 추가하면 됩니다.



6. 단계5: 행동설정


 받은 Activity의 onCreate함수에서 다음의 코드를 이용하여 다음 행동을 설정하면 됩니다.

//get uri data
Uri data = getIntent().getData();
//get schma
String scheme = data.getScheme(); // "http"
//get server name
String host = data.getHost(); // Ipaddress or domain name
//get parameter
String urltextboxname=data.getQueryParameter("name");
//set value in textview
name.setText(urltextboxname);


7. 마치며

 

 간단하게 Deeplinking을 하는 방법에 대해서 알아봤습니다.