관리 메뉴

나만을 위한 블로그

[Android] 앱 링크 적용하는 법 본문

Android

[Android] 앱 링크 적용하는 법

참깨빵위에참깨빵 2023. 12. 12. 22:03
728x90
반응형

이전 포스팅에서 앱 링크에 대해 알아봤으니 실제로 적용은 어떻게 하는지 확인한다.

프로젝트를 실행한 다음 Tools > App Links Assistant 순서로 클릭한다. 안드로이드 스튜디오 자체적으로 앱 링크를 설정하는 데 도움을 주는 장치가 있는데 이것을 사용해서 앱 링크를 프로젝트에 적용해 본다.

 

 

그러면 안드로이드 스튜디오 우측에 앱 링크 어시스턴트 화면이 표시된다.

 

 

매니페스트에 인텐트 필터 태그와 data, action, category 태그들을 자동으로 추가해 줄 URL Mapping Editor 실행 버튼과 앱 링크를 통해 앱이 실행되면 실행시킬 액티비티를 고르는 버튼 등이 보인다.

먼저 Open URL Mapping Editor 버튼을 누른다. 아직 앱 링크가 없으니 아래와 비슷한 화면이 보일 것이다.

 

 

이제 앱 링크를 추가해 본다. URL Mapping 밑에 파란색 + 기호를 누른다. 그러면 팝업 하나가 뜬다.

 

 

Host, Path, Activity를 설정할 수 있다. 각 란이 무엇인지는 아래를 참고한다.

 

  • Host : 웹 사이트 URL을 입력한다
  • Path : URI가 위치한 경로. URL과 앱이 연결(매핑)되는 방식을 설정한다. 드롭다운을 누르면 path, pathPrefix, pathPattern 중 하나를 선택한다
  • Activity : 앱 링크를 통해 앱이 실행됐을 때 실행할 액티비티. 액티비티가 여럿 존재하는 앱이고 앱 링크 별로 이동해야 하는 액티비티가 다르다면 <activity> 별로 인텐트 필터 태그들을 설정해야 한다

 

path, pathPrefix, pathPattern은 각각 아래와 같다.

 

  • path : 인텐트 객체의 전체 경로와 일치하는 전체 경로. 즉 URL의 특정 경로와 정확히 일치해야 한다. 예를 들어 path에 "/about"을 지정했고, 도메인이 www.mysite.com이라면 http://www.mysite.com/about 과 정확히 일치하는 URL을 받을 경우에만 앱이 실행된다. 변할 일이 없는 정적 경로로 이동시켜야 할 때 사용하면 적합할 듯하다
  • pathPrefix : 인텐트 객체의 경로 중 첫 부분만 일치하는 일부 경로. 즉 URL의 시작 부분이 지정된 문자열로 시작하는 경우 매칭된다. 예를 들어 pathPrefix로 "/article"을 지정했다면, http://www.mysite.com/article/it 같은 "/article"로 시작하는 모든 경로와 매칭된다. 특정 탭을 선택한 후 깊은 depth에 위치한 페이지로 이동시킬 때 적합할 듯하다
  • pathPattern : 인텐트 객체의 전체 경로와 일치하는 완전한 경로. 좀 더 복잡한 경로로 이동시키기 위해 사용한다. 예를 들어 pathPattern을 "/articles/.**"처럼 와일드카드를 섞은 URL을 받으면 "/articles/"로 시작하는 모든 URL과 매칭된다 "/articles/tech"나 "/articles/2023/12" 같이 "/articles" 뒤에 뭐가 오든 상관없는 것이다. 특정 규칙을 따르면서 동적으로 변경되는 URL로 이동시켜야 할 때 유용하다. 사용 규칙이 있으니 자세한 내용은 안드로이드 디벨로퍼를 참고한다

 

위 3가지 중 무엇을 쓰더라도 유념해야 할 것은 경로는 반드시 "/"로 시작해야 한다는 것이다. 그리고 와일드카드의 경우 공식문서를 보면 path, pathPrefix에서 사용할 수 있다는 뉘앙스로 말하고 있지는 않다. 테스트 해보고 사용해 보자. 이 포스팅에선 pathPattern을 사용한다.

