안드로이드 딥 링크 기술 가이드: 앱 링크

이 문서는 안드로이드 딥 링크 기술 가이드 4부 문서 중 3부입니다. 이전 포스트는 URI 스킴 과크롬 인텐트를 다루었으며 다음 포스트는 구글 플레이 리퍼러를 다룰 것입니다.

딥 링크와 안드로이드 앱 링크

안드로이드 마시멜로 (6.0)는 앱 링크라 불리는 새로운 앱 직접 구동 메커니즘을 도입하였습니다. 이 메커니즘은 iOS 9의 유니버설 링크 기능을 복제하려는 것이며, 일반 HTTP/HTTPS 링크를 클릭하고 해당 앱이 설치된 경우 이를 즉시 구동합니다. 다음은 앱 링크의 재설정 로직임:

  • 설치된 경우 인텐트로 앱을 구동합니다
  • 설치되지 않은 경우 웹 링크로 돌아갑니다

안드로이드 앱 링크는 단순히 기존의 웹사이트 링크를 앱 링크로 만드는 방법일 뿐입니다. 사례: https://imbd.com/title/12345. 만약 IMDB가 그들의 웹사이트를 앱 링크에 대해 잘 설정하였다면, IMDB가 스마트폰에 설치된 경우에 링크를 클릭하는 즉시 이를 구동할 것입니다. 만약 앱이 설치되지 않았다면 브라우저에서 해당 웹 URL이 열릴 것입니다.

몇 달 후 6.0이 좀 더 보급되면 표준 URI와 크롬 인텐트 메커니즘을 우회할 것입니다. 그동안 모든 경계 조건을 확실히 처리하기 위하여 다른 메커니즘과 함께 이를 지원해야 하는데 이는 안드로이드가 매우 파편화되어 있기 때문입니다.

안드로이드 앱 링크 필수 요구사항
  • 작동하는 웹사이트가 있을 것
  • 사용자 스마트폰의 안드로이드 버전은 6.0 이상일 것
안드로이드 앱 링크 설정

서비스가 앱 링크를 사용하도록 설정하는 방법이 두 가지 있습니다:

  1. 인텐트를 받도록 매니페스트 파일을 설정합니다
  2. 웹사이트를 앱 링크로 등록합니다
1단계 매니페스트 파일에 인텐트 필터를 추가합니다

이는 꽤 직관적인 방법입니다. 어떤 웹사이트에서 사이트 대신 앱을 열어야 할지 안드로이드에게 알려주어야 합니다.

<activity …>
<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=yoursite.com />
<data android:scheme=https android:host=yoursite.com />
</intent-filter>
</activity>
view rawmanifest.xml hosted with ❤ by GitHub

 

2단계 웹사이트를 앱 링크에 맞도록 구성합니다

아래와 같은 형식으로 assetlinks.json이라 불리는 파일을 만들어야 합니다:

 

참고: 앱 링크가 android_app기본값 변경 없이 동작하도록 합니다.

앱 서명 인증서의 SHA256 지문. 지문을 생성하려면 키툴을 사용해야 합니다. 명령 라인에서 java 홈 디렉터리로 이동한 뒤 다시 bin 폴더로 이동합니다. 그리고 다음 명령을 실행:

$ keytool -list -v -keystore my-release-key.keystore

(키툴 위치 검색을 위해 본 예제를 맥이 나윈도우에)

마지막으로, assetlinks.json 파일은 /.well-known/assetlinks.json에서 호스팅 되어야 합니다. 우리는 Node+Express 링크 서버를 사용하여 모든 Branch 통합 앱용으로 파일 한 개를 구성하였습니다. 우리가 사용한 코드:

var assetlinks = fs.readFileSync(__dirname + ‘/static/assetlinks.json’);
app.get(‘/.well-known/assetlinks.json’, function(req, res, next) {
res.set(‘Content-Type’, ‘application/json’);
res.status(200).send(assetlinks);
});
view rawnodecode.js hosted with ❤ by GitHub

 

앱에서 딥 링크 처리하기

앱에서 딥 링크를 다루려면, 클릭하면 열리는 액티비티의 인텐트 데이터 문자열을 가져오기만 하면 됩니다. 다음과 같이 할 수 있습니다:

Uri data = this.getIntent().getData();
if (data != null && data.isHierarchical()) {
String uri = this.getIntent().getDataString();
Log.i(“MyApp”, “Deep link clicked “ + uri);
}
view rawintent.java hosted with ❤ by GitHub

 

불행하게도 여기에서 앱을 구동하도록 트리거한 앱 링크의 전체 문자열을 읽으려면 문자열을 파싱해야 합니다.

딥 링크의 실제 사용

실질적으로, 모두가 6.0 버전 이상을 사용하고 있고 웹사이트가 이미 구축되어 있다면 이것이 가장 사용하기 쉬운 메커니즘일 것입니다. 그러나 앞으로 수년간 이런 일은 일어나지 않을 것이므로 경계 조건을 처리해 주어야 합니다.

지금으로서는, 앱 링크 가능하도록 웹사이트를 만들 것을 추천하지만, 이것이 보다 보편적이 되기까지는 여전히 기존의 URI 스킴 관련 딥 링크와 크롬 인텐트를 활용해야 합니다. 예를 들어, 앱이 설치되어 있는데 사용자가 사이트를 여는 경우에 앱을 구동하기 위해 모바일 사이트의 버튼을 클릭한다면 크롬 인텐트나 URI 스킴을 트리거하고 싶을 것입니다. 앱 링크가 이러한 시나리오를 처리할 수 없음은 자명합니다.

만약 웹사이트가 없지만 앱 링크를 활용하고 싶은 경우 모든 제품 전략에 Deepviews 를 결합하는 것을 추천합니다. 이는 앱 콘텐츠의 모바일 웹 미리 보기로 자동으로 생성되고 호스팅됩니다. Deepviews는 앱이 설치되어 있지 않아도 콘텐츠를 보거나 경험할 수 있는 좋은 대안을 제공하며 안드로이드 앱 링크의 좋은 대안입니다.

새로운 안드로이드 딥 링크 에피소드를 계속 확인해 주십시오.

TO LEARN MORE ABOUT BRANCH'S
PRODUCTS AND SERVICES

Request a demo