관리 메뉴

나만을 위한 블로그

[Android] 앱 링크(App Link)란? 본문

Android

[Android] 앱 링크(App Link)란?

참깨빵위에참깨빵 2023. 12. 12. 00:04
728x90
반응형

이전에 딥링크를 다루면서 구현 방식 중 하나로 앱 링크란 것을 말한 적이 있다.

 

https://onlyfor-me-blog.tistory.com/791

 

딥링크(Deep link)란?

핸드폰에서 어떤 링크를 누르면 웹 페이지로 이동하는 경우도 있지만, 설치돼 있던 앱이 실행되면서 그 링크가 가리키는 특정 화면으로 이동하는 경우도 있다. 후자의 경우를 구현할 때 사용하

onlyfor-me-blog.tistory.com

 

이 포스팅에선 앱 링크에 대해 개략적으로 설명하고 넘어갔기 때문에 좀 더 앱 링크란 것에 대해 디벨로퍼를 확인하고 다른 사람들의 설명을 확인한다. 디벨로퍼의 설명이 잘 돼 있어서, 앱 링크를 확인하려면 먼저 디벨로퍼 공식문서를 싹 훑는 게 좋을 듯하다.

 

https://developer.android.com/training/app-links?hl=ko

 

Android 앱 링크 처리하기  |  Android 개발자  |  Android Developers

기기에서 웹 링크를 따라가는 사용자는 종종 혼란스러운 선택에 직면합니다. 링크를 탭하면 시스템에서 사용자에게 링크를 처리할 앱을 지정해 줄 것을 요청하는 경우가 자주 있습니다. 예를

developer.android.com

유저가 기기에서 링크를 따라갈 때는 보고 싶은 컨텐츠에 도달하려는 한 가지 목표를 염두에 두고 있다. 개발자는 앱 선택 대화상자(명확성 대화상자)를 건너뛰고 앱에서 링크의 특정 컨텐츠로 유저를 바로 연결하도록 안드로이드 앱 링크를 설정할 수 있다. 안드로이드 앱 링크는 HTTP URL, 웹 사이트 연결을 활용하기 때문에 앱을 설치하지 않은 사용자는 개발자의 사이트에 있는 컨텐츠로 바로 연결된다
딥링크는 유저를 앱의 특정 컨텐츠로 바로 연결하는 URL이다. 안드로이드 개발자는 인텐트 필터를 추가하고 수신 인텐트에서 데이터를 추출해 딥링크를 설정할 수 있고 이를 통해 적절한 액티비티로 유저를 보낸다. 그러나 유저의 기기에 설치된 다른 앱에서 동일 인텐트를 처리할 수 있다면 유저는 개발자의 앱으로 바로 이동하지 않을 수 있다. 은행 이메일의 URL을 클릭하면 유저가 링크를 열 때 브라우저를 쓸지 은행 자체 앱을 쓸지 묻는 대화상자가 나올 수 있다
안드로이드 6.0(API 23) 이상의 앱 링크를 쓰면 앱이 특정 유형의 링크에 적용되는 기본 핸들러로 앱 자체를 지정할 수 있다. 유저는 앱을 기본 핸들러로 사용하지 않으려는 경우 기기의 시스템 설정에서 이 동작을 재정의할 수 있다. 앱 링크의 이점은 아래와 같다

- 안전성, 구체성 : 앱 링크는 내가 소유한 웹사이트 도메인에 연결되는 HTTP URL을 쓰므로 다른 앱이 내 링크를 쓸수 없다. 앱 링크의 요구사항 중 하나는 구글의 웹 사이트 연결 방법 중 하나를 통해 개발자의 도메인 소유권을 확인하는 것이다
- 원활한 사용자 환경 : 앱 링크는 웹 사이트, 앱에 있는 같은 컨텐츠에 단일 HTTP URL을 쓰므로 앱을 설치하지 않은 사용자는 앱이 아니라 웹 사이트로 연결된다. 404 오류가 아니다
- 구글 검색에서 유저 참여 : 유저는 모바일 브라우저, 구글 검색 앱, 안드로이드의 화면 검색에서 구글이 제공한 URL을 클릭하거나 구글 어시스턴트를 통해 앱에서 곧바로 특정 컨텐츠를 연다

 

다음 문서인 '앱 컨텐츠로 연결되는 링크 사용 설정'을 클릭하면 매니페스트에 어떤 태그를 어떻게 써야 할지, onCreate에서 인텐트 안의 action, data 값을 어떻게 가져와야 할지와 터미널에 입력하는 딥링크 테스트 커맨드가 있다. 앱 링크를 적용하고 싶다면 이 문서를 정독하면 될 것이다.

