:
- 지정된 경우,우리당을 처리할 수 있는 사용자의 기본 설정 앱을 엽니다.
- 우리당을 처리 할 수있는 유일한 사용 가능한 응용 프로그램을 엽니 다.
- 사용자가 대화 상자에서 앱을 선택할 수 있도록 허용합니다.
아래 단계에 따라 콘텐츠에 대한 링크를 만들고 테스트합니다. 또한 안드로이드 앱 링크를 추가 할 안드로이드 스튜디오에서 응용 프로그램 링크 지원을 사용할 수 있습니다.
들어오는 링크에 대한 인텐트 필터 추가
앱 콘텐츠에 대한 링크를 만들려면 매니페스트에 이러한 요소와 속성 값이 포함된 인텐트 필터를 추가합니다. <data>
하나 이상의<data>
태그를 추가합니다. 최소한<data>
태그는android:scheme
특성을 포함해야 합니다.
더 많은 속성을 추가하여 액티비티가 허용하는 우리당국 유형을 더욱 구체화할 수 있습니다. 예를 들어 경로 이름에 따라 다른 여러 활동이 있을 수 있습니다. 이 경우android:path
속성 또는 해당pathPattern
또는pathPrefix
변형을 사용하여 시스템이 다른 우리당 경로에 대해 열어야 하는 활동을 구분합니다.
<category>
에는BROWSABLE
범주가 포함됩니다. 웹브라우저에서 인텐트 필터에 액세스할 수 있도록 하기 위해 필요합니다. 이 기능이 없으면 브라우저에서 링크를 클릭하면 앱에서 확인할 수 없습니다.
에는DEFAULT
범주도 포함됩니다.이를 통해 앱이 암시 적 의도에 응답 할 수 있습니다. 이 작업이 없으면 인텐트가 앱 구성 요소 이름을 지정하는 경우에만 활동을 시작할 수 있습니다.
다음 코드 조각은 딥링크를 위해 매니페스트에서 인텐트 필터를 지정하는 방법을 보여 줍니다. "example://gizmos"
과"http://www.example.com/gizmos"
모두 이 활동을 해결합니다.
<activity android:name="com.example.android.GizmosActivity" android:label="@string/title_gizmos" > <intent-filter android:label="@string/filter_view_http_gizmos"> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <!-- Accepts URIs that begin with "http://www.example.com/gizmos" --> <data android:scheme="http" android:host="www.example.com" android:pathPrefix="/gizmos" /> <!-- note that the leading "/" is required for pathPrefix--> </intent-filter> <intent-filter android:label="@string/filter_view_example_gizmos"> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <!-- Accepts URIs that begin with "example://gizmos" --> <data android:scheme="example" android:host="gizmos" /> </intent-filter></activity>
두 인텐트 필터는<data>
요소에 의해서만 다릅니다.같은 필터에<data>
요소를 여러 개 포함할 수 있지만,같은 인텐트 필터에 있는scheme
와host
의 특정 조합과 같은 고유한 요소를 선언하려는 경우 별도의 필터를 만드는 것이 중요합니다. 예를 들어,다음을 고려하십시오:
<intent-filter> ... <data android:scheme="https" android:host="www.example.com" /> <data android:scheme="app" android:host="open.my.app" /></intent-filter>
https://www.example.com
과app://open.my.app
만 지원하는 것처럼 보일 수 있습니다. 그러나 실제로이 두 가지를 지원합니다:app://www.example.com
및https://open.my.app
.이 응용 프로그램은 당신이 당신의 안드로이드 장치에 대한 응용 프로그램을 다운로드 할 수 있습니다.
인텐트 필터 정의에 대한 자세한 내용은 다른 앱에서 활동 시작 허용을 참조하십시오.
들어오는 인텐트에서 데이터 읽기
시스템이 인텐트 필터를 통해 활동을 시작하면Intent
에서 제공한 데이터를 사용하여 렌더링해야 할 항목을 결정할 수 있습니다. getData()
및getAction()
메서드를 호출하여 들어오는Intent
과 관련된 데이터 및 작업을 검색합니다. 활동의 수명 주기 동안 언제든지 이러한 메서드를 호출할 수 있지만 일반적으로onCreate()
또는onStart()
과 같은 초기 콜백 중에 호출해야 합니다.
에서 데이터를 검색하는 방법을 보여 주는 스니펫은 다음과 같습니다.Intent
:
코 틀린
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.main) val action: String? = intent?.action val data: Uri? = intent?.data}
자바
@Overridepublic void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Intent intent = getIntent(); String action = intent.getAction(); Uri data = intent.getData();}
사용자 환경을 개선하려면 다음 모범 사례를 따르십시오:
- 딥 링크는 프롬프트,전면 페이지 또는 로그인 없이 사용자를 컨텐츠로 직접 이동시켜야 합니다. 사용자가 이전에 응용 프로그램을 열지 않은 경우에도 응용 프로그램 콘텐츠를 볼 수 있는지 확인합니다.그것은 이후의 상호 작용에 대한 메시지를 표시하거나 런처에서 응용 프로그램을 열 때 괜찮습니다.
- 뒤로 및 위로 탐색에 설명된 디자인 지침을 따라 앱이 딥 링크를 통해 앱을 입력한 후 뒤로 탐색에 대한 사용자의 기대치와 일치하도록 합니다.
딥 링크 테스트
안드로이드 디버그브리지를 사용하여 딥링크에 지정한 의도 필터가 올바른 앱 활동으로 해결되는지 테스트할 수 있습니다. 장치 또는 에뮬레이터에 대해 명령을 실행할 수 있습니다.
인텐트 필터 테스트를 위한 일반 구문은 다음과 같습니다.:
$ adb shell am start -W -a android.intent.action.VIEW -d <URI> <PACKAGE>
예를 들어,아래 명령은 지정된 우리당국과 연관된 대상 앱 활동을 보려고 합니다.
$ adb shell am start -W -a android.intent.action.VIEW -d "example://gizmos" com.example.android
위에서 설정한 매니페스트 선언 및 의도 처리기는 앱과 웹 사이트 간의 연결과 들어오는 링크로 수행할 작업을 정의합니다. 또한 시스템에서 이 연결을 확인하도록 요청해야 합니다. 다음 단원에서는 이 검증을 구현하는 방법을 설명합니다.