다음을 통해 공유


URI에 대한 기본 앱 시작 방법(HTML)

[ 이 문서는 Windows 런타임 앱을 작성하는 Windows에서 8.x 및 Windows Phone 8.x 개발자를 대상으로 합니다. Windows 10용으로 개발하는 경우에는 최신 설명서를 참조하세요.]

URI(Uniform Resource Identifier)에 대한 기본 앱 시작 방법을 알아봅니다. URI를 사용하면 운영 체제에서 다른 앱을 시작하여 특정 작업을 수행할 수 있습니다. 예를 들어 사용자가 앱의 연락처로 메일을 보낼 수 있도록 하려면 mailto: URI를 사용하여 사용자의 기본 메일 앱을 시작할 수 있습니다.

다음 단계에서는 Windows.System.Launcher API를 사용하여 URI에 대한 기본 처리기를 시작하는 방법을 보여 줍니다.

지침

단계 1: URI 만들기

시작할 URI에 대한 Windows.Foundation.Uri 개체를 만듭니다. 이 URI는 http 스키마 이름을 사용합니다.


// The URI to launch
var uriToLaunch = "https://www.bing.com";

// Create a Uri object from a URI string 
var uri = new Windows.Foundation.Uri(uriToLaunch);

단계 2: URI 시작

운영 체제는 URI의 기본 처리기를 시작하는 여러 가지 다양한 옵션을 제공합니다. 이러한 옵션은 이 장과 다음 섹션에서 설명합니다.

옵션 메서드 설명
기본 시작 LaunchUriAsync(Uri) 지정된 URI를 기본 처리기를 사용하여 시작합니다.
경고 대화 상자가 표시된 후 시작 LaunchUriAsync(Uri, LauncherOptions) 지정된 URI를 시작하기 전에 운영 체제에 경고 대화 상자가 표시됩니다.
권장 앱 폴백으로 시작 LaunchUriAsync(Uri, LauncherOptions) 지정된 URI를 기본 처리기를 사용하여 시작합니다. 처리기가 시스템에 설치되어 있지 않으면 스토어의 앱을 사용자에게 권장합니다.
원하는 유지 보기로 시작 LaunchUriAsync(Uri, LauncherOptions)(Windows만 해당) 지정된 URI를 기본 처리기를 사용하여 시작합니다. 시작한 후 화면에 유지되도록 기본 설정을 지정하고 특정 창 크기를 요청합니다.

Windows 8.1:  LauncherOptions.DesiredRemainingView는 Windows 8.1 및 Windows Server 2012 R2 이전 버전에서 지원되지 않습니다.

Windows Phone:  LauncherOptions.DesiredRemainingView는 Windows Phone에서 지원되지 않습니다.

 

이러한 예제에서는 Windows.System.Launcher.launchUriAsync 메서드를 사용하여 URI를 시작하며, 이 메서드는 오버로드된 메서드입니다.

Default launch

http URI에 대한 기본 앱을 사용하여 1단계에서 만든 URI를 시작하려면 Windows.System.Launcher.launchUriAsync(Uri)를 호출합니다.

// Launch the URI
Windows.System.Launcher.launchUriAsync(uri).then(   
   function (success) {
      if (success) {
        // URI launched
      } else {
        // URI launch failed
      }
   });

Launch with a warning dialog

1단계에서 만들 때 경고가 발생한 URI를 시작하려면 Windows.System.Launcher.launchUriAsync(Uri, LauncherOptions)를 호출합니다. treatAsUntrusted 속성을 사용하여 운영 체제에 경고가 표시됨을 나타냅니다.

참고  

treatAsUntrusted 속성이 설정되고 a 요소를 사용하여 URI를 시작한 경우 이벤트 처리기에서 preventDefault를 호출합니다.

 

회색으로 표시된 앱 배경에 겹쳐진 경고 대화 상자. 이 대화 상자에서는 앱을 전환할지 여부를 사용자에게 질문하며 오른쪽 아래에는 '예'와 '아니요' 단추가 있고 '아니요' 단추가 강조 표시되어 있습니다.

function linkClickHandler(eventInfo) {
    var link = eventInfo.target;
    if (eventInfo.srcElement && (
        (eventInfo.type === "click") ||
        (eventInfo.type === "keydown" && (
        eventInfo.keyCode === WinJS.Utilities.Key.enter ||
        eventInfo.keyCode === WinJS.Utilities.Key.space)))) {
        eventInfo.preventDefault();
        if (link.href.indexOf("ms-appx") > -1) {
            WinJS.Navigation.navigate(link.href);
        }
        else if (link.href.indexOf("http") > -1) {
            // Create a Uri object from a URI string 
            var uri = new Windows.Foundation.Uri(link.href);
            var options = new Windows.System.LauncherOptions();
            // Launch the URI with a warning prompt
            options.treatAsUntrusted = true;
            // Launch the URI
            Windows.System.Launcher.launchUriAsync(uri, options).then(
                function (success) {
                    if (success) {
                        // URI launched
                    } else {
                        // URI launch failed
                    }
                });
        }
    }
}

Launch with a recommended app fallback

