일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- rxjava hot observable
- 안드로이드 라이선스 종류
- 안드로이드 os 구조
- 객체
- 2022 플러터 설치
- ar vr 차이
- jvm이란
- jvm 작동 원리
- 안드로이드 레트로핏 사용법
- 안드로이드 레트로핏 crud
- 안드로이드 유닛 테스트 예시
- 클래스
- android ar 개발
- 2022 플러터 안드로이드 스튜디오
- 큐 자바 코드
- ANR이란
- 자바 다형성
- Rxjava Observable
- 서비스 쓰레드 차이
- 스택 큐 차이
- 서비스 vs 쓰레드
- 안드로이드 유닛 테스트
- android retrofit login
- 안드로이드 라이선스
- 안드로이드 유닛테스트란
- rxjava disposable
- 멤버변수
- rxjava cold observable
- 플러터 설치 2022
- 스택 자바 코드
- Today
- Total
나만을 위한 블로그
[Android] 앱 링크(App Link)란? 본문
이전에 딥링크를 다루면서 구현 방식 중 하나로 앱 링크란 것을 말한 적이 있다.
https://onlyfor-me-blog.tistory.com/791
이 포스팅에선 앱 링크에 대해 개략적으로 설명하고 넘어갔기 때문에 좀 더 앱 링크란 것에 대해 디벨로퍼를 확인하고 다른 사람들의 설명을 확인한다. 디벨로퍼의 설명이 잘 돼 있어서, 앱 링크를 확인하려면 먼저 디벨로퍼 공식문서를 싹 훑는 게 좋을 듯하다.
https://developer.android.com/training/app-links?hl=ko
유저가 기기에서 링크를 따라갈 때는 보고 싶은 컨텐츠에 도달하려는 한 가지 목표를 염두에 두고 있다. 개발자는 앱 선택 대화상자(명확성 대화상자)를 건너뛰고 앱에서 링크의 특정 컨텐츠로 유저를 바로 연결하도록 안드로이드 앱 링크를 설정할 수 있다. 안드로이드 앱 링크는 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
앱 링크는 HTTP 또는 HTTPS를 쓰는 딥링크 유형으로, 안드로이드 전용이다. 앱 링크를 설정하려면 웹 도메인을 소유해야 한다. 그렇지 않다면 파이어베이스 호스팅 또는 깃허브 페이지를 임시 솔루션으로 사용하는 게 좋다
앱 링크를 쓰면 유저는 앱을 선택할 필요가 없다. 곧바로 앱이 실행되며 링크가 가리키는 특정 페이지로 이동한다.
거꾸로 말하면 특정 웹 사이트로 이동할 수 있도록 백이나 프론트같이 다른 개발자와 협업해야 하는 부분이 있다는 뜻이다. 본격적인 앱 링크 적용법은 아래 링크들을 참고하면 된다.
https://developer.android.com/training/app-links/verify-android-applinks?hl=ko
https://developer.android.com/studio/write/app-link-indexing?hl=ko
아래 코드는 위 링크에서 볼 수 있는 예시다.
<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' 카테고리의 다른 글
[Android] Coroutine의 Job이란? (0) | 2023.12.18 |
---|---|
[Android] 앱 링크 적용하는 법 (0) | 2023.12.12 |
[Android] SMS 인증번호 자동입력 구현하는 법 (0) | 2023.11.26 |
[Android] Firebase App Distribution, Github Action 같이 사용하기 (0) | 2023.11.23 |
[Android] shouldOverrideUrlLoading()이란? (0) | 2023.11.21 |