Kafelki w Windows 8 - Wysyłanie powiadomień do drugiego kafelka  ![Udostępnij na: Facebook](images/gg670867.udostepnij_fb(pl-pl,MSDN.10).png \"Udostępnij na: Facebook\")

Tłumaczenie na podstawie Quickstart: Sending notifications to a secondary tile (Windows Store apps using C#/VB/C++ and XAML): Aurelia Tokarek

Opublikowano: 2012-10-09

Ten odcinek pokazuje, jak zaktualizować drugi kafelek, przesyłając lokalne powiadomienia. Zobaczysz, że przesyłanie powiadomień do drugiego kafelka jest identyczne jak przesyłanie powiadomień do głównego kafelka aplikacji, poza ostatnim krokiem. Jedyną różnicą pomiędzy tymi procedurami jest to, że dla drugiego kafelka używasz aktualizacji specyficznej dla drugiego kafelka.

Aby zobaczyć kod, dostarczony w tym temacie, używany w pełnym przykładzie, zobacz Secondary tiles sample. Kod jest dostarczony w językach: JavaScript, C#, C++ i Visual Basic.

Uwaga! W tym szybkim starcie będziesz manipulował zawartością powiadomień bezpośrednio w XML Document Object Model (DOM). Biblioteka NotificationsExtensions, prezentująca zawartość XML jako właściwości obiektu oraz zawierająca Intellisense, dostępna jest opcjonalnie. Więcej informacji znajdziesz w Quickstart: Using the NotificationsExtensions library in your code. Aby zobaczyć kod z tego artykułu, używający NotificationsExtenssions, zapoznaj się z Secondary tiles sample.

Wymagania wstępne

Aby zrozumieć ten temat potrzebujesz:

  • praktycznej wiedzy o kafelkach i warunkach powiadamiania oraz pojęciach. Więcej informacji znajdziesz w Tiles, badges, and notifications,
  • wiadomości na temat schematu XML kafelka. Więcej informacji znajdziesz w Tile schema,
  • umiejętności tworzenia prostej aplikacji Windows Store przy pomocy JavaScript, używającej Windows Runtime API. Więcej informacji znajdziesz w Getting started with Windows Store apps,
  • wiedzy o tworzeniu kodu dla aplikacji Windows Store z Extensible Application Markup Language (XAML),
  • znajomości XML i jego manipulacji przez Document Object Model (DOM) API,
  • utworzyć drugi kafelek i przypiąć go do ekranu startowego. Aby dowiedzieć się, jak to zrobić, przeczytaj Przypinanie drugiego kafelka.

Instrukcje

1. Dodanie deklaracji przestrzeni nazw.

Windows.UI.StartScreen zawiera API drugiego kafelka. Windows.UI.Notifications zawiera API powiadomień:

C#

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

C++

using namespace Windows::UI::Notifications;
using namespace Windows::UI::StartScreen;
using namespace Windows::Data::Xml::Dom;

2. Pobranie pustego szablonu kafelka.

Do aktualizacji możemy wykorzystać dowolny szablon drugiego kafelka. Tutaj użyjemy szablonu prostego tekstu TileWideText04:

C#

XmlDocument tileXml = TileUpdateManager.GetTemplateContent(TileTemplateType.TileWideText04);

C++

XmlDocument^ tileXml = TileUpdateManager::GetTemplateContent(TileTemplateType::TileWideText04);

3. Przypisanie tekstu do powiadomienia.

Szablon TileWideText04 zawiera pojedynczy element tekstu, do którego przypisujemy ciąg:

C#

XmlNodeList tileTextAttributes = tileXml.GetElementsByTagName("text");
tileTextAttributes[0].InnerText = "This text was delivered through a notification";

C++

XmlNodeList^ tileTextAttributes = tileXml->GetElementsByTagName("text");
tileTextAttributes->Item(0)->InnerText = "This text was delivered through a notification";

4. Dostarczenie kwadratowej wersji do powiadomienia.

Najlepszą praktyką jest ciągłe zapewnianie zarówno wersji kwadratowej, jak i szerokiej do wysyłania powiadomień do kafelka, jeżeli kafelek może być pokazany w stanie szerokim (kontrolujesz, kiedy stan szeroki jest opcją używaną do przeciążania konstruktora drugiego kafelka, zawierającego szerokie logo). Użytkownik może wybrać wyświetlanie wersji kafelka na ekranie startowym, więc zapewniając zarówno kwadratową, jak i szeroką wersję, zapewniamy, że powiadomienia będą pokazywane niezależnie od rozmiaru:

C#

XmlDocument squareTileXml = TileUpdateManager.GetTemplateContent(TileTemplateType.TileSquareText04);

XmlNodeList squareTileTextAttributes = squareTileXml.GetElementsByTagName("text");
squareTileTextAttributes[0].AppendChild(squareTileXml.CreateTextNode("This text was delivered through a notification"));

C++

XmlDocument^ squareTileXml = TileUpdateManager::GetTemplateContent(TileTemplateType::TileSquareText04);

XmlNodeList^ squareTileTextAttributes = squareTileXml->GetElementsByTagName("text");
squareTileTextAttributes->Item(0)->AppendChild(squareTileXml->CreateTextNode("This text was delivered through a notification"));

5. Dołączenie kwadratowego powiadomienia do ładowania szerokiego powiadomienia.

C#

IXmlNode node = tileXml.ImportNode(squareTileXml.GetElementsByTagName("binding").Item(0), true);
tileXml.GetElementsByTagName("visual").Item(0).AppendChild(node);

C++

IXmlNode^ node = tileXml->ImportNode(squareTileXml->GetElementsByTagName("binding")->GetAt(0), true);
tileXml->GetElementsByTagName("visual")->Item(0)->AppendChild(node);

6. Paczka końcowa XML jako powiadomienie kafelka.

C#

TileNotification tileNotification = new TileNotification(tileXml);

C++

TileNotification^ tileNotification = ref new TileNotification(tileXml);

7. Utworzenie aktualizacji drugiego kafelka.

Do tego momentu proces jest identyczny, tak jak w przypadku powiadomień standardowego kafelka. Jednakże, w tym kroku użyjemy metody CreateTileUpdaterForSecondaryTile, określającej drugi kafelek. Ta metoda wymaga unikalnego ID drugiego kafelka. W tym przykładzie zakładamy, że ID drugiego kafelka, aktualnie przypiętego do ekranu startowego, przechowywane jest w zmiennej appbarTileId:

C#

TileUpdater secondaryTileUpdater = TileUpdateManager.CreateTileUpdaterForSecondaryTile(appbarTileId);

C++

TileUpdater^ secondaryTileUpdater = TileUpdateManager::CreateTileUpdaterForSecondaryTile(appbarTileId);

8. Wysyłanie powiadomienia do drugiego kafelka.

C#

secondaryTileUpdater.Update(tile);

C++

secondaryTileUpdater->Update(tile);

9. Opcjonalnie – aktualizacja logo drugiego kafelka.

Musisz dostarczyć obrazek logo, kiedy tworzysz drugi kafelek. W niektórych scenariuszach możesz chcieć zmienić domyślne logo obrazka, np. do identyfikowania zmian przypiętej zawartości, kiedy nie chcesz wysyłać pełnej aktualizacji powiadomienia. Ten krok pokazuje jak zmienić logo dla drugiego kafelka z ID przechowywanym w zmiennej appbarTileId, używając obrazka z lokalnego magazynu aplikacji:

C#

SecondaryTile tileToUpdate = new SecondaryTile(appbarTileId);
tileToUpdate.Logo = new Uri("ms-appx:///Assets/NewSecondaryTileDefaultImage.png");
tileToUpdate.UpdateAsync();

C++

auto tileToUpdate = ref new SecondaryTile(appbarTileId);
tileToUpdate->Logo = ref new Windows::Foundation::Uri::Uri("ms-appx:///Assets/NewSecondaryTileDefaultImage.png");
tileToUpdate->UpdateAsync();

Podsumowanie

W tym odcinku nauczyłeś się wysyłać powiadomienia do drugiego kafelka, połączonego z Twoją aplikacją. Zauważyłeś, że jest tylko jedna mała różnica w przesyłaniu powiadomień do głównego kafelka aplikacji i przesyłaniu powiadomień do jednego z kolejnych kafelków aplikacji. Zaktualizowałeś także domyślny obrazek logo drugiego kafelka.