Android에서 앱 연결
이 가이드에서는 Android 6.0이 앱 연결을 지원하는 방법을 설명합니다. 앱 연결은 모바일 앱에서 웹 사이트의 URL에 응답할 수 있도록 하는 기술입니다. 앱 연결에 대한 정보, Android 6.0 애플리케이션에서 앱 연결을 구현하는 방법 및 도메인의 모바일 앱에 권한을 부여하도록 웹 사이트를 구성하는 방법을 설명합니다.
앱 연결 개요
모바일 애플리케이션은 더 이상 사일로에 살지 않습니다. 대부분의 경우 웹 사이트와 함께 비즈니스의 중요한 구성 요소입니다. 비즈니스를 수행하기 위해서는 모바일 애플리케이션을 시작하고 모바일 앱에 관련 콘텐츠를 표시하는 웹 사이트의 링크와 함께 웹 서비스 및 모바일 애플리케이션을 원활하게 연결하는 것이 좋습니다. 앱 연결(딥 링크라고도 함)은 모바일 디바이스가 URI에 응답하고 해당 URI에 대응하는 모바일 애플리케이션을 시작할 수 있도록 하는 기술 중 하나입니다.
Android는 의도 시스템을 통해 앱 연결을 처리합니다. 사용자가 모바일 브라우저에서 링크를 클릭하면 모바일 브라우저에서 Android가 등록된 애플리케이션에 위임할 의도를 디스패치합니다. 예를 들어, 요리 웹 사이트의 링크를 클릭하면 해당 웹 사이트와 연결된 모바일 앱이 열리고 사용자에게 특정 조리법이 표시됩니다. 해당 의도를 처리하기 위해 등록된 애플리케이션이 두 개 이상 있는 경우, Android는 의도를 처리할 애플리케이션을 선택하기 위해 해당 애플리케이션을 사용자에게 확인하는 명확성 대화 상자를 발생시킵니다. 예를 들면 다음과 같습니다.
Android 6.0은 자동 연결 처리를 통해 이를 개선합니다. Android에서 애플리케이션을 URI의 기본 처리기로 자동으로 등록할 수 있습니다. 앱이 자동으로 시작되고 관련 활동으로 직접 이동합니다. Android 6.0에서 URI 클릭을 처리하는 방법은 다음 조건에 따라 달라집니다.
- 기존 앱이 이미 URI 와 연결되어 있습니다. 사용자가 기존 앱을 URI와 이미 연결했을 수 있습니다. 이 경우 Android는 해당 애플리케이션을 계속 사용합니다.
- URI와 연결된 기존 앱은 없지만 지원 앱이 설치됩니다 . 이 시나리오에서는 사용자가 기존 앱을 지정하지 않았으므로 Android는 설치된 지원 애플리케이션을 사용하여 요청을 처리합니다.
- 기존 앱은 URI와 연결되어 있지 않지만 많은 지원 앱이 설치됩니다 . URI를 지원하는 여러 애플리케이션이 있기 때문에 명확성 대화 상자가 표시되고 사용자가 URI를 처리할 앱을 선택해야 합니다.
사용자에게 URI를 지원하는 앱이 설치되어 있지 않은 경우 나중에 설치하면 Android가 URI와 연결된 웹 사이트와의 연결을 확인한 후 URI에 대한 기본 처리기로 해당 애플리케이션을 설정합니다.
이 가이드에서는 Android 6.0 애플리케이션을 구성하는 방법과 Android 6.0에서 앱 연결을 지원하기 위해 디지털 자산 링크 파일을 만들어 게시하는 방법을 설명합니다.
요구 사항
이 가이드를 사용하기 위해서는 Android 6.0(API 수준 23) 이상을 대상으로 하는 Xamarin.Android 6.1 및 애플리케이션이 필요합니다.
Xamarin 구성 요소 저장소의 Rivets NuGet 패키지를 사용하면 이전 버전의 Android에서 앱 연결을 사용할 수 있습니다. Rivets 패키지는 Android 6.0의 앱 연결과 호환되지 않으며 Android 6.0 앱 연결을 지원하지 않습니다.
Android 6.0에서 앱 연결 구성
Android 6.0에서 앱 연결을 설정하려면 다음 두 가지 주요 단계를 수행해야 합니다.
- 웹 사이트 URI 에 대한 하나 이상의 의도 필터를 추가하면 의도 필터가 Android에서 모바일 브라우저에서 URL 클릭을 처리하는 방법을 안내합니다.
- 웹 사이트에 디지털 자산 링크 JSON 파일 게시 – 웹 사이트에 업로드되고 Android에서 모바일 앱과 웹 사이트의 do기본 간의 관계를 확인하는 데 사용되는 파일입니다. 이 파일이 없으면 Android에서 앱을 URI의 기본 처리기로 설치할 수 없으므로 사용자가 수동으로 설치해야 합니다.
의도 필터 구성
웹 사이트의 URI(또는 사용 가능한 URI 세트)를 Android 애플리케이션의 작업에 매핑하는 의도 필터를 구성해야 합니다. Xamarin.Android에서 이 관계는 IntentFilterAttribute로 작업을 표시하여 설정됩니다. 의도 필터는 다음 정보를 선언해야 합니다.
Intent.ActionView
– 정보 보기 요청에 응답하도록 의도 필터를 등록합니다.Categories
– 의도 필터는 웹 URI를 제대로 처리할 수 있도록 Intent.CategoryBrowsable 및 Intent.CategoryDefault를 모두 등록해야 합니다.DataScheme
– 의도 필터는 선언http
및/또는https
. 유일하게 유효한 두 가지 스키마입니다.DataHost
– URI가 시작되는 기본.DataPathPrefix
– 웹 사이트의 리소스에 대한 선택적 경로입니다.AutoVerify
– 이 특성은autoVerify
Android에 애플리케이션과 웹 사이트 간의 관계를 확인하도록 지시합니다. 여기에 대해서는 아래에서 자세히 설명합니다.
다음 예제에서는 IntentFilterAttribute를 사용하여 https://www.recipe-app.com/recipes
및 http://www.recipe-app.com/recipes
의 링크를 처리하는 방법을 보여 줍니다.
[IntentFilter(new [] { Intent.ActionView },
Categories = new[] { Intent.CategoryBrowsable, Intent.CategoryDefault },
DataScheme = "http",
DataHost = "recipe-app.com",
DataPathPrefix = "/recipe",
AutoVerify=true)]
public class RecipeActivity : Activity
{
// Code for the activity omitted
}
Android는 애플리케이션을 URI에 대한 기본 처리기로 등록하기 전에 웹 사이트의 디지털 자산 파일에 대해 의도 필터로 식별된 모든 호스트를 확인합니다. Android에서 앱을 기본 처리기로 설정하려면 먼저 모든 의도 필터가 확인 과정을 통과해야 합니다.
디지털 자산 링크 파일 만들기
Android 6.0 앱 연결을 사용하려면 애플리케이션을 URI에 대한 기본 처리기로 설정하기 전에 Android에서 애플리케이션과 웹 사이트 간 연결을 확인해야 합니다. 이 확인 과정은 애플리케이션을 처음 설치할 때 수행됩니다. 디지털 자산 링크 파일은 해당 웹 도메인에서 호스트되는 JSON 파일입니다.
참고 항목
특성은 android:autoVerify
의도 필터에 의해 설정되어야 합니다. 그렇지 않으면 Android에서 확인을 수행하지 않습니다.
이 파일은 https://domain/.well-known/assetlinks.json 위치에 도메인의 웹 마스터가 배치합니다.
디지털 자산 파일에는 Android에서 연결을 확인하는 데 필요한 메타데이터가 포함되어 있습니다. assetlinks.json 파일에는 다음과 같은 키-값 쌍이 있습니다.
namespace
– Android 애플리케이션의 네임스페이스입니다.package_name
– Android 애플리케이션의 패키지 이름(애플리케이션 매니페스트에 선언됨)입니다.sha256_cert_fingerprints
– 서명된 애플리케이션의 SHA256 지문입니다. 애플리케이션의 SHA256 지문을 가져오는 방법에 대한 자세한 내용은 키 저장소 서명 찾기 가이드를 참조하세요.
다음 코드 조각은 단일 애플리케이션이 있는 assetlinks.json의 예입니다.
[
{
"relation": [
"delegate_permission/common.handle_all_urls"
],
"target": {
"namespace": "android_app",
"package_name": "com.example",
"sha256_cert_fingerprints": [
"14:6D:E9:83:C5:73:06:50:D8:EE:B9:95:2F:34:FC:64:16:A0:83:42:E6:1D:BE:A8:8A:04:96:B2:3F:CF:44:E5"
]
}
}
]
애플리케이션의 여러 버전 또는 빌드를 지원하는 SHA256 지문을 둘 이상 등록할 수 있습니다. 다음 assetlinks.json 파일은 여러 애플리케이션을 등록하는 예제입니다.
[
{
"relation": [
"delegate_permission/common.handle_all_urls"
],
"target": {
"namespace": "android_app",
"package_name": "example.com.puppies.app",
"sha256_cert_fingerprints": [
"14:6D:E9:83:C5:73:06:50:D8:EE:B9:95:2F:34:FC:64:16:A0:83:42:E6:1D:BE:A8:8A:04:96:B2:3F:CF:44:E5"
]
}
},
{
"relation": [
"delegate_permission/common.handle_all_urls"
],
"target": {
"namespace": "android_app",
"package_name": "example.com.monkeys.app",
"sha256_cert_fingerprints": [
"14:6D:E9:83:C5:73:06:50:D8:EE:B9:95:2F:34:FC:64:16:A0:83:42:E6:1D:BE:A8:8A:04:96:B2:3F:CF:44:E5"
]
}
}
]
Google Digital Asset Links 웹 사이트에서는 디지털 자산 파일을 만들고 테스트하는 데 도움이 될 수 있는 온라인 도구를 제공합니다.
앱 연결 테스트
앱 연결을 구현한 후 다양한 부분을 테스트하여 예상 대로 작동하는지 확인해야 합니다.
다음 예제와 같이 Google의 디지털 자산 링크 API를 사용하여 디지털 자산 파일이 올바르게 형식 지정되고 호스트되는지 확인할 수 있습니다.
https://digitalassetlinks.googleapis.com/v1/statements:list?source.web.site=
https://<WEB SITE ADDRESS>:&relation=delegate_permission/common.handle_all_urls
의도 필터가 제대로 구성되어 있고 앱이 URI에 대한 기본 처리기로 설정되었는지 확인하려면 두 가지 테스트를 수행할 수 있습니다.
디지털 자산 파일이 위에서 설명한 대로 제대로 호스트됩니다. 첫 번째 테스트는 Android가 모바일 애플리케이션으로 리디렉션하는 의도를 디스패치합니다. Android 애플리케이션이 시작되고 URL에 대해 등록된 작업을 표시합니다. 명령 프롬프트에서 다음을 입력합니다.
$ adb shell am start -a android.intent.action.VIEW \ -c android.intent.category.BROWSABLE \ -d "http://<domain1>/recipe/scalloped-potato"
지정된 디바이스에 설치된 애플리케이션에 대한 정책을 처리하는 기존 링크를 표시합니다. 다음 명령은 다음 정보를 사용하여 디바이스의 각 사용자에 대한 링크 정책 목록을 덤프합니다. 명령 프롬프트에서 다음 명령을 입력합니다.
$ adb shell dumpsys package domain-preferred-apps
Package
– 애플리케이션의 패키지 이름입니다.Domain
– 웹 링크가 애플리케이션에서 처리되는 do기본s(공백으로 구분)입니다.Status
– 앱의 현재 링크 처리 상태. always 값은 애플리케이션이android:autoVerify=true
를 선언하고 시스템 확인을 통과했음을 의미합니다. 그 다음에는 Android 시스템의 기본 설정 레코드를 나타내는 16진수가 나옵니다.
예시:
$ adb shell dumpsys package domain-preferred-apps App linkages for user 0: Package: com.android.vending Domains: play.google.com market.android.com Status: always : 200000002
요약
이 가이드에서는 Android 6.0에서 앱 연결이 작동하는 방식에 대해 설명했습니다. 그런 다음, 앱 연결을 지원하고 응답하도록 Android 6.0 애플리케이션을 구성하는 방법을 살펴보았습니다. Android 애플리케이션에서 앱 연결을 테스트하는 방법에 대해서도 설명합니다.