앱 링크 문제 해결

이 가이드에서는 일반적인 문제와 문제 해결 방법을 설명합니다. Play Console 딥 링크 페이지 또는 Android 스튜디오 App Links Assistant의 문제 해결 도구를 사용할 수도 있습니다. 자세한 내용은 App Links 개발자 도구를 참고하세요.

  • 문제: 앱을 열어야 하는 링크를 클릭했지만 웹브라우저에서 열리거나 세부 설정 대화상자가 표시됩니다.
  • 솔루션:
    • assetlinks.json 확인: 파일이 유효한 JSON이고, https://<your-domain>/.well-known/assetlinks.json에서 액세스할 수 있으며, 리디렉션 없이 HTTPS를 통해 제공되는지 확인합니다. 온라인 검사기를 사용합니다.
    • SHA-256 디지털 지문 확인: assetlinks.jsonsha256_cert_fingerprints가 앱 출시 서명 키의 디지털 지문과 정확히 일치하는지 다시 한번 확인합니다 (Play 앱 서명을 사용하는 경우 Play Console의 디지털 지문 사용). 서명은 대문자여야 합니다.
    • autoVerify 확인: AndroidManifest.xml<intent-filter>android:autoVerify="true이 포함되어 있는지 확인합니다.
    • 서버 측 리디렉션 확인: http에서 https로 또는 www가 아닌 도메인에서 www로의 리디렉션으로 인해 인증이 실패할 수 있습니다.
    • 강제 재인증: 앱 링크 테스트 가이드에서 ADB 명령어를 실행하여 최신 인증 결과를 가져옵니다.

Android 15 이상에서 동적 규칙이 업데이트되지 않음

  • 문제: assetlinks.json 파일의 규칙을 업데이트했지만 앱에서 새 링크를 처리하지 않습니다.
  • 솔루션:
    • 강제 재인증: 변경사항을 테스트하는 가장 확실한 방법은 adb shell pm verify-app-links --re-verify. <your-package-name>를 사용하여 강제로 다시 가져오는 것입니다.
    • 오타 확인: 규칙의 패턴 일치자에서 구문 오류가 있는지 주의 깊게 검토합니다.
    • 매니페스트 필터 규칙 확인: 앱 매니페스트의 인텐트 필터 규칙을 검토하여 링크 경로가 필터링되지 않는지 확인합니다. 링크가 필터링되는 경우 앱 매니페스트의 인텐트 필터를 더 광범위하게 만드세요.

일반적인 구현 오류 수정

Android 앱 링크를 확인할 수 없는 경우 다음과 같은 일반적인 오류를 확인하세요. 이 섹션에서는 example.com를 자리표시자 도메인 이름으로 사용합니다. 이러한 검사를 실행할 때는 example.com를 서버의 실제 도메인 이름으로 대체하세요.

잘못된 인텐트 필터 설정
앱이 소유하지 않은 URL이 <intent-filter> 요소에 포함되어 있는지 확인합니다.
잘못된 서버 구성

서버의 JSON 구성을 확인하고 SHA 값이 올바른지 확인합니다.

또한 example.com. (마침표 포함)가 example.com과 동일한 콘텐츠를 제공하는지 확인합니다.

서버 측 리디렉션

다음과 같은 리디렉션을 설정하면 시스템에서 앱의 Android App Links를 전혀 확인하지 않습니다.

  • http://example.com~https://example.com
  • example.com~www.example.com

이 동작은 앱의 보안을 보호합니다.

서버 안정성

클라이언트 앱이 서버에 연결할 수 있는지 확인합니다.

확인할 수 없는 링크

테스트 목적으로 확인 불가능한 링크를 의도적으로 추가할 수 있습니다. Android 11 이하에서는 이러한 링크로 인해 시스템에서 앱의 모든 Android App Links를 확인하지 않습니다.

assetlinks.json의 서명이 잘못됨

서명이 올바르고 앱에 서명하는 데 사용된 서명과 일치하는지 확인합니다. 일반적인 실수로는 다음이 있습니다.

  • 디버그 인증서로 앱에 서명하고 assetlinks.json에 출시 서명만 있는 경우
  • assetlinks.json에 소문자 서명이 있습니다. 서명은 대문자여야 합니다.
  • Play 앱 서명을 사용하는 경우 Google에서 각 버전에 서명하는 데 사용하는 서명을 사용해야 합니다. 웹사이트 연결 선언에 관한 안내에 따라 전체 JSON 스니펫을 비롯한 세부정보를 확인할 수 있습니다.