여차저차해서 모두 작성하고 OK를 누르면 아래와 같은 화면이 보일 것이다.

 

 

이제 하단의 Open AndroidManifest.XML 버튼을 누르면 지금까지 설정한 항목들이 자동으로 매니페스트에 추가된다.

그러면 앱 링크가 정상 작동하는지 확인할 차례다. 앱 링크 어시스턴트를 열면 맨 밑에 Test App Links 버튼이 있는데, 이걸 누르고 앱 링크의 전체 URL을 넣으면 앱이 실행되면서 해당 앱 링크가 정상 작동하는지 확인해 준다.

 

 

앱 링크도 URL이기 때문에 브라우저가 실행되며 해당 URL이 호출된다.

 

터미널에 명령어를 실행시켜서 앱 링크의 작동을 확인할 수도 있다. 먼저 앱을 한 번 실행하고 완전히 종료한 다음, 터미널에 아래 명령어를 입력한다. 앱을 실행해야 지금까지 설정했던 내용들이 앱에 적용되기 때문에 반드시 한 번은 실행해야 하고, 앱이 실행된 채로 명령어를 치면 같은 액티비티가 중복되어 표시되기 때문에 완전히 종료한다.

launchMode를 singleTop으로 설정했다면 완전히 종료하지 않아도 되지만, 명령어를 실행해도 아무 반응이 없다. 뭔가 변화가 일어나는 걸 봐야겠다면 완전히 종료하는 게 좋다.

 

adb shell am start -W -a android.intent.action.VIEW -d "도메인/pathPattern" 패키지명

 

만약 도메인이 localtest.com이고 pathPattern이 featuremain, 패키지명이 com.example.practice라면 아래와 같이 커맨드를 작성하면 된다.

 

adb shell am start -W -a android.intent.action.VIEW -d "http://localtest.com/featuremain" com.example.practice

 

그러면 앱이 실행되며 터미널에 아래와 같은 로그가 표시된다.

 

$ adb shell am start -W -a android.intent.action.VIEW -d "http://localtest.com/featuremain" com.example.practice
Starting: Intent { act=android.intent.action.VIEW dat=http://localtest.com/... pkg=com.example.practice }
Warning: Activity not started, intent has been delivered to currently running top-most instance.
Status: ok
LaunchState: UNKNOWN (0)
Activity: com.example.practice/.MainActivity
TotalTime: 0
WaitTime: 3
Complete

 

앱이 정상적으로 실행됐고 위 로그까지 확인했다면 앱 링크 적용을 위한 네이티브 단에서의 처리는 모두 완료됐다.

 

assetlinks.json 파일을 만들어서 웹 사이트를 앱과 연결해야 한다면 앱 링크 어시스턴트를 열었을 때 보이는 버튼들 중 Open Digital Asset Links File Generator를 눌러서 도메인과 패키지명, 빌드 환경(dev, staging 등) 등을 설정한다.

 

 

모두 설정했다면 하단의 Generate Digital Asset Links File을 클릭한다.

그러면 밑에 뭔가 생긴다.

 

 

Save File 버튼을 누르면 파일을 다운로드할 경로를 지정할 수 있고, Link And Verify를 누르면 "https://www.localtest.com/.well-known/assetlinks.json" 경로에 JSON 파일이 위치했는지를 확인해 준다.

 

간단한 예제기 때문에 실제로 사용할 때 참고하면 빠진 부분이 있을 수 있다. 그 부분은 구글링하면서 적용해 나가면 될 것이다.

 

참고한 사이트)

 

https://developer.android.com/guide/topics/manifest/data-element?hl=ko#path

 

Android 개발자  |  Android Developers

데이터 사양을 인텐트 필터에 추가합니다. 사양은 데이터 형식(mimeType 속성)이나 URI만 사용하거나 데이터 형식과 URI를 모두 사용할 수 있습니다. URI는 각 부분에 적용되는 별도의 속성으로 지정

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

 

반응형
Comments