티스토리 뷰

반응형

기존에 사용하던 NotificationsExtensions을 NotificationsExtensions.Portable로 변경 하였는데, 코드에서 에러가 발생을 한다. 에러 내용과 해결 방법을 적어 놓는다.

 

 

아래 소스 코드는 Toast Notification Sample에 있는 코드이다.

 

            IToastNotificationContent toastContent = null;

            if (templateType == ToastTemplateType.ToastImageAndText01)
            {
                IToastImageAndText01 templateContent = ToastContentFactory.CreateToastImageAndText01();
                templateContent.TextBodyWrap.Text = "Body text that wraps";
                templateContent.Image.Src = TOAST_IMAGE_SRC;
                templateContent.Image.Alt = ALT_TEXT;
                toastContent = templateContent;
            }
            else if (templateType == ToastTemplateType.ToastImageAndText02)
            {
                ...

            }

 

            // Create a toast from the Xml, then create a ToastNotifier object to show
            // the toast
            ToastNotification toast = toastContent.CreateNotification();

 

            // If you have other applications in your package, you can specify the AppId of
            // the app to create a ToastNotifier for that application
            ToastNotificationManager.CreateToastNotifier().Show(toast);

 

 

위에 굵은 글씨의 CreateNotification()에서 오류가 발생한다. 원인은 해당 메소드는 WinRT 전용이기 때문에 Universal에서는 사용이 않되는 것이다.

 

그래서, 아래와 같이 수정했다.

 

 

        public void ToastImageTextShow(string imageUri, string body, string header = null)
        {
            IToastNotificationContent toastContent = null;
            if (header == null)
            {
                IToastImageAndText01 templateContent = ToastContentFactory.CreateToastImageAndText01();
                templateContent.TextBodyWrap.Text = body;
                templateContent.Image.Src = imageUri;
                templateContent.Image.Alt = imageUri;
                toastContent = templateContent;
            }
            else
            {
                IToastImageAndText02 templateContent = ToastContentFactory.CreateToastImageAndText02();
                templateContent.TextHeading.Text = header;
                templateContent.TextBodyWrap.Text = body;
                templateContent.Image.Src = imageUri;
                templateContent.Image.Alt = imageUri;
                toastContent = templateContent;
            }


            var toastXML = toastContent.GetXml();
            var xmlDocument = new XmlDocument();
            xmlDocument.LoadXml(toastXML.ToString());
            var toast = new ToastNotification(xmlDocument);

            ToastNotificationManager.CreateToastNotifier().Show(toast);
        }

 

위에 굵은 글씨 부분이 TostNotification 객체를 생성하는 부분이다.

 

 

Windows store app 8.1에서는 오른쪽 상단에 이미지 포함된 토스트 노티피케이션이 출력된다.

 

 

Windows Phone 8.1에서는 상단에 이미지 없는 토스트 노티피케이션이 출력된다.

 

 

이외에 사운드 변경이나 Long Toast Notifiction 같은 것은 아래 링크를 참고 한다.

 

Quickstart: Sending a toast notification (XAML)

http://msdn.microsoft.com/en-us/library/windows/apps/xaml/Hh868254(v=win.10).aspx

 

 

반응형
댓글