Windows Phone 8용 자동 업로드 앱

2013-12-05

이 항목에서는 앱이 백그라운드 에이전트를 사용하여 사진 저장소 서비스에 사진을 자동으로 업로드하는 방법에 대해 설명합니다. 자동 업로드 기능을 제공하는 앱은 자동 업로드 확장에 대해 등록되고 설정 앱에서 시작될 때 자동 업로드 설정 페이지로 시작됩니다. 업로드를 수행하려면 자동 업로드 앱에서는 ResourceIntensiveTask 클래스를 통해 리소스를 많이 사용하는 백그라운드 에이전트를 사용해야 합니다. 다른 백그라운드 에이전트와 달리 자동 업로드 앱용 리소스를 많이 사용하는 에이전트는 만료되지 않습니다.

중요중요:

리소스를 많이 사용하는 에이전트를 실행하려면 휴대폰에서 특정 제약 조건이 충족되어야 하므로 특정 휴대폰에서는 에이전트가 실행되지 않을 수 있습니다. 예를 들어 사용자가 Wi-Fi나 PC에 액세스할 수 없으면 비통신망 연결을 사용할 수 없어 해당 휴대폰에서 리소스를 많이 사용하는 에이전트가 실행되지 않습니다. 또한 리소스를 많이 사용하는 에이전트는 한 번에 하나씩 실행되므로 이러한 에이전트를 사용하는 앱을 휴대폰에 많이 설치하면 에이전트 실행 가능성이 더욱 낮아집니다. 앱을 디자인할 때 이 사항을 고려해야 합니다.

이 항목에는 다음 단원이 포함되어 있습니다.

자동 업로드 기능을 제공하는 앱은 설정 앱에서 시작될 때 설정 페이지로 시작됩니다. 설정 앱에서 사진+카메라 설정 페이지의 아래쪽에 링크가 나열됩니다. 해당 링크를 선택하면 다음 이미지와 같이 자동 업로드 페이지가 시작됩니다.

Auto-upload apps from the Settings app

자동 업로드를 지원하는 앱은 이 페이지에 나열됩니다. 이러한 각 앱을 탭하면 자동 업로드 설정 페이지로 시작됩니다.

앱이 자동 업로드를 지원하도록 지정하려면 Photos_Auto_Upload 확장을 등록합니다. 확장은 WMAppManifest.xml 파일에서 지정합니다. Tokens 요소 바로 뒤, Extensions 요소 내부에 자동 업로드 확장이 Extension 요소와 함께 지정됩니다.


<Extension ExtensionName="Photos_Auto_Upload"
           ConsumerID = "{5B04B775-356B-4AA0-AAF8-6491FFEA5632}"
           TaskID="_default"/>


Windows Phone 매니페스트 디자이너는 확장을 지원하지 않으며 XML(텍스트) 편집기를 사용하여 편집합니다. 자세한 내용은 Windows Phone의 앱 매니페스트 파일을 수정하는 방법을 참조하세요.

앱이 설정 앱에서 시작되면 특수 키워드가 포함된 딥 링크 URI가 앱 시작에 사용됩니다. 딥 링크 URI에 키워드 ConfigurePhotosUploadSettings가 포함되면 사용자가 자동 업로드를 구성할 수 있는 설정 페이지로 앱이 시작됩니다. 다음 코드는 맵이 설정 앱에서 앱의 자동 업로드 설정 페이지로 시작되는 URI 매퍼 클래스를 보여 줍니다.

using System;
using System.Windows.Navigation;

namespace CustomMapping
{
    class CustomUriMapper : UriMapperBase
    {
        public override Uri MapUri(Uri uri)
        {
            // The incoming URI
            string tempUri = uri.ToString();

            // Search for a specific deep link URI keyword
            if (tempUri.Contains("ConfigurePhotosUploadSettings"))
            {
                // Launch to the auto-upload settings page.
                return new Uri("/AutoUploadSettingsPage.xaml", UriKind.Relative);
            }

            // Otherwise perform normal launch.
            return uri;
        }
    }
}

이 예에서는 URI 매퍼는 수신 URI를 자동 업로드 설정 페이지의 URI로 바꿔서 수신 URI를 AutoUploadSettingsPage.xaml 페이지로 매핑합니다. 해당 메서드에서 반환된 URI는 앱이 시작될 때 첫 번째 페이지를 실행하기 위해 앱의 루트 프레임에서 사용됩니다. 루트 프레임은 앱이 초기화될 때 할당되므로 사용자 지정 URI 매퍼를 사용합니다. 다음 코드에서는 CustomMapping.CustomUriMapper라는 URI 매퍼가 App.xaml.cs 파일의 InitializePhoneApplication 메서드에 할당되는 방법을 보여 줍니다.

// Do not add any additional code to this method
private void InitializePhoneApplication()
{
    if (phoneApplicationInitialized)
        return;

    // Create the frame but don't set it as RootVisual yet; this allows the splash
    // screen to remain active until the application is ready to render.
    RootFrame = new PhoneApplicationFrame();
    RootFrame.Navigated += CompleteInitializePhoneApplication;

    // Handle navigation failures
    RootFrame.NavigationFailed += RootFrame_NavigationFailed;

    // Assign the custom URI mapper class to the application frame.
    RootFrame.UriMapper = new CustomMapping.CustomUriMapper();

    // Ensure we don't initialize again
    phoneApplicationInitialized = true;
}

자동 업로드를 지원하는 앱에는 설정 페이지를 표시할 포그라운드 앱 프로젝트 및 업로드를 수행할 백그라운드 에이전트가 필요합니다.

백그라운드 에이전트는 리소스를 많이 사용하는 에이전트여야 합니다(Microsoft.Phone.Scheduler.ResourceIntensiveTask로 등록되어야 함). 리소스를 많이 사용하는 에이전트는 기회가 있을 때 10분 동안 실행됩니다. 무엇보다 셀룰러 이외의 연결과 외부 전원이 필요합니다. 백그라운드 에이전트 및 해당 제약 조건에 대한 자세한 내용은 Windows Phone의 백그라운드 에이전트를 참조하세요.

자동 업로드 앱에 대한 리소스를 많이 사용하는 에이전트를 만들 경우 작업 만료 시간을 설정하지 마세요. 이렇게 하면 앱이 14일 동안 열린 경우 에이전트가 만료되지 않습니다.

앱에서 자동 업로드를 수행할 수 있으려면 먼저 앱에서 사용자가 사진 저장소 웹 서비스에 사용자 자격 증명을 입력할 수 있는 방법을 제공해야 합니다. 포그라운드 앱에서는 이 작업에 설정 페이지를 사용하지만 동일한 페이지를 사용할 필요는 없습니다. 사용자 자격 증명을 저장하려면 ProtectedData 클래스를 사용하여 암호화하는 것이 좋습니다. 자세한 내용은 Windows Phone 앱에서 데이터를 암호화하는 방법을 참조하세요.

백그라운드 에이전트는 미디어 라이브러리를 모니터링하고 업로드해야 하는 사진을 추적합니다. 또한 휴대폰에서 연결이 끊긴 경우 업로드를 계속할 수 있도록 업로드 상태를 추적해야 합니다. 미디어 라이브러리에 액세스하는 방법에 대한 자세한 내용은 Windows Phone의 데이터에서 미디어 라이브러리 섹션을 참조하세요.

표시:
© 2014 Microsoft