위 링크에서 말하는 앱 링크를 정리하면 아래와 같다.

 

  • 앱 링크를 쓰면 앱이 설치돼 있으면 앱이 곧바로 실행되고, 설치돼 있지 않다면 브라우저에 표시된다
  • 위 동작은 유저가 디바이스에서 바꿀 수 있다
  • 앱 링크는 API 23부터 사용할 수 있다

 

특징이라면 앱 링크를 사용하려면 웹 사이트 도메인 하나를 갖고 있어야 한다는 것이다. 플러터 공식문서에선 파이어베이스 호스팅, 깃허브 페이지를 임시 솔루션으로 사용하는 게 좋다고 하니 처음부터 반드시 도메인을 갖고 시작해야 하는 건 아닌 듯하다.

 

https://docs.flutter.dev/cookbook/navigation/set-up-app-links

 

Set up app links for Android

How set up universal links for an iOS application built with Flutter

docs.flutter.dev

앱 링크는 HTTP 또는 HTTPS를 쓰는 딥링크 유형으로, 안드로이드 전용이다. 앱 링크를 설정하려면 웹 도메인을 소유해야 한다. 그렇지 않다면 파이어베이스 호스팅 또는 깃허브 페이지를 임시 솔루션으로 사용하는 게 좋다

 

앱 링크를 쓰면 유저는 앱을 선택할 필요가 없다. 곧바로 앱이 실행되며 링크가 가리키는 특정 페이지로 이동한다.

거꾸로 말하면 특정 웹 사이트로 이동할 수 있도록 백이나 프론트같이 다른 개발자와 협업해야 하는 부분이 있다는 뜻이다. 본격적인 앱 링크 적용법은 아래 링크들을 참고하면 된다.

 

https://developer.android.com/training/app-links/verify-android-applinks?hl=ko

 

Android 앱 링크 인증하기  |  Android 개발자  |  Android Developers

앱 링크는 인텐트 프레임워크에 기반합니다. 이 프레임워크는 앱이 시스템이나 다른 앱의 요청을 처리하도록 돕습니다.

developer.android.com

 

https://developer.android.com/studio/write/app-link-indexing?hl=ko

 

Android App Links 추가  |  Android 스튜디오  |  Android Developers

Android 앱 링크는 Android 앱의 특정 콘텐츠로 사용자를 바로 안내하는 HTTP URL입니다.

developer.android.com

 

아래 코드는 위 링크에서 볼 수 있는 예시다.

 

 <application>

    <activity android:name=”MainActivity”>
      <intent-filter android:autoVerify="true">
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <data android:scheme="http" android:host="www.example.com" />
        <data android:scheme="https" />
      </intent-filter>
    </activity>
    <activity android:name=”SecondActivity”>
      <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="https" android:host="www.example.net" />
      </intent-filter>
    </activity>

  </application>

 

위의 <intent-filter> 태그가 매니페스트에 포함된 앱은 assetlinks JSON 파일이 아래 도메인 모두에서 발견되지 않으면 실패한다.

 

  • https://www.example.com/.well-known/assetlinks.json
  • https:// www.example.net/.well-known/assetlinks.json

 

<data> 태그도 MainActivity의 인텐트 필터는 HTTP, HTTPS를 모두 쓰지만 SecondActivity의 인텐트 필터는 HTTPS만 쓰는 걸 볼 수 있다. 참고해서 본인의 도메인이 HTTP, HTTPS를 모두 사용한다면 위와 비슷한 형태가 되게 작성하면 될 것이다.

 

추가로 MainActivity의 인텐트 필터를 보면 autoVerify라는 값이 true로 설정된 걸 볼 수 있다.

이 값이 true로 설정돼 있다면 API 23 이상을 실행하는 핸드폰에 앱을 설치하면, 안드로이드 시스템에서 인텐트 필터의 URL과 연결된 모든 호스트(도메인)를 확인한다. 이후 매니페스트에 적힌 모든 호스트와 일치하는 assetlink를 찾았을 때만 앱을 해당 호스트로 이동할 때 쓰는 기본 값으로 사용한다.

 

앱 링크 적용 예시를 보려면 아래 링크를 참고한다.

 

https://onlyfor-me-blog.tistory.com/872

 

[Android] 앱 링크 적용하는 법

이전 포스팅에서 앱 링크에 대해 알아봤으니 실제로 적용은 어떻게 하는지 확인한다. 프로젝트를 실행한 다음 Tools > App Links Assistant 순서로 클릭한다. 안드로이드 스튜디오 자체적으로 앱 링크

onlyfor-me-blog.tistory.com

 

반응형
Comments