내보내기(0) 인쇄
모두 확장
정보
요청한 주제가 아래에 표시됩니다. 그러나 이 주제는 이 라이브러리에 포함되지 않습니다.

Windows Phone 8의 토스트

2014-06-18

적용 대상: Windows Phone 8 및 Windows Phone Silverlight 8.1 | Windows Phone OS 7.1

 

토스트는 화면 맨 위에 표시되어 뉴스나 일기 예보와 같은 이벤트를 사용자에게 알려줍니다.

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

 

다음 이미지에서는 허구의 Contoso 앱으로 만든 토스트 알림을 보여 줍니다.

AP_Toast_ToastElements

토스트 알림은 사용자가 화면을 오른쪽으로 터치하여 해제하는 경우가 아니면 약 10초 동안 표시됩니다. 사용자가 토스트를 탭하면 기본적으로 앱의 시작 화면이 실행됩니다. 또는 앱의 어느 화면이 시작될지를 지정하도록 선택할 수 있습니다.

Windows Phone 8 업데이트 3 이 설치되지 않은 단말기에서는 대상 앱을 포그라운드에서 실행하는 경우에 토스트 알림이 표시되지 않습니다. Windows Phone 8 업데이트 3 이 설치된 단말기에서는 대상 앱이 포그라운드에서 실행 중이지만 전화 통화나 잠금 화면 등의 다른 활동에 의해 가려진 경우에 토스트 알림이 표시됩니다.

Windows Phone 에서는 사용자 선택 테마 컬러를 토스트의 배경색으로 사용합니다. 개발자는 앱의 아이콘, 제목 및 콘텐츠 문자열로 토스트 알림을 만들 수 있습니다. 토스트의 각 측면과 연결된 API 이름은 개발자가 클라우드 서비스에서 푸시 알림을 사용하여 코드에서 API를 로컬로 만드는지, 아니면 외부에서 만드는지에 따라 다릅니다. 정확한 API 이름은 이 항목의 뒷부분에 나오는 이미지를 참조하세요.

표시할 수 있는 텍스트 양은 토스트 메시지에 사용된 문자 수 및 굵게 표시되는 Title의 길이, 일반 글꼴로 표시되는 Content의 길이에 따라 달라집니다. Title만 설정된 경우 약 40자를 잘리지 않게 표시할 수 있고, Content만 설정된 경우 약 47자를 표시할 수 있습니다. 토스트가 TitleContent 사이에서 균등하게 분할되는 경우 약 41자를 표시할 수 있습니다. 토스트에 들어가지 않는 모든 텍스트는 잘립니다.

Windows Phone 에서는 타일콘텐츠의 왼쪽에 앱 아이콘의 축소 버전이 표시됩니다. 앱과 연결되는 아이콘을 정의할 수는 있지만 토스트 알림에 대해 다른 아이콘을 전달하는 것은 불가능합니다.

토스트 알림은 클라우드 서비스를 사용하여 코드에서 로컬로 만들거나 외부적으로 만들거나, 이렇게 두 가지 방법 중 하나로 만들 수 있습니다. 속성 이름은 토스트 알림을 만들기 위해 선택한 방법에 따라 달라집니다.

코드를 사용하여 토스트 알림 만들기

다음 이미지에서는 코드를 사용하여 토스트 알림을 만드는 경우에 사용하는 속성 이름을 보여 줍니다. 앱과 연결할 아이콘을 정의할 수 있지만 다음 이미지에 설명된 대로 토스트 알림을 사용하여 앱 목록 아이콘 대신 다른 아이콘을 전달할 수는 없습니다.

Creating a toast notification using code

다음 코드 예제에서는 로컬 코드를 사용하여 토스트 알림을 만드는 데 사용된 속성을 보여 줍니다.

// Create a toast notification.
// The toast notification will not be shown if the foreground app is running.
ShellToast toast = new ShellToast();
toast.Title = "[title]";
toast.Content = "[content]";
toast.Show();