경우에 따라 사용자는 시작할 URI를 처리하는 앱을 설치하지 않으려 할 수 있습니다. 기본적으로 운영 체제는 스토어에서 적절한 앱을 검색할 수 있는 링크를 사용자에게 제공하여 이러한 경우를 처리합니다. 이러한 경우 사용자에게 필요한 앱에 대한 특정 권장 지침을 제공하려면 시작할 파일과 함께 해당 권장 지침을 전달할 수 있습니다. 이렇게 하려면 LauncherOptions.preferredApplicationPackageFamilyName을 스토어에서 권장하려는 앱의 패키지 제품군 이름으로 설정하여 Windows.System.Launcher.LaunchUriAsync(Uri, LauncherOptions) 메서드를 호출합니다. 그런 다음 LauncherOptions.preferredApplicationDisplayName을 해당 앱의 이름으로 설정합니다. 운영 체제에서는 이 정보를 사용하여 스토어에서 앱을 검색하는 일반적인 옵션을 스토어에서 권장 앱을 다운로드하는 특정 옵션으로 바꿉니다.

참고  앱을 권장하려면 이러한 옵션을 둘 다 설정해야 합니다. 하나만 설정하면 오류가 발생합니다.

 

contoso URI에 대한 연결 프로그램 대화 상자가 시작됩니다. contoso에는 컴퓨터에 설치된 처리기가 없으므로 대화 상자에는 스토어 아이콘과 사용자에게 스토어의 올바른 처리기를 안내하는 텍스트가 포함된 옵션이 있습니다. 또한 대화 상자에는 '기타 옵션' 링크가 있습니다.

// Set the recommended app.
var options = new Windows.System.LauncherOptions();
options.preferredApplicationPackageFamilyName = "Contoso.URIApp_8wknc82po1e";
options.preferredApplicationDisplayName = "Contoso URI App";

// Launch the URI and pass in the recommended app 
// in case the user has no apps installed to handle the URI
Windows.System.Launcher.launchUriAsync(uri, options).then(
   function (success) {
      if (success) {
        // Uri launched
      } else {
        // Uri launch failed
      }
   });

원하는 유지 보기로 시작(Windows만 해당)

LaunchUriAsync를 호출하는 원본 앱은 URI가 시작된 후 화면에 유지되도록 요청할 수 있습니다. 기본적으로 Windows는 URI를 처리하는 대상 앱과 원본 앱 사이에 모든 사용 가능한 공간을 동일하게 공유하려고 합니다. 원본 앱은 DesiredRemainingView 속성을 사용하여 앱 창이 거의 모든 사용 가능한 공간을 사용하려고 한다는 것을 운영 체제에 나타냅니다. DesiredRemainingView를 사용하여 URI가 시작된 후 원본 앱이 화면에서 유지될 필요가 없고 대상 앱으로 완전히 대체될 수 있다는 것을 나타낼 수도 있습니다. 이 속성은 호출 앱의 기본 창 크기만 지정합니다. 화면에 동시에 나타날 수도 있는 다른 앱의 동작은 지정하지 않습니다.

참고  Windows는 원본 앱의 최종 창 크기를 결정할 때 원본 앱의 기본 설정, 화면의 앱 수, 화면 방향 같은 여러 가지 요소를 고려합니다. DesiredRemainingView를 설정해도 원본 앱에 대한 특정 창 관리 동작이 보장되지 않습니다.

 

Windows 8.1: LauncherOptions.DesiredRemainingView는 Windows 8.1 및 Windows Server 2012 R2 이전 버전에서 지원되지 않습니다.

Windows Phone: LauncherOptions.DesiredRemainingView는 Windows Phone에서 지원되지 않습니다.

// Launch the URI with a desired remaining view
var options = new Windows.System.LauncherOptions();
options.desiredRemainingView = Windows.UI.ViewManagement.ViewSizePreference.useLess;

Windows.System.Launcher.launchUriAsync(uri, options).then(
   function (success) {
      if (success) {
        // URI launched
      } else {
        // URI launch failed
      }
   });

설명

실행된 앱은 앱에서 선택할 수 없으므로 사용자가 어떤 앱이 실행되고 있는지 확인합니다. 사용자는 Windows 스토어 앱 또는 데스크톱 앱을 선택할 수 있습니다.

URI를 시작할 때 앱은 포그라운드 앱이어야 합니다. 즉, 사용자에게 표시되어야 합니다. 이 요구 사항은 사용자가 제어권을 갖도록 하는 데 도움이 됩니다. 이 요구 사항을 충족하려면 모든 URI 실행을 앱의 UI에 직접 연결해야 합니다. 사용자는 항상 URI 실행을 시작하기 위해 일부 작업을 수행해야 합니다. URI를 실행하려는 경우 앱이 포그라운드에 없으면 URI가 실행되지 않으며 오류 콜백이 호출됩니다.

인트라넷 URI(예: 네트워크 위치를 가리키는 file:/// URI)를 시작하려면 privateNetworkClientServer 접근 권한 값을 지정해야 합니다.

이 메서드를 사용하여 로컬 영역에서 URI를 시작할 수는 없습니다. 예를 들어 앱은 file:/// URI를 사용하여 로컬 장치에 있는 파일에 액세스할 수 없습니다. 대신 Storage APIs를 사용하여 파일에 액세스해야 합니다. 올바른 기능이나 로컬 영역 URI 없이 인트라넷 URI를 실행하려고 하면 URI가 실행되지 않으며 오류 콜백이 호출됩니다.

전체 예제

연결 시작 샘플(Windows)를 참조하세요.

관련 항목

작업

프로토콜 활성화 처리 방법

파일에 대한 기본 앱 시작 방법

지침

파일 형식 및 URI에 대한 지침 및 검사 목록

참조

Windows.System.Launcher.launchUriAsync