Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Anmärkning
Lives Tiles är en Windows 10-funktion som inte stöds i senare versioner av Windows. För nya appar rekommenderar vi att du följer den aktuella vägledningen för appikoner.
Primära apppaneler i Windows 10 definieras i appmanifestet, medan sekundära paneler skapas programmatiskt och definieras av din appkod. Den här artikeln beskriver hur du skickar en lokal panelavisering till en primär panel och en sekundär panel med hjälp av anpassningsbara panelmallar. (Ett lokalt meddelande är ett meddelande som skickas från appkoden i stället för ett som skickas eller hämtas från en webbserver.)
               
              
            
Anmärkning
Lär dig mer om att skapa anpassningsbara paneler och innehållsschema för paneler.
Installera NuGet-paketet
Vi rekommenderar att du installerar Notifications-biblioteket NuGet-paketet, vilket förenklar saker genom att generera panelnyttolaster med objekt i stället för rå XML.
De infogade kodexemplen i den här artikeln är för C# med hjälp av meddelandebiblioteket. (Om du föredrar att skapa en egen XML kan du hitta kodexempel utan biblioteket Meddelanden i slutet av artikeln.)
Lägga till namnområdesdeklarationer
Om du vill inkludera tile-API:erna, använder du namnområdet Windows.UI.Notifications. Vi rekommenderar också att du inkluderar namnområdet Microsoft.Toolkit.Uwp.Notifications så att du kan dra nytta av våra API:er för panelhjälp (du måste installera NuGet-paketet för meddelandebiblioteket för att få åtkomst till dessa API:er).
using Windows.UI.Notifications;
using Microsoft.Toolkit.Uwp.Notifications; // Notifications library
Skapa meddelandeinnehållet
I Windows 10 definieras panelnyttolaster med hjälp av anpassningsbara panelmallar, vilket gör att du kan skapa anpassade visuella layouter för dina meddelanden. (Mer information om vad som är möjligt med anpassningsbara paneler finns i Skapa anpassningsbara paneler.)
Det här kodexemplet skapar anpassningsbart panelinnehåll för medelstora och breda paneler.
// In a real app, these would be initialized with actual data
string from = "Jennifer Parker";
string subject = "Photos from our trip";
string body = "Check out these awesome photos I took while in New Zealand!";
// Construct the tile content
TileContent content = new TileContent()
{
    Visual = new TileVisual()
    {
        TileMedium = new TileBinding()
        {
            Content = new TileBindingContentAdaptive()
            {
                Children =
                {
                    new AdaptiveText()
                    {
                        Text = from
                    },
                    new AdaptiveText()
                    {
                        Text = subject,
                        HintStyle = AdaptiveTextStyle.CaptionSubtle
                    },
                    new AdaptiveText()
                    {
                        Text = body,
                        HintStyle = AdaptiveTextStyle.CaptionSubtle
                    }
                }
            }
        },
        TileWide = new TileBinding()
        {
            Content = new TileBindingContentAdaptive()
            {
                Children =
                {
                    new AdaptiveText()
                    {
                        Text = from,
                        HintStyle = AdaptiveTextStyle.Subtitle
                    },
                    new AdaptiveText()
                    {
                        Text = subject,
                        HintStyle = AdaptiveTextStyle.CaptionSubtle
                    },
                    new AdaptiveText()
                    {
                        Text = body,
                        HintStyle = AdaptiveTextStyle.CaptionSubtle
                    }
                }
            }
        }
    }
};
Meddelandeinnehållet ser ut så här när det visas på en medelstor panel:
               
              
            
Skapa meddelandet
När du har ditt meddelandeinnehåll måste du skapa en ny TileNotification. TileNotification-konstruktorn tar ett Windows Runtime XmlDocument-objekt, vilket du kan hämta från -metoden TileContent.GetXml om du använder Notifications-biblioteket.
Det här kodexemplet skapar ett meddelande för en ny panel.
// Create the tile notification
var notification = new TileNotification(content.GetXml());
Ange en förfallotid för meddelandet (valfritt)
Som standard upphör lokala panel- och märkesmeddelanden inte att gälla, medan push-meddelanden, periodiska och schemalagda meddelanden upphör att gälla efter tre dagar. Eftersom panelinnehållet inte bör bevaras längre än nödvändigt är det en bra idé att ange en förfallotid som passar din app, särskilt på lokala panel- och märkesmeddelanden.
Det här kodexemplet skapar ett meddelande som upphör att gälla och tas bort från panelen efter tio minuter.
tileNotification.ExpirationTime = DateTimeOffset.UtcNow.AddMinutes(10);
Skicka meddelandet
Även om det är enkelt att skicka ett panelmeddelande lokalt är det lite annorlunda att skicka meddelandet till en primär eller sekundär panel.
primär platta
Om du vill skicka ett meddelande till en primär panel använder du TileUpdateManager för att skapa en paneluppdatering för den primära panelen och skickar meddelandet genom att anropa "Update". Oavsett om den är synlig finns appens primära panel alltid, så du kan skicka meddelanden till den även när den inte är fäst. Om användaren fäster den primära panelen senare visas de meddelanden som du skickade.
Det här kodexemplet skickar ett meddelande till en primär panel.
// Send the notification to the primary tile
TileUpdateManager.CreateTileUpdaterForApplication().Update(notification);
sekundär panel
Om du vill skicka ett meddelande till en sekundär panel kontrollerar du först att den sekundära panelen finns. Om du försöker skapa en plattauppdatering för en sekundär platta som inte finns (till exempel om användaren tog bort den sekundära plattan) kommer ett undantag att kastas. Du kan använda SecondaryTile.Exists(tileId) för att identifiera om den sekundära panelen är fäst och sedan skapa en paneluppdatering för den sekundära panelen och skicka meddelandet.
Det här kodexemplet skickar ett meddelande till en sekundär panel.
// If the secondary tile is pinned
if (SecondaryTile.Exists("MySecondaryTile"))
{
    // Get its updater
    var updater = TileUpdateManager.CreateTileUpdaterForSecondaryTile("MySecondaryTile");
    // And send the notification
    updater.Update(notification);
}
               
              
            
Rensa meddelanden på panelen (valfritt)
I de flesta fall bör du rensa ett meddelande när användaren har interagerat med innehållet. När användaren till exempel startar appen kanske du vill rensa alla meddelanden från panelen. Om dina meddelanden är tidsbundna rekommenderar vi att du anger en förfallotid för meddelandet i stället för att uttryckligen rensa meddelandet.
Det här kodexemplet rensar panelmeddelandet för den primära panelen. Du kan göra samma sak för sekundära paneler genom att skapa en paneluppdatering för den sekundära panelen.
TileUpdateManager.CreateTileUpdaterForApplication().Clear();
För en panel med meddelandekön aktiverad och meddelanden i kön tömmer anropet clear-metoden kön. Du kan dock inte rensa ett meddelande via appens server. endast den lokala appkoden kan rensa meddelanden.
Regelbundna meddelanden eller push-meddelanden kan bara lägga till nya meddelanden eller ersätta befintliga meddelanden. Ett lokalt anrop till Clear-metoden rensar rutan oavsett om meddelandena kom via push, periodiska eller lokala metoder. Schemalagda meddelanden som ännu inte har dykt upp rensas inte med den här metoden.
               
              
            
Nästa steg
Använda meddelandekön
Nu när du har gjort din första paneluppdatering kan du utöka funktionen för panelen genom att aktivera en meddelandekö.
Andra metoder för meddelandeleverans
Den här artikeln visar hur du skickar paneluppdateringen som ett meddelande. Information om andra metoder för meddelandeleverans, inklusive schemalagda, periodiska och push-meddelanden, finns i Leverera meddelanden.
XmlEncode-leveransmetoden
Om du inte använder biblioteket Meddelanden är den här metoden för meddelandeleverans ett annat alternativ.
public string XmlEncode(string text)
{
    StringBuilder builder = new StringBuilder();
    using (var writer = XmlWriter.Create(builder))
    {
        writer.WriteString(text);
    }
    return builder.ToString();
}
Kodexempel utan meddelandebibliotek
Om du föredrar att arbeta med rå XML i stället för NuGet-paketet för meddelandebiblioteket använder du dessa alternativa kodexempel till de tre första exemplen i den här artikeln. Resten av kodexemplen kan användas antingen med meddelandebiblioteket eller med rå XML.
Lägga till namnområdesdeklarationer
using Windows.UI.Notifications;
using Windows.Data.Xml.Dom;
Skapa meddelandeinnehållet
// In a real app, these would be initialized with actual data
string from = "Jennifer Parker";
string subject = "Photos from our trip";
string body = "Check out these awesome photos I took while in New Zealand!";
// TODO - all values need to be XML escaped
// Construct the tile content as a string
string content = $@"
<tile>
    <visual>
        <binding template='TileMedium'>
            <text>{from}</text>
            <text hint-style='captionSubtle'>{subject}</text>
            <text hint-style='captionSubtle'>{body}</text>
        </binding>
        <binding template='TileWide'>
            <text hint-style='subtitle'>{from}</text>
            <text hint-style='captionSubtle'>{subject}</text>
            <text hint-style='captionSubtle'>{body}</text>
        </binding>
    </visual>
</tile>";
Skapa meddelandet
// Load the string into an XmlDocument
XmlDocument doc = new XmlDocument();
doc.LoadXml(content);
// Then create the tile notification
var notification = new TileNotification(doc);