Android

[Android] 딥링크 / URI Scheme 방식 사용하기

실버☆ 2023. 4. 4. 17:49

 

 

 

 

💡 딥링크

특정 주소를 클릭하면 앱 내 해당 화면으로 이동할 수 있는 링크를 딥링크라고 한다. 마치 특정 웹링크를 통해 웹페이지로 이동할 수 있는 것과 같은 기능이다. 이러한 딥링크는 사용자로 하여금 광고 링크를 눌렀을 때 바로 특정 화면으로 이동할 수 있게 하여 중간에 탈주를 막는 효과도 제공한다

  • URI Scheme
  • 앱링크 
  • 유니버셜 링크

딥링크는 이와 같이 3가지 방식으로 구분된다. 

 

 

 

 

URI Scheme

앱에 Scheme 값을 등록하여 앱을 구분하는 방식이다. 스킴이란 앱마다 등록할 수 있는 값으로, 우리가 특정 스킴을 넣어 값을 호출하면 그에 해당하는 앱이 열리도록 하는 기능을 수행한다.

이때 path 값은 앱 내 특정 페이지를 가리킨다. Scheme://path 라는 값을 호출하면 Schme을 통해 특정된 앱 내 path가 가리키는 페이지로 이동하게 된다. 

 

아래와 같이 안드로이드에서는 딥링크를 사용하기 위해 AndroidMainfest.xml 파일 내 액티비티에 스킴값을 틍록한다.

 

<activity
        android:name="com.example.android.TestActivity">
        <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="scheme"
                  android:host="path"
        </intent-filter>
    </activity>

 

이렇게 스킴을 등록할 경우 sheme://path 라는 값은 해당 액티비티를 가리키게 된다.

 

 

 

 

데이터 읽기

액티비티 초기 실행 단계인 onCreate() 혹은 onNewIntent() 에서 수신된 Intent 데이터를 가져올 수 있다.

 

override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.main)

        val action: String? = intent?.action
        val data: Uri? = intent?.data
    }

 

 

사용자가 딥링크를 통해 앱을 실행했을 경우 intent를 통해 넘어온 data 값에 특정 페이지를 가리키는 값이 넘어온다. 위 코드를 사용해 딥링크 데이터를 수신하여 원하는 페이지로 이동할 수 있다.