2014-05-06 13 views
11

Desidero sviluppare un'applicazione universale per Windows Phone 8.1 che contenga una "Notifica" locale.Notifica locale del toast

Quello che voglio fare è mostrare tutti i messaggi all'utente (errore, informazioni, avvertimenti) in un attimo di controllo del toast. Tutto è fatto localmente senza passare attraverso il sistema di notifica standard. Ci sono diversi sistemi che funzionano su Windows Phone 8:

ma non è possibile includere tali librerie su windows phone 8.1 progetto.

Qualcuno conosce un altro metodo per visualizzare i toasts "locali"?

risposta

7

È possibile utilizzare una notifica locale che viene visualizzata quando l'app è in esecuzione.

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

Avrete quindi bisogno di popolare il XML restituito da GetTemplateContent

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

Fornitura il contenuto del tuo brindisi nel DOM XML. L'immagine è rilevante solo per Windows 8.1.

specificarlo di parametri di lancio

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

Creare l'oggetto brindisi:

ToastNotification toast = new ToastNotification(toastXml); 

e, infine, visualizzare il brindisi.

ToastNotificationManager.CreateToastNotifier().Show(toast); 

Inoltre, se si desidera utilizzare un controllo di terza parte per visualizzare il brindisi allora si potrebbe non crei una Windows Phone 8.1 di Silverlight app.

+0

Buona risposta, mi ha aiutato molto. Compilare la seguente risposta. –

25

Con l'aiuto della risposta di @msimons e il seguente url: http://msdn.microsoft.com/en-us/library/windows/apps/xaml/hh868254.aspx riesco a visualizzare le mie notifiche.

Per chi ne ha bisogno, qui è il mio ultimo metodo:

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); 
    } 

ho testato su un universale finestre delle applicazioni del telefono 8.1.

E non dimenticare di modificare "Package.appxmanifest" e attivare le notifiche. La capacità di generare notifiche per il brindisi è dichiarata nel file package.appxmanifest dell'app. Se si utilizza l'editor manifest di Microsoft Visual Studio, è sufficiente impostare l'opzione abilitata per Toast su "Sì" nella sezione Notifica della scheda Applicazione.

+0

La mia immagine non viene visualizzata quando si utilizza la notazione ms-appx: ///Images/img.png. Qualche idea? Le mie proprietà di costruzione sono: Contenuto, Copia sempre. – markwilde

+0

L'immagine è nella directory "Immagini"? Una regola con immagini su pane tostato è "Le immagini devono avere dimensioni inferiori a 200 KB e inferiori a 1024 x 1024 pixel" (fonti: http://msdn.microsoft.com/en-us/library/windows/apps/xaml /hh868254.aspx). Non so cosa succede se la tua immagine è più grande. –

+0

Ho un'immagine molto piccola (80:80), quindi solo pochi byte di dimensioni. Sulla mia app distribuita è mostrata l'icona del negozio, e non l'icona personalizzata che ho fornito. – markwilde