Odeslání oznámení místní dlaždice

Poznámka:

Dlaždice Lives jsou funkce Windows 10, která není podporována v novějších verzích Windows. U nových aplikací doporučujeme postupovat podle aktuálních pokynů pro ikony aplikací.

Primární dlaždice aplikací ve Windows 10 se definují v manifestu aplikace, zatímco sekundární dlaždice se vytvářejí programově a definují kódem aplikace. Tento článek popisuje, jak odeslat oznámení místní dlaždice na primární dlaždici a sekundární dlaždici pomocí adaptivních šablon dlaždic. (Místní oznámení je takové, které se odesílá z kódu aplikace, na rozdíl od toho, které se posílá nebo stahuje z webového serveru.)

výchozí dlaždice a dlaždice s oznámením

Poznámka:

Zjistěte více o vytváření adaptivních dlaždic a schématu obsahu dlaždic .

Instalace balíčku NuGet

Doporučujeme nainstalovat balíček NuGet knihovny oznámení , což zjednodušuje generování datových částí dlaždic s objekty místo nezpracovaného XML.

Příklady inline kódu v tomto článku jsou určené pro C# pomocí knihovny Notifications. (Pokud chcete vytvořit vlastní XML, najdete příklady kódu bez knihovny oznámení na konci článku.)

Přidejte deklarace oboru názvů

Pro přístup k rozhraním API dlaždic zahrňte obor názvů Windows.UI.Notifications. Doporučujeme také zahrnout Microsoft.Toolkit.Uwp.Notifications namespace, abyste mohli využívat naše rozhraní API pro pomocné funkce dlaždic (pro přístup k těmto rozhraním API musíte nainstalovat knihovnu Notifications balíčku NuGet).

using Windows.UI.Notifications;
using Microsoft.Toolkit.Uwp.Notifications; // Notifications library

Vytvoření obsahu oznámení

Ve Windows 10 se datové části dlaždic definují pomocí adaptivních šablon dlaždic, které umožňují vytvářet vlastní rozložení vizuálů pro oznámení. (Informace o tom, co je možné s adaptivními dlaždicemi, najdete v tématu Vytváření adaptivních dlaždic.)

Tento příklad kódu vytvoří adaptivní obsah dlaždic pro střední a široké dlaždice.

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

Obsah oznámení vypadá při zobrazení na střední dlaždici takto:

obsah oznámení na střední dlaždici

Vytvoření oznámení

Jakmile získáte obsah oznámení, budete muset vytvořit nový TileNotification. Konstruktor TileNotification přijímá objekt XmlDocument Windows Runtime, který můžete získat z metody TileContent.GetXml, pokud používáte knihovnu Notifications.

Tento příklad kódu vytvoří oznámení pro novou dlaždici.

// Create the tile notification
var notification = new TileNotification(content.GetXml());

Nastavení času vypršení platnosti oznámení (volitelné)

Ve výchozím nastavení nemají místní oznámení dlaždic a oznámení odznáčků nastavenou expiraci, zatímco push, pravidelná a naplánovaná oznámení vyprší za tři dny. Vzhledem k tomu, že obsah dlaždic by neměl trvat déle, než je potřeba, je osvědčeným postupem nastavit dobu vypršení platnosti, která dává smysl pro vaši aplikaci, zejména na místních dlaždicích a oznámeních o odznáčku.

Tento příklad kódu vytvoří oznámení, které vyprší a bude odebráno z dlaždice po deseti minutách.

tileNotification.ExpirationTime = DateTimeOffset.UtcNow.AddMinutes(10);

Odeslání oznámení

Ačkoli je místní odesílání oznámení dlaždice jednoduché, odesílání oznámení na primární nebo sekundární dlaždici se trochu liší.

Primární dlaždice

Chcete-li odeslat oznámení na primární dlaždici, použijte TileUpdateManager k vytvoření aktualizátoru dlaždic pro primární dlaždici a odeslání oznámení voláním "Aktualizovat". Bez ohledu na to, jestli je viditelná, primární dlaždice vaší aplikace vždy existuje, takže do ní můžete posílat oznámení i v případě, že není připnutá. Pokud uživatel později připne vaši primární dlaždici, zobrazí se poté oznámení, která jste odeslali.

Tento příklad kódu odešle oznámení na primární dlaždici.

// Send the notification to the primary tile
TileUpdateManager.CreateTileUpdaterForApplication().Update(notification);

sekundární dlaždice

Pokud chcete odeslat oznámení na sekundární dlaždici, nejprve se ujistěte, že existuje sekundární dlaždice. Pokud se pokusíte vytvořit aktualizátor dlaždic pro sekundární dlaždici, která neexistuje (například pokud uživatel odepnul sekundární dlaždici), vyvolá se výjimka. Pokud chcete zjistit, jestli je sekundární dlaždice připnutá, můžete použít SecondaryTile.Exists(tileId) a pak vytvořit aktualizátor dlaždic pro sekundární dlaždici a odeslat oznámení.

Tento příklad kódu odešle oznámení na sekundární dlaždici.

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

výchozí dlaždice a dlaždice s oznámením

Vymazat oznámení na dlaždici (volitelné)

Ve většině případů byste měli vymazat oznámení po interakci uživatele s tímto obsahem. Když třeba uživatel spustí vaši aplikaci, můžete chtít vymazat všechna oznámení z dlaždice. Pokud jsou vaše oznámení vázaná na čas, doporučujeme místo explicitního vymazání oznámení nastavit čas vypršení platnosti oznámení.

Tento příklad kódu vymaže oznámení o dlaždici pro primární dlaždici. To samé můžete udělat u sekundárních dlaždic vytvořením aktualizátoru dlaždic pro sekundární dlaždici.

TileUpdateManager.CreateTileUpdaterForApplication().Clear();

Je-li u dlaždice povolena fronta oznámení a ve frontě jsou oznámení, zavolání metody Clear tuto frontu vyprázdní. Nemůžete ale vymazat oznámení prostřednictvím serveru vaší aplikace; oznámení může vymazat pouze kód místní aplikace.

Pravidelná nebo nabízená oznámení můžou přidávat nová oznámení nebo nahrazovat stávající oznámení. Místní volání metody Clear vymaže dlaždici bez ohledu na to, zda oznámení přišla přes push, pravidelný nebo místní kanál. Tato metoda nevymaže naplánovaná oznámení, která se ještě nezobrazují.

dlaždicí s oznámením a dlaždicí po vymazání

Další kroky

Použití fronty oznámení

Teď, když jste dokončili první aktualizaci dlaždic, můžete rozšířit funkce dlaždice povolením fronty oznámení .

Další metody doručování oznámení

V tomto článku se dozvíte, jak odeslat aktualizaci dlaždice jako oznámení. Pokud chcete prozkoumat další metody doručování oznámení, včetně plánovaných, pravidelných a nabízených oznámení, přečtěte si téma Doručování oznámení.

XmlEncode metoda doručování

Pokud knihovnu oznámení nepoužíváte, je tato metoda doručování oznámení další alternativou.

public string XmlEncode(string text)
{
    StringBuilder builder = new StringBuilder();
    using (var writer = XmlWriter.Create(builder))
    {
        writer.WriteString(text);
    }

    return builder.ToString();
}

Příklady kódu bez knihovny oznámení

Pokud místo balíčku NuGet Knihovny oznámení raději pracujete s nezpracovaným kódem XML, použijte tyto alternativní příklady kódu místo prvních tří příkladů uvedených v tomto článku. Zbývající příklady kódu je možné použít buď s knihovnou pro oznámení, nebo s nezpracovaným XML.

Přidejte deklarace oboru názvů

using Windows.UI.Notifications;
using Windows.Data.Xml.Dom;

Vytvoření obsahu oznámení

// 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>";

Vytvoření oznámení

// Load the string into an XmlDocument
XmlDocument doc = new XmlDocument();
doc.LoadXml(content);

// Then create the tile notification
var notification = new TileNotification(doc);