2014-05-06 16 views
11

Chcę opracować uniwersalną aplikację dla systemu Windows Phone 8.1, która zawiera lokalne "Powiadomienie".Wyświetlaj powiadomienia lokalne tosty

Co chcę zrobić, to pokazać wszystkim wiadomości do użytkownika (błąd, informacje, ostrzeżenia) w kontroli załamania tostów. Wszystko odbywa się lokalnie bez konieczności przechodzenia przez standardowy system powiadomień. Istnieje kilka systemów, które działają na Windows Phone 8:

Ale to nie jest możliwe włączenie tych bibliotek na Windows Phone 8.1 projektu.

Czy ktoś zna inną metodę wyświetlania "lokalnych" tostów?

Odpowiedz

7

Możesz użyć powiadomienia lokalnego, które pojawi się, gdy aplikacja jest uruchomiona.

ToastTemplateType toastTemplateXml = ToastTemplateType.ToastImageAndText01; 
XmlDocument toastXml = ToastNotificationManager.GetTemplateContent(toastTemplateXml); 

Będziesz wtedy trzeba wypełnić XML zwrócony przez GetTemplateContent

<toast> 
    <visual> 
     <binding template="ToastImageAndText01"> 
      <image id="img" src=""/> 
      <text id="txt"></text> 
     </binding> 
    </visual> 
</toast> 

Supply zawartość Twojego tosty w DOM XML. Obraz dotyczy tylko systemu Windows 8.1.

określić jego parametry uruchamiania

((XmlElement)toastNode).SetAttribute("launch", "{\"type\":\"toast\",\"param1\":\"1\",\"param2\":\"2\"}"); 

Tworzenie obiektu tosty:

ToastNotification toast = new ToastNotification(toastXml); 

i ostatecznie wyświetlić tosty.

ToastNotificationManager.CreateToastNotifier().Show(toast); 

Ponadto, jeśli chcesz użyć formantu strony trzeciej, aby wyświetlić tosty wtedy można rozważyć napisanie Windows Phone 8.1 aplikacji Silverlight.

+0

Dobra odpowiedź, pomogło mi to bardzo. Wypełniam następującą odpowiedź. –

25

Za pomocą odpowiedzi @msimons i następującego adresu URL: http://msdn.microsoft.com/en-us/library/windows/apps/xaml/hh868254.aspx Wyświetlane są moje powiadomienia.

Dla tych, którzy tego potrzebują, tutaj jest moja ostateczna metoda:

private void ShowToastNotification(String message) 
    { 
     ToastTemplateType toastTemplate = ToastTemplateType.ToastImageAndText01; 
     XmlDocument toastXml = ToastNotificationManager.GetTemplateContent(toastTemplate); 

     // Set Text 
     XmlNodeList toastTextElements = toastXml.GetElementsByTagName("text"); 
     toastTextElements[0].AppendChild(toastXml.CreateTextNode(message)); 

     // Set image 
     // Images must be less than 200 KB in size and smaller than 1024 x 1024 pixels. 
     XmlNodeList toastImageAttributes = toastXml.GetElementsByTagName("image"); 
     ((XmlElement)toastImageAttributes[0]).SetAttribute("src", "ms-appx:///Images/logo-80px-80px.png"); 
     ((XmlElement)toastImageAttributes[0]).SetAttribute("alt", "logo"); 

     // toast duration 
     IXmlNode toastNode = toastXml.SelectSingleNode("/toast"); 
     ((XmlElement)toastNode).SetAttribute("duration", "short"); 

     // toast navigation 
     var toastNavigationUriString = "#/MainPage.xaml?param1=12345"; 
     var toastElement = ((XmlElement)toastXml.SelectSingleNode("/toast")); 
     toastElement.SetAttribute("launch", toastNavigationUriString); 

     // Create the toast notification based on the XML content you've specified. 
     ToastNotification toast = new ToastNotification(toastXml); 

     // Send your toast notification. 
     ToastNotificationManager.CreateToastNotifier().Show(toast); 
    } 

Testowałem na uniwersalnej aplikacji Windows phone 8.1.

I nie zapomnij edytować "Package.appxmanifest" i aktywuj powiadomienia. Możliwość zgłaszania powiadomień dotyczących tostów jest zadeklarowana w pliku package.appxmanifest aplikacji. Jeśli używasz edytora manifestu Microsoft Visual Studio, po prostu ustaw opcję Toast na "Tak" w sekcji Powiadomienia na karcie Aplikacja.

+0

Obraz nie jest wyświetlany podczas korzystania z notacji ms-appx: ///Images/img.png. Dowolny pomysł? Moje właściwości kompilacji mają: Zawartość, Kopiuj zawsze. – markwilde

+0

Czy to twoje zdjęcie znajduje się w katalogu "Obrazy"? Jedna reguła z obrazkami na toście to "Obrazy muszą mieć mniej niż 200 KB i mniej niż 1024 x 1024 piksele" (źródła: http://msdn.microsoft.com/en-us/library/windows/apps/xaml /hh868254.aspx). Nie wiem, co się stanie, jeśli Twój obraz będzie większy. –

+0

Mam bardzo mały obraz (80:80), więc tylko kilka bajtów w rozmiarze. W mojej wdrożonej aplikacji jest wyświetlana ikona sklepu, a nie niestandardowa ikona, którą podałem. – markwilde

Powiązane problemy