클라우드 서비스를 사용하여 토스트 알림 만들기

다음 이미지에서는 클라우드 서비스를 사용하여 토스트 알림을 만드는 경우에 사용하는 속성 이름을 보여 줍니다. 앱과 연결할 아이콘을 정의할 수 있지만 다음 이미지에 설명된 대로 토스트 알림을 사용하여 앱 목록 아이콘 대신 다른 아이콘을 전달할 수는 없습니다.

Creating a toast notification using a cloud servic

다음 코드 예제에서는 클라우드 서비스를 사용하여 토스트 알림을 만드는 데 사용된 XML 페이로드를 보여 줍니다.

string toastMessage = "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
"<wp:Notification xmlns:wp=\"WPNotification\">" +
    "<wp:Toast>" +
        "<wp:Text1>[string]</wp:Text1>" +
        "<wp:Text2>[string]</wp:Text2>" +
        "<wp:Param>[string]</wp:Param>" +
    "</wp:Toast>" +
"</wp:Notification>";

클라우드 서비스를 사용할 경우 토스트 알림 페이로드에 대한 자세한 내용은 Windows Phone 8의 푸시 알림 보내기를 참조하세요. 클라우드 서비스를 사용하여 토스트 알림을 만드는 방법에 대한 자세한 연습은 Windows Phone 8의 토스트 알림을 보내고 받는 방법을 참조하세요.

토스트 알림을 사용하여 화면에 딥 링크

토스트 알림을 만드는 방법에 따라 Param 요소 또는 NavigateUri 속성을 사용하여 앱의 특정 화면에 대한 딥 링크를 지정할 수 있습니다. 다음은 허용된 형식입니다. 다음 예제에 사용된 문자열은 256자 이하여야 합니다.

  • /page1.xaml – 앱이 시작될 때 앱에서 이동할 화면을 정의합니다. 문자열은 "/"로 시작해야 합니다.

  • /page1.xaml?value1=1234 &amp;value2=9876 – 정보의 이름/값 쌍과 함께 앱이 시작될 때 이동할 화면을 정의합니다. 문자열은 "/"로 시작해야 합니다.

  • ?value1=1234 &amp;value2=9876 – 앱의 기본 시작 화면으로 전달되는 정보의 이름/값 쌍을 포함합니다. 문자열은 "?"로 시작해야 합니다.

URI 매개 변수 추출

URI 매개 변수 값은 일반적으로 사용자가 토스트 알림을 탭하고 단말기에서 실행 중인 클라이언트 앱의 지정된 화면으로 이동한 후 OnNavigatedTo 이벤트 처리기의 토스트 알림 페이로드에서 구문 분석됩니다.

        protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
        {
            base.OnNavigatedTo(e);

            string strVal1 = this.NavigationContext.QueryString["value1"];
            string strVal2 = this.NavigationContext.QueryString["value2"];

        }

Windows Phone 8 업데이트 3(OS 버전 번호 8.0.10492)에서 토스트 알림에 사용자 지정 소리를 제공하는 기능이 추가되었습니다. 소리 파일은 WAV, WMA 또는 MP3 형식일 수 있으며 길이가 10초 미만이어야 하고 앱의 설치 디렉터리나 로컬 저장소 폴더에 저장되어 있어야 합니다.

코드에서 시작된 토스트에 사용자 지정 소리를 사용하려면 먼저 Windows Phone 8 업데이트 3 에서 현재 단말기가 실행 중인지 확인해야 합니다. 사용자 지정 소리가 지원되는 것을 확인하고 나면 리플렉션을 사용하여 ShellToast 클래스의 새 Sound 속성에 액세스해야 합니다. 코드에서 다음 도우미 메서드를 사용하여 OS 버전을 확인하고 리플렉션을 사용하여 속성 값을 설정합니다.

// Set the minimum version number that supports custom toast sounds
private static Version TargetVersion = new Version(8, 0, 10492);
        
// Function to determine if the current device is running the target version.
public static bool IsTargetedVersion { get { return Environment.OSVersion.Version >= TargetVersion; } }
       
// Function for setting a property value using reflection.
private static void SetProperty(object instance, string name, object value)
{
    var setMethod = instance.GetType().GetProperty(name).GetSetMethod();
    setMethod.Invoke(instance, new object[] { value });
}

다음 예에서는 이러한 도우미 메서드를 사용하여 사용자 지정 소리를 사용하는 토스트를 표시하는 방법을 보여 줍니다. 단말기가 속성을 지원하는 것을 확인한 후 Sound 속성을 빈 문자열로 설정하면 소리가 없는 토스트를 표시할 수 있습니다.

public void ShowToast(bool useCustomSound, bool useWavFormat, bool doSilentToast)
{
    ShellToast toast = new ShellToast();
    toast.Title = "[title]";
    toast.Content = "[content]";

    //If the device is running the right version and a custom sound is requested
    if ((IsTargetedVersion) && (useCustomSound))
    {
        if (useWavFormat)
        {
            //Do the reflection to get the new Sound property added to the toast
            SetProperty(toast, "Sound", new Uri("MyToastSound.wav", UriKind.RelativeOrAbsolute));
        }
        else
        {
            //Do the reflection to get the new Sound property added to the toast
            SetProperty(toast, "Sound", new Uri("MyToastSound.mp3", UriKind.RelativeOrAbsolute));
        }
    }
    // For a silent toast, check the version and then set the Sound property to an empty string.
    else if ((IsTargetedVersion) && (doSilentToast))
    {
        //Do the reflection to get the new Sound property added to the toast
        SetProperty(toast, "Sound", new Uri("", UriKind.RelativeOrAbsolute));
    }


    toast.Show();
}

클라우드 서비스를 통해 시작된 토스트에 사용자 지정 소리를 사용하려는 경우에는 XML 페이로드에 Sound 요소를 포함하면 됩니다. 소리가 없는 토스트를 시작하려는 경우에는 “true”로 설정된 Silent 특성을 사용할 수 있습니다. 다음 예에서는 사용자 지정 소리를 사용하는 토스트에 XML 페이로드를 만드는 방법을 보여 줍니다. 여기서는 이전 예에 나온 버전 확인 도우미 메서드인 IsTargetedVersion을 다시 사용합니다.

public void ShowToastWithCloudService(bool useCustomSound, bool useWavFormat, bool doSilentToast)
{
    StringBuilder toastMessage = new StringBuilder();
    toastMessage.Append("<?xml version=\"1.0\" encoding=\"utf-8\"?><wp:Notification xmlns:wp=\"WPNotification\"><wp:Toast>");
    toastMessage.Append("<wp:Text1>Toast Title</wp:Text1>");
    toastMessage.Append("<wp:Text2>Toast Content</wp:Text2>");
    if ((IsTargetedVersion) && (useCustomSound))
    {
        if (useWavFormat)
        {
            toastMessage.Append("<wp:Sound>MyToastSound.wav</wp:Sound>");
        }
        else
        {
            toastMessage.Append("<wp:Sound>MyToastSound.mp3</wp:Sound>");
        }
    }
    else if ((IsTargetedVersion) && (doSilentToast))
    {
        toastMessage.Append("<wp:Sound Silent=\"true\"/>");
    }
    toastMessage.Append("</wp:Toast></wp:Notification>");
}

Parameter 속성을 설정하는 토스트 알림은 Windows Phone OS 7.1 이상을 실행하는 단말기에만 보낼 수 있습니다. Parameter 속성이 있는 알림을 Windows Phone OS 7.0 단말기로 보내면 PushErrorTypePayloadFormatInvalid 오류가 발생하고 채널이 닫힙니다.

표시:
© 2014 Microsoft