서비스에 Deep-Link를 적용하여 외부 사용자를 앱 내로 가이드하여 서비스 접근성을 높이려고 합니다.
개발에 들어가기 전에 서비스 진입 플로우를 두 가지로 정의하고 테스트 UI를 통해 서비스 플로우를 확정하려고 합니다.
- 1안
첫 번째 서비스 진입 플로우는 웹 링크를 공유하고 사용자가 소개 페이지의 설치 안내 버튼 클릭을 통해 앱으로 진입하는 경우입니다.
- 2안
두 번째 서비스 진입 플로우는 딥 링크를 공유하여 사용자가 앱이 있으면 앱이 바로 실행되고, 앱이 없을 경우 버튼 클릭 혹은 바로 앱 스토어로 이동하는 경우입니다.
안드로이드 앱 링크는 웹사이트와 앱 간의 검증된 연결을 제공하는 기술로, .well-known/assetlinks.json
파일을 통해 도메인 소유권을 증명합니다. 이 파일에는 앱의 패키지 이름과 디지털 서명 인증서의 SHA-256 지문이 포함되어 있어, 앱과 웹사이트 간의 신뢰할 수 있는 연결을 보장합니다.
앱 링크를 적용하면 사용자에게 별도의 확인 요청(다이얼로그) 없이, 앱이 실행됩니다.
사용자가 기기에서 링크를 따라갈 때는 보고 싶은 콘텐츠에 도달하려는 한 가지 목표를 염두에 두고 있습니다. 개발자는 앱 선택 대화상자(명확성 대화상자라고도 함)를 건너뛰고 앱에서 링크의 특정 콘텐츠로 사용자를 바로 연결하도록 Android 앱 링크를 설정할 수 있습니다. Android App Links는 HTTP URL 및 웹사이트와의 연결, 앱을 설치하지 않은 사용자는 직접 연결됩니다. 사이트의 콘텐츠에 적용할 수 있습니다.
iOS 유니버설 링크는 Apple의 iOS 9 이상에서 지원되는 기술로, .well-known/apple-app-site-association
JSON 파일을 통해 웹사이트와 앱 간의 연결을 검증합니다. 이 파일에는 앱 ID와 지원하는 경로 패턴이 포함되어 있으며, 사용자가 링크를 탭하면 웹 브라우저를 거치지 않고 바로 앱으로 연결됩니다. 기기에 앱이 설치되어 있지 않은 경우 자동으로 웹사이트로 리디렉션되며, 오프라인 상태에서도 이전에 방문한 사이트의 링크를 처리할 수 있는 장점이 있어 사용자 경험과 보안을 모두 향상시킵니다.
특히, 유니버설 링크는 사용자 지정 URL 스킴을 사용할 때 얻을 수 없는 몇 가지 주요 이점을 제공합니다. 특히 유니버설 링크의 특징은 다음과 같습니다.
고유성. 사용자 지정 URL 스킴과 달리, 유니버설 링크는 표준 HTTP 또는 HTTPS 링크를 사용하여 웹사이트에 연결되므로 다른 앱에서 사용할 수 없습니다.
안전성. 사용자가 앱을 설치하면 iOS는 웹 서버에 업로드한 파일을 확인하여 웹사이트에서 앱이 URL을 열 수 있도록 허용하는지 확인합니다. 이 파일은 오직 사용자만 생성하고 업로드할 수 있으므로 웹사이트와 앱의 연결은 안전합니다.
유연성. 유니버설 링크는 앱이 설치되지 않은 경우에도 작동합니다. 앱이 설치되지 않은 경우, 웹사이트 링크를 탭하면 사용자가 기대하는 대로 Safari에서 콘텐츠가 열립니다.
간편성. 웹사이트와 앱 모두에 하나의 URL이 적용됩니다.
개인 정보 보호. 다른 앱은 앱이 설치되어 있는지 알 필요 없이 앱과 통신할 수 있습니다.
다양한 서비스(문자, 카카오톡, 모바일 브라우저, 페이스북)에서 공유되는 링크에 대하여 정리했습니다. 대부분의 서비스에서 앱이 있는 경우 앱이 실행되는 것을 확인했지만, 공유 컨텐츠가 올라가는 서비스 별로 동작의 차이가 있고 삼성, 크롬, 네이버, 사파리 등의 브라우저 기반의 차이도 존재합니다.
Android의 AppLink 적용 관련 개발 문서를 확인하던 중, Deep-Link 경로를 루트가 아닌 경로로 명시하라는 내용이 있어 /applink
라는 별도의 경로를 적용하여 루트와 루트가 아닌 경우를 비교했습니다.
대부분의 경우에 큰 차이가 없었지만, 몇몇 서비스에서 /applink
경로가 없음에도 앱이 실행되는 것을 확인할 수 있었습니다.
그 외에도 Chrome 브라우저에서는 https Scheme으로 AppLink로 열리지만, 기본 삼성 브라우저에서는 웹 페이지로 이동하는 등의 이슈가 존재합니다.
iOS의 Universal Link 적용하던 중, 동일한 도메인의 서비스 상에서는 UniversalLink가 동작하지 않는 것을 확인했습니다.
Apple Dev Forum에서 관련 내용은 찾을 수 없었지만, Firebase의 Dynamic Link와 같은 서비스를 하는 Branch.io라는 업체의 문서에서 동일한 도메인에서는 Universal Link가 동작할 수 없다는 내용을 확인했습니다.
https://apnspush.com/aasa-validator/
Universal Link가 제대로 적용되었는지는 위의 페이지에서 확인 가능합니다.