getInstalledRelatedApps()
메서드를 사용하면 웹사이트에서 iOS/Android/데스크톱 앱 또는 PWA가 사용자 기기에 설치되어 있는지 확인할 수 있습니다.
getInstalledRelatedApps()
API란 무엇인가요?

getInstalledRelatedApps()
를 사용하여 Android 앱이 이미 설치되어 있는지 확인하는 웹사이트
getInstalledRelatedApps()
을 사용하면 내 페이지에서 내 모바일 또는 데스크톱 앱이 사용자의 기기에 이미 설치되어 있는지 확인할 수 있으며, 경우에 따라 프로그레시브 웹 앱 (PWA)이 설치되어 있는지 확인할 수 있습니다. 설치되어 있는 경우 사용자 환경을 맞춤설정할 수 있습니다.
예를 들어 앱이 이미 설치된 경우:
- 제품 마케팅 페이지에서 사용자를 앱으로 바로 리디렉션
- 중복 알림을 방지하기 위해 다른 앱에서 알림과 같은 일부 기능을 중앙 집중화합니다.
- 다른 앱이 이미 설치되어 있는 경우 PWA의 설치를 촉진하지 않습니다.
getInstalledRelatedApps()
API를 사용하려면 앱에 사이트를 알리고 사이트에 앱을 알려야 합니다. 두 항목 간의 관계를 정의한 후 앱이 설치되어 있는지 확인할 수 있습니다.
확인할 수 있는 지원되는 앱 유형
앱 유형 | 다음에서 확인 가능 |
---|---|
Android 앱 |
Android만 해당 Chrome 80 이상 |
Windows (UWP) 앱 |
Windows만 해당 Chrome 85 이상 Edge 85 이상 |
프로그레시브 웹 앱 동일한 범위 또는 다른 범위에 설치됩니다. |
Android만 해당 Chrome 84 이상 |
Android 앱이 설치되어 있는지 확인
웹사이트에서 Android 앱이 설치되어 있는지 확인할 수 있습니다.
Android: Chrome 80 이상
Android 앱에 웹사이트 정보 제공
먼저 디지털 애셋 링크 시스템을 사용하여 웹사이트와 Android 애플리케이션 간의 관계를 정의하도록 Android 앱을 업데이트해야 합니다. 이렇게 하면 웹사이트만 Android 앱이 설치되어 있는지 확인할 수 있습니다.
Android 앱의 AndroidManifest.xml
에 asset_statements
항목을 추가합니다.
<manifest>
<application>
…
<meta-data android:name="asset_statements" android:resource="@string/asset_statements" />
…
</application>
</manifest>
그런 다음 strings.xml
에서 다음 애셋 문을 추가하여 site
을 도메인으로 업데이트합니다. 이스케이프 문자를 포함해야 합니다.
<string name="asset_statements">
[{
\"relation\": [\"delegate_permission/common.handle_all_urls\"],
\"target\": {
\"namespace\": \"web\",
\"site\": \"https://example.com\"
}
}]
</string>
완료되면 업데이트된 Android 앱을 Play 스토어에 게시합니다.
웹사이트에 Android 앱 정보 알리기
그런 다음 페이지에 웹 앱 매니페스트를 추가하여 웹사이트에 Android 앱을 알립니다. 매니페스트에는 platform
및 id
를 비롯한 앱에 관한 세부정보를 제공하는 배열인 related_applications
속성이 포함되어야 합니다.
platform
은play
여야 합니다.id
은 Android 앱의 GooglePlay 애플리케이션 ID입니다.
{
"related_applications": [{
"platform": "play",
"id": "com.android.chrome",
}]
}
앱이 설치되어 있는지 확인
마지막으로 비동기 함수 navigator.getInstalledRelatedApps()
를 호출하여 Android 앱이 설치되어 있는지 확인합니다.
Windows (UWP) 앱이 설치되어 있는지 확인
웹사이트에서 UWP를 사용하여 빌드된 Windows 앱이 설치되어 있는지 확인할 수 있습니다.
Windows: Chrome 85 이상, Edge 85 이상
Windows 앱에 웹사이트 정보 제공
URI 핸들러를 사용하여 웹사이트와 Windows 애플리케이션 간의 관계를 정의하려면 Windows 앱을 업데이트해야 합니다. 이렇게 하면 웹사이트만 Windows 앱이 설치되어 있는지 확인할 수 있습니다.
앱의 매니페스트 파일 Package.appxmanifest
에 Windows.appUriHandler
확장 프로그램 등록을 추가합니다. 예를 들어 웹사이트 주소가 example.com
인 경우 앱의 매니페스트에 다음 항목을 추가합니다.
<Applications>
<Application Id="App" ... >
...
<Extensions>
<uap3:Extension Category="windows.appUriHandler">
<uap3:AppUriHandler>
<uap3:Host Name="example.com" />
</uap3:AppUriHandler>
</uap3:Extension>
</Extensions>
</Application>
</Applications>
<Package>
속성에 uap3
네임스페이스를 추가해야 할 수 있습니다.
그런 다음 windows-app-web-link
이라는 JSON 파일을 만들고 (.json
파일 확장자 없음) 앱의 패키지 패밀리 이름을 제공합니다. 해당 파일을 서버 루트 또는 /.well-known/
디렉터리에 배치합니다. 패키지 제품군 이름은 앱 매니페스트 디자이너의 패키징 섹션에서 확인할 수 있습니다.
[{
"packageFamilyName": "MyApp_9jmtgj1pbbz6e",
"paths": [ "*" ]
}]
이 데모를 확인하세요.
URI 핸들러 설정에 관한 자세한 내용은 앱 URI 핸들러를 사용하여 웹사이트용 앱 사용 설정을 참고하세요.
웹사이트에 Windows 앱 알리기
그런 다음 페이지에 웹 앱 매니페스트를 추가하여 웹사이트에 Windows 앱을 알립니다. 매니페스트에는 platform
및 id
를 비롯한 앱에 관한 세부정보를 제공하는 배열인 related_applications
속성이 포함되어야 합니다.
platform
은windows
여야 합니다.id
는 앱의 패키지 패밀리 이름으로,Package.appxmanifest
파일의<Application>
Id
값이 추가됩니다.
{
"related_applications": [{
"platform": "windows",
"id": "MyApp_9jmtgj1pbbz6e!App",
}]
}
앱이 설치되어 있는지 확인
마지막으로 비동기 함수 navigator.getInstalledRelatedApps()
를 호출하여 Windows 앱이 설치되어 있는지 확인합니다.
프로그레시브 웹 앱이 이미 설치되어 있는지 확인 (범위 내)
PWA는 이미 설치되어 있는지 확인할 수 있습니다. 이 경우 요청을 하는 페이지는 웹 앱 매니페스트의 범위에 정의된 대로 동일한 도메인에 있어야 하며 PWA의 범위 내에 있어야 합니다.
Android: Chrome 84 이상
PWA에 관한 정보 제공
PWA의 웹 앱 매니페스트에 related_applications
항목을 추가하여 PWA에 관해 설명합니다.
platform
은webapp
여야 합니다.url
은 PWA의 웹 앱 매니페스트의 전체 경로입니다.id
은 웹 앱의 전체 경로입니다 (데스크톱에 필요, Android에는 필요하지 않음).
{
…
"scope": "/",
"start_url": "/",
"related_applications": [{
"platform": "webapp",
"url": "/manifest.json",
"id": "https://example.com"
}],
…
}
PWA가 설치되어 있는지 확인
마지막으로 PWA의 범위 내에서 비동기 함수 navigator.getInstalledRelatedApps()
를 호출하여 설치되어 있는지 확인합니다. getInstalledRelatedApps()
이 PWA 범위 외부에서 호출되면 false를 반환합니다. 자세한 내용은 다음 섹션을 참조하세요.
프로그레시브 웹 앱이 설치되어 있는지 확인 (범위 외)
페이지가 PWA의 범위 밖에 있더라도 웹사이트에서 PWA가 설치되어 있는지 확인할 수 있습니다. 예를 들어 /landing/
에서 제공되는 방문 페이지는 /pwa/
에서 제공되는 PWA가 설치되어 있는지 또는 방문 페이지가 www.example.com
에서 제공되고 PWA가 app.example.com
에서 제공되는지 확인할 수 있습니다.
Android: Chrome 84 이상
데스크톱 (Windows, macOS, Linux, ChromeOS): Chrome 140 이상
PWA에 웹사이트 정보 제공
먼저 PWA가 제공되는 서버에 디지털 애셋 링크를 추가해야 합니다. 이렇게 하면 웹사이트와 PWA 간의 관계를 정의하고 웹사이트만 PWA가 설치되어 있는지 확인할 수 있습니다.
PWA가 있는 도메인의 /.well-known/
디렉터리에 assetlinks.json
파일을 추가합니다(예: app.example.com
). site
속성에서 검사를 실행할 웹 앱 매니페스트의 전체 경로를 제공합니다 (PWA의 웹 앱 매니페스트가 아님).
// Served from https://app.example.com/.well-known/assetlinks.json
[
{
"relation": ["delegate_permission/common.query_webapk"],
"target": {
"namespace": "web",
"site": "https://www.example.com/manifest.json"
}
}
]
웹사이트에 PWA 정보 알리기
다음으로 페이지에 웹 앱 매니페스트를 추가하여 웹사이트에 PWA 앱을 알립니다. 매니페스트에는 platform
및 url
를 비롯한 PWA에 관한 세부정보를 제공하는 배열인 related_applications
속성이 포함되어야 합니다.
platform
은webapp
여야 합니다.url
은 PWA의 웹 앱 매니페스트의 전체 경로입니다.
{
"related_applications": [{
"platform": "webapp",
"url": "https://app.example.com/manifest.json",
}]
}
PWA가 설치되어 있는지 확인
마지막으로 비동기 함수 navigator.getInstalledRelatedApps()
를 호출하여 PWA가 설치되어 있는지 확인합니다.
getInstalledRelatedApps()
사용 방법
navigator.getInstalledRelatedApps()
를 호출하면 사용자 기기에 설치된 앱의 배열로 확인되는 프로미스가 반환됩니다.
const relatedApps = await navigator.getInstalledRelatedApps();
relatedApps.forEach((app) => {
console.log(app.id, app.platform, app.url);
});
사이트에서 지나치게 광범위한 자체 앱을 테스트하지 못하도록 웹 앱 매니페스트에 선언된 처음 세 개의 앱만 고려됩니다.
다른 강력한 웹 API와 마찬가지로 getInstalledRelatedApps()
API는 HTTPS를 통해 제공되는 경우에만 사용할 수 있습니다.
궁금한 점이 더 있을 때
궁금한 점이 더 있을 때 StackOverflow의 getInstalledRelatedApps
태그를 확인하여 다른 사용자가 유사한 질문을 했는지 확인합니다. 그렇지 않은 경우 질문을 게시하고 progressive-web-apps
태그를 지정하세요. Google팀에서는 해당 태그를 자주 모니터링하며 질문에 답변해 드리고자 노력하고 있습니다.
의견
Chrome 구현에서 버그를 발견하셨나요? 아니면 구현이 사양과 다른가요?
- https://new.crbug.com에서 버그를 신고합니다. 최대한 많은 세부정보를 포함하고, 버그 재현을 위한 안내를 제공하고, 구성요소 상자에
Mobile>WebAPKs
를 입력합니다.
API 지원 표시
getInstalledRelatedApps()
API를 사용할 계획인가요? 공개 지원은 Chrome팀이 기능의 우선순위를 지정하는 데 도움이 되며 다른 브라우저 공급업체에 이러한 기능을 지원하는 것이 얼마나 중요한지 보여줍니다.
- WICG 토론 스레드에서 API 사용 계획을 공유하세요.
#getInstalledRelatedApps
해시태그를 사용하여 @ChromiumDev에 트윗을 보내 어디에서 어떻게 사용하고 있는지 알려주세요.
유용한 링크
감사합니다.
Windows 앱 테스트에 관한 세부정보를 제공해 주신 Microsoft의 성국 추님과 Chrome 세부정보를 제공해 주신 라얀 칸소님께 특별히 감사드립니다.