Development record of developer who study hard everyday.

레이블이 안드로이드 딥링크인 게시물을 표시합니다. 모든 게시물 표시
레이블이 안드로이드 딥링크인 게시물을 표시합니다. 모든 게시물 표시
, ,

안드로이드 딥링크(deeplink) 개념 및 예제

안드로이드 딥링크(deeplink) 개념 및 예제


고객사의 요청에 따라 A라는 신규앱을 만들고 있다.

그런데 A라는 앱에서 고객사의 또다른 앱 B와 통신을 해야하는 경우가 생겼다.

좀 더 구체적으로 말하자면, A라는 앱에서 B의 특정 화면으로 넘어가야하는 사례이다.

어떻게 해야하나 찾아보다가 딥링크(deeplink)라는 개념을 알게되었다.


1. 인텐트 필터 정의하기

먼저, 딥링크로 보여줄 화면(Activity)에 intent-filter를 정의해주어야한다.

<activity
android:name=".SampleActivity"
android:exported="true">

<intent-filter>
<action android:name="android.intent.action.VIEW"/>    //1
<category android:name="android.intent.category.BROWSABLE"/>    //2
<category android:name="android.intent.category.DEFAULT"/>    //3

<data android:scheme="appg"    //4
android:host="boo" />
</intent-filter>

</activity>

1 => 구글 검색에서 인텐트 필터에 도달할 수 있도록 한다.

2 => 웹브라우저에서 인텐트 필터에 액세스할 수 있도록 한다.

3 => 앱이 암시적 인텐트에 응답할 수 있다. 이 카테고리가 없으면 인텐트에 앱이 명시되어있는 경우만 액티비티가 시작이 된다.

4 => 최소한 <data>태그에는 android:scheme 속성이 포함되어야한다.

ex) "example://gizmos"에서 example이 scheme이고 gizmos가 host이다.


2. 앱 호출하기

val url = "appg://boo?param1=value1"    //1
val intent = Intent().apply {
flags = Intent.FLAG_ACTIVITY_NEW_TASK
data = Uri.parse(url)
}
startActivity(intent)

위와 같은 방식으로 앱을 호출해주면된다.

1 => 스키마는 appg, host는 boo 그리고 뒤에는 query문으로 key - value 쌍으로 데이터를 전달한다.

 

3. 데이터 받기

val dataUri = intent.data
val textData = dataUri?.getQueryParameter("param1")
findViewById<TextView>(R.id.sample_textview).text = textData

2번에서 딥링크를 통해 앱을 호출했다.

그럼 1번에서 만든 SampleActivity가 열릴 것이고 데이터를 받으면 된다.


data ((singular)datum)
Share:
Read More