Dieser Artikel wurde maschinell übersetzt.

Windows 8.1

Erstellen einer Wecker-App unter Windows 8.1

Tony Champion

Unter den Hunderten von neuen Features in Windows 8.1 ist das Konzept einer Alarm-app. Kurz gesagt, ist ein Wecker-app eine Windows-Speicher-app, die Toast Benachrichtigungen der zweiten planen kann. Aufgrund der Art und Weise Windows Prozesse Toaste ist dies eine Genauigkeit, die meisten apps angeboten. Ich werde in diesem Artikel erkunden das Konzept einer Alarm-app und schauen, was es braucht, um ein eigenes zu entwickeln.

Was ist ein Alarm-App?

Vor dem Blick unter die Haube einer Alarm-app, ist es wichtig zu prüfen, welche Art von apps gute Wecker apps machen würde. Der Schlüssel ist zu prüfen, die Genauigkeit der übermitteln von Benachrichtigungen. Beispielsweise ist es nicht nötig für ein Kalender-app, um Benachrichtigung des Benutzers eines Freundes Geburtstag eine genaue Sekunde. Allerdings gibt es verschiedene Arten von Anwendungen, die diese Genauigkeit erfordern.

Die offensichtlichste Wahl ist eine gute altmodische Wecker-app. Wenn ein Benutzer einen Alarm setzt, muss Ihre Anwendung den Benutzer in diesem Augenblick zu informieren. Sie können nun genauer Zeitmanagement-apps, wie z. B. eine Pomodoro-app mit einem Wecker-app erstellen. Eine Wecker-app könnte auch in kurzen Intervall-Training, wie z. B. Tabata, verwendet werden, wo der Zeitpunkt der Runden und Pausen sehr wichtig ist.

Alle Windows-Speicher-app-Entwickler sollten mit dem Windows 8-Konzept der Lock-Screen-Anwendungen vertraut sein. Apps, die auf dem Verschlussschirm platziert werden dürfen um Updates auf dem Verschlussschirm post. Darüber hinaus hat eine Sperre Bildschirm app Zugriff auf mehr Funktionen als eine typische Anwendung. Dies ist wichtig, wenn Ihre Anwendung tun Dinge wie z. B. Update Verschlussschirm oder Großteil der verfügbaren Hintergrundtasks ausführen muss.

Die Notwendigkeit für zusätzlichen Funktionen in Sperre Bildschirm apps ist eine direkte Folge der Änderungen in Windows 8 zur Verbesserung der Leistung und Lebensdauer der Batterie. Windows wurde entwickelt, um zu verhindern, dass apps ausführen, wenn sie nicht verwendet werden und Aufgaben wenn möglich zu konsolidieren. Aus diesem Grund finden Sie geplante Ereignisse, wie Hintergrundaufgaben und Benachrichtigungen, immer einen ungefähren Zeitpunkt ausgeführt werden. Windows Chargen diese Updates und führt sie, wenn es sich um ein Verfahren bereit, die Arbeit zu tun hat.

In Windows 8 könnten Sie bis zu sieben apps auf dem Verschlussschirm zu einem bestimmten Zeitpunkt zu definieren. In diesen sieben Steckplätzen enthielt ein spezieller Slot für eine detaillierte Status-app. Ein Gerät möglicherweise sieben Sperre Bildschirm-Anwendungen, die Abzeichen oder Text angezeigt werden können, sondern nur eine app, die eine benutzerdefinierte Benutzeroberfläche zum Verschlussschirm anbieten kann. Windows 8.1 hält dieses Setup und die Wecker-app als eine spezielle neue Art von Sperre Bildschirm app hinzugefügt. Abbildung 1 zeigt die neue "Lock Screen apps" Einstellungen-Bestandteil der PC-Einstellungsbildschirm. Wie die app detaillierte Status möglich jedes Gerät nur eine einzelne Wecker-app zu einem Zeitpunkt.

Lock Screen Part of PC Settings
Abbildung 1 Lock Screen Teil des PC-Einstellungen

Der einzige Unterschied zwischen einer Alarm-app und andere Sperre Bildschirm apps ist die Fähigkeit, innerhalb einer Sekunde der geplanten Lieferzeit Alarm Toast Benachrichtigungen für den Benutzer bereitzustellen. Wie bereits erwähnt, einreichen oder planen einen Toast in ein Windows-Speicher-app garantieren nicht, wenn diese Toast zugestellt wird. Es ist in einer ungefähren Zeitrahmen geliefert, aber die genaue Zeit ist bis zu Windows. Wenn eine Anwendung durch den Benutzer wie die Wecker-app identifiziert wird, werden geplante Toast genau pünktlich geliefert.

Einrichten einer Alarm-App

Bevor eine app als Wecker app ausgewählt werden kann, muss das app-Manifest ordnungsgemäß konfiguriert werden. Wenn das Manifest die erforderlichen Features enthält, dann die app wie die Wecker-app im Code festlegen, wird ein Fehler generiert und des Benutzers nicht die Möglichkeit, die app manuell festzulegen.

Weil eine Wecker-app Toaste plant, müssen Sie zuerst Toast zu aktivieren. Dies ist in der manifest-Designer auf der Registerkarte Benutzeroberfläche möglich. Eine Toast-fähigen Dropdown-Box finden Sie im Abschnitt Benachrichtigungen unter visuelle Elemente. Abschnitt Benachrichtigungen finden Sie unter alle Bild-Assets sowie die Badge Logo-Untergruppe. Um Toast für die app zu aktivieren, sollten Sie die Toast-fähigen Dropdown auf Ja festlegen.

Die andere Eigenschaft im Abschnitt Benachrichtigungen ist die Fähigkeit, die Sperre Bildschirm Benachrichtigungen für die app zu aktivieren. Wie bereits erwähnt, ist die Wecker-app eine besondere Art von Sperre Bildschirm app; Daher muss die app konfiguriert werden, um auf dem Verschlussschirm zu sein. Sie sollten die Sperre Bildschirm Benachrichtigungen Dropdown Abzeichen oder Abzeichen und Fliese-Text festlegen.

Nachdem Sie die Sperre Bildschirm Benachrichtigungen über eine app aktiviert haben, muss das Manifest ein paar zusätzliche Elemente. Beispielsweise muss die app ein Abzeichen-Logo zugewiesen werden. Das Logo wird benötigt, um ein 24 x 24 Pixel-Bild sein, und wie alle Logos in eine Windows-Speicher-app können Sie verschiedene Skaliergröße um Windows Auflösung Skalieren zu behandeln angeben. Abbildung 2 zeigt ein Beispiel für den Manifesten Designer mit Toast und Sperre Bildschirm Benachrichtigungen aktiviert.

Notifications Section of the Manifest Designer
Abbildung 2 Abschnitt Benachrichtigungen im Manifest-Designer

Außerdem muss jede app, die Sperre Bildschirm Benachrichtigungen aktiviert sind Hintergrundtask im app Manifest deklariert werden. Der interessante Teil dieser Anforderung ist, dass Sie nicht tatsächlich eine Hintergrundaufgabe in einer Sperre Bildschirm app implementieren müssen; Es muss nur deklariert werden.

Eine Hintergrundaufgabe wird im Deklarationsabschnitt des app-manifest-Designers deklariert. Wählen Sie in den verfügbaren Erklärungen Hintergrund-Tasks, und klicken Sie auf hinzufügen. Der Hintergrundtask für eine Sperre Bildschirm app muss eine der folgenden Aufgaben unterstützen: Steuerkanal, Timer, Push-Benachrichtigung oder Lage. Im Bereich App-Einstellungen des Hintergrundtask müssen Sie entweder den Einstiegspunkt oder Start-Seite-Wert festlegen. In einer XAML-app, die den Hintergrundtask verwendet wird, ist der Einstiegspunkt auf die Klasse festgelegt, die IBackgroundTask-Schnittstelle implementiert. Wenn die app tatsächlich eine Hintergrundaufgabe implementieren, ist nicht, kann der Wert auf nichts festgelegt werden. Abbildung 3 zeigt eine korrekt konfigurierte Hintergrundaufgabe ermöglichen eine app auf dem Verschlussschirm hinzugefügt werden.

Configuring a Background Task
Abbildung 3 Konfigurieren eines Hintergrundtasks

Der letzte Schritt bei der Konfiguration des app-Manifests ist die app als Wecker app identifizieren. Zu diesem Zweck Hinzufügen einer Alarm-Erweiterung im Manifest. Leider ist es nicht möglich diese Erweiterung durch den Manifesten Designer hinzuzufügen; Es muss von hand erfolgen. Um das zu tun, müssen Sie zuerst auf das zugrunde liegende XML des Manifests Paket erhalten. Dazu package.appxmanifest im Projektmappen-Explorer mit der rechten Maustaste und wählen Code anzeigen.

Die XML-Daten in einem Windows 8.1 app Manifest werden zwei Namespaces verwenden. Der erste Namespace (die Standardeinstellung) enthält die Elemente, die im Sinne von Windows 8. Der zweite Namespace muss hinzugefügt werden und wird durch das m2-Präfix identifiziert. Es enthält Ergänzungen und Änderungen in Windows 8.1 hinzugefügt. Da die app-Alarmfunktion für Windows 8.1 neu ist, müssen Sie eine "8.1" Erweiterung der Extensions-Auflistung in das Application-Element hinzu. Die Category-Eigenschaft der neuen Erweiterung sollte auf windows.alarm festgelegt werden. Hier ist ein Beispiel wie die Extensions-Auflistung mit der neuen Erweiterung und den zuvor deklarierten Hintergrundtask aussehen sollte:

<Extensions>
  <Extension Category="windows.backgroundTasks" 
      EntryPoint="App">
    <BackgroundTasks>
      <Task Type="timer" />
    </BackgroundTasks>
  </Extension>
  <m2:Extension Category="windows.alarm" />
</Extensions>

Alarm-Zugang anfordern

Sobald die entsprechenden Einstellungen und Erklärungen abgeschlossen haben, kann Ihre app dann Zugriff auf festgelegt werden, wie die Wecker-app für das Gerät anfordern. Der Benutzer kann manuell aus den PC-Einstellungen dazu; jedoch kann Ihre app Zugriff über die Windows-Runtime (WinRT) anfordern.

Die Windows-Runtime enthält eine statische AlarmApplicationManager-Klasse im Namespace Windows.ApplicationModel.Background. Diese Klasse verfügt über eine RequestAccessAsync-Methode, die den Benutzer für die Berechtigung, die app als die Geräteanwendung Alarm einzustellen aufgefordert werden, wie in Abbildung 4. Wenn eine andere app wie die Wecker-app derzeit identifiziert wird, wird er durch die jetzige ersetzt werden, wählt der Benutzer Ja, wenn Sie dazu aufgefordert werden.

An Alarm App Permission Prompt
Abbildung 4 ein Alarm App Berechtigung vorsagen

Die RequestAccessAsync-Methode gibt eine AlarmAccessStatus-Enumeration, die drei gültige Werte hat: Verweigert, AllowedWithWakeup­Fähigkeit und AllowedWithoutWakeupCapability. Dies ist Impor­Tant, wenn Sie Alarm apps für Dinge wie morgen Wakeup erstellen alarmiert. Wenn das Gerät im Ruhezustand und es ist nicht so konfiguriert, dass um Toast Benachrichtigungen, ihn aufzuwecken zu ermöglichen, wird nicht Ihre Alarme ausgelöst.

Es ist wichtig zu bedenken, dass Windows 8 den Benutzer Kontrolle über ein Gerät versetzt. Siehe Abbildung 1, ein Benutzer kann die Wecker-app problemlos ändern. Ihre Herausforderung ist, dass jede app nur Zugang von den AlarmApplicationManager einmal verlangen kann. Wenn die app eine zweite Anforderung für den Zugriff macht — für diesen Benutzer und Geräte — es wird nicht vom Benutzer und wird nur zurückgeben den aktuellen Status der app. Sobald Ihre app verweigert, ersetzt durch eine andere app oder manuell vom Benutzer entfernt, ist die einzige Option, um den Benutzer zu informieren, den die app wieder wie die Wecker-app für das Gerät manuell hinzugefügt werden muss.

Die AlarmApplicationManager enthält auch eine GetAccessStatus-Methode, die den aktuellen Status der Maschine gibt. Wie bei der RequestAccessAsync-Methode, es gibt eine AlarmAccessStatus-Enumeration zurück und ist ein guter Weg um zu bestimmen, was mit dem Gerät vor sich geht. Beispielsweise könnte Ihre Anwendung den Benutzer zu informieren, wenn das Gerät Benachrichtigungen aufwachen wird nicht.

Planen von Alarmen

Alarme sind eigentlich nur eine geplante Toast-Benachrichtigung mit ein wenig mehr Kick. Der Prozess der Planung eines Alarms ist identisch mit planen eine Toast-Benachrichtigung, der einzige Unterschied ist die Benachrichtigung XML. Die XML-Daten verwendet, um eine Benachrichtigung zu definieren enthält Informationen über das Erscheinungsbild sowie alle Funktionen enthalten.

Ein Toast kann nur Text oder eine Kombination aus Text und einem Bild sein, definiert durch eine der von der Windows-Runtime bereitgestellten Vorlagen. Es gibt derzeit acht verschiedene XML-Vorlagen, aus denen Sie wählen können. Während ich dies schreibe unterstützen nicht Windows 8.1 benutzerdefinierte Toast Layouts, so dass Sie einen der bereitgestellten Vorlagen auswählen müssen.

Die Art und das Layout ein Toast wird in einem Block von XML definiert. Der XML-Code identifiziert die Toast-Vorlage zu verwenden, dem Text und Bild mit dem Auffüllen der Vorlage und verschiedene andere Optionen, die ich später eingehen werde. Hier ist ein Beispiel für eine grundlegende Toast-Benachrichtigung:

<Sentence runat="server" id="tgt103" sentenceId="be3ede8ffff6f5338eba4eec54b18e89" class="tgtSentence" ><toast duration="long">
  <visual>
    <binding template="ToastText02">
      <text id="1">Sample Toast App</text>
      <text id="2">The is a sample message.</text>
    </binding>
  </visual>
</toast></Sentence>

Es gibt mehrere Möglichkeiten, die Toast-Vorlage generieren. Windows Runtime erstellt XmlDocument jede Vorlage aus der ToastNotificationManager, die im Windows.UI.Notification-Namespace gefunden werden können. Die ToastNotificationManager hat eine statische GetTemplateContent Methode, die eine ToastTemplateType-Enumeration mit den Wert für jede der verfügbaren Vorlagen. Hier ist ein Beispiel wie man ein XmlDocument des vorherigen Beispiels:

<Sentence runat="server" id="tgt108" sentenceId="1f331105d69000d6b02e3023880391ee" class="tgtSentence" >XmlDocument content =
  ToastNotificationManager.GetTemplateContent(ToastTemplateType.ToastText02);
content.DocumentElement.SetAttribute("duration", "long");
var textLines = content.GetElementsByTagName("text");
textLines[0].InnerText = "Sample Toast App";
textLines[1].InnerText = "The is a sample message.";</Sentence>

Dies ist ein großartiger Ausgangspunkt; je nach Ihrer Verwendung kann es jedoch etwas umständlich sein. Deshalb Ergänzungen oder Änderungen an der Vorlage normalerweise getan werden mithilfe der XmlDocument-API. Dies kann zu ganz wenigen Codezeilen für ein paar einfache Ergänzungen führen. Mit diesem Hintergrund ist es nicht ungewöhnlich, die XML-Daten als Zeichenfolge aufgebaut und dann in ein XmlDocument geladen, sobald die Vorlage abgeschlossen ist zu finden. Abbildung 5 zeigt, wie das Äquivalent des vorherigen Beispiels zu erreichen, indem die XML als Zeichenfolge generiert.

Abbildung 5 Generieren von XML als String

<Sentence runat="server" id="tgt115" sentenceId="eb43fcfb56a0dae62292715f19298f67" class="tgtSentence" >string textLine1 = "Sample Toast App";
string textLine2 = "This is a sample message.";
string contentString =
  "<toast duration=\"long\">\n" +
    "<visual>\n" +
      "<binding template=\"ToastText02\">\n" +
        "<text id=\"1\">" + textLine1 + "</text>\n" +
        "<text id=\"2\">" + textLine2 + "</text>\n" +
      "</binding>\n" +
    "</visual>\n" +
  "</toast>\n";
XmlDocument content = new Windows.Data.Xml.Dom.XmlDocument();
content.LoadXml(contentString);</Sentence>

Wenn du diesen Weg gehst, sollten Sie zwei Dinge vorsichtig sein.Zuerst müssen Sie sicherstellen Sie sind korrekt formatiertes XML generieren — achten Sie darauf, um keine Sonderzeichen zu entkommen, die in der Zeichenfolge enthalten sein könnte. Zweitens stellen Sie sicher, dass Sie sich an das Schema der Toast-Benachrichtigung. Im Windows Dev Center bietet die vollständigen Spezifikationen für das Schema bei bit.ly/172oYCO.

Alle bisherigen Beispiele haben ein Element, das nicht Teil der Standardvorlage ist. Sie haben vielleicht bemerkt, das Duration-Attribut auf das Toast-Element festgelegt wurde, zu lange. Weil Sie Alarm Toast Benachrichtigungen erstellen, wollen Sie nicht den Alarm zu erscheinen und dann verschwinden ohne Benutzereingriff. Festlegen der Dauer zu lange wird den Toast auf dem Bildschirm für bis zu 25 Sekunden halten.

Sobald Sie Ihr XML konfiguriert und in ein XmlDocument geladen haben, können Sie Ihre Toast planen. Der erste Schritt ist zum Erstellen einer Instanz eines ScheduledToastNotification. Benötigen Sie zwei Dinge um ein ScheduledToastNotification zu erstellen: XmlDocument, die Toast-Definition und eine Uhrzeit für den Toast geplant werden.

Die ScheduledToastNotification wird mit einem ToastNotifier geplant. Eine Instanz eines ToastNotifier entsteht aus der ToastNotification­Manager-Klasse mithilfe der statischen CreateToastNotifier-Methode. Ein Aufruf der ToastNotifier AddToSchedule-Methode wird dann deinen Toast zu liefernden planen. Toaste entstehen in der Regel als Ergebnis eine Benutzeraktion, z. B. eine Schaltfläche oder ein Ereignis, das ausgelöst wird, innerhalb der app drücken. Hier ist ein Beispiel für erstellen und planen einen Toast für 1 Minute von der aktuellen Zeit:

<Sentence runat="server" id="tgt132" sentenceId="aaf135523fb9ec603ed9f9c17680d0e3" class="tgtSentence" >ToastNotifier toastNotifier =
  ToastNotificationManager.CreateToastNotifier();
var scheduledToast = new ScheduledToastNotification(
  content, DateTime.Now.AddMinutes(1));
toastNotifier.AddToSchedule(scheduledToast);</Sentence>

Der daraus resultierende Toast, der generiert wird kann man in Abbildung 6. Beachten Sie, dass es die meisten Toaste aussehen sollte, was Sie in Windows gesehen.

A Basic Toast Notification
Abbildung 6 grundlegende Toast Benachrichtigung

Eine Toast-Benachrichtigung kann ein paar aus verschiedenen Gründen fehlschlagen. Die häufigste Ursache ist, dass die XML-Daten nicht korrekt formatiert ist. Dies kann verursacht werden durch eine falsche Vorlage Id haben oder nicht alle erforderlichen Attribute definieren, daher es wichtig ist, um sicherzustellen, dass Sie den XML-Code richtig zu machen.

Wenn Sie versuchen, einen Toast für eine Zeit zu planen, die bereits vergangen ist, wird eine Ausnahme ausgelöst werden während des AddToSchedule-Aufrufs. Wenn Sie einen Toast für ein paar Sekunden in der Zukunft planen sind, stellen Sie sicher, dass die Zeitberechnung ist eines der letzten Dinge, die Sie tun. Abbindezeit hindert Sie hin und wieder 4 Sekunden, um Code auszuführen, vor dem eigentlich planen, dass Toast für 2 Sekunden, wird eine Ausnahme ausgelöst.

Schließlich kann Ihre app nur 4.096 Toasts gleichzeitig geplant haben. Ich weiß, dass Ihr erster Gedanke ist "keineswegs das geschieht", aber für ein Wecker-app ist es einfacher zu machen, als Sie vielleicht denken. Angenommen Sie, Sie haben eine Wecker-app, die dem Benutzer erlaubt, einen täglichen Alarm zu planen. Wenn Ihr Code mehrere tägliche Alarme für jeden Tag für das nächste Jahr plant, werden 12 tägliche Alarme Sie, max. Das heißt, Sie sicherstellen müssen, Ihre Algorithmen für die Planung der Alarme sind durchdacht und, dass Sie einmal die Alarme verwalten Erstellung.

Verwalten und Entfernen von Alarmen

Um erfolgreich eine Alarm-Anwendung zu erstellen, müssen Sie die Fähigkeit zu überprüfen und entfernen alle geplanten Alarme. Die ToastNotifier erreichen diese beiden Aufgaben. Aufrufen der GetScheduledToastNotifications-Methode gibt eine nur-Lese-Liste der ScheduledToastNotifications zurück. Die Auflistung enthält nur geplante Benachrichtigungen für die aktuelle app.

Um eine geplante Benachrichtigung zu entfernen, sollte die Benachrichtigung entfernt werden an die RemoveFromSchedule-Methode übergeben werden. Zwischen diesen beiden Methoden können Sie Ihre geplanten Benachrichtigungen verwalten. Sobald eine Benachrichtigung geschrieben und dann vom Benutzer entlassen wurde, erscheint nicht mehr in die app-Sammlung von Benachrichtigungen und nicht auf die maximale Anzahl von zulässigen geplanten Benachrichtigungen zählen. Hier finden alle geplanten Benachrichtigungen löschen:

<Sentence runat="server" id="tgt156" sentenceId="21fee6d1b325e990bc22725e0e6d6fef" class="tgtSentence" >var toastNotifier = ToastNotificationManager.CreateToastNotifier();
var notifications = toastNotifier.GetScheduledToastNotifications();
// Remove each notification from the schedule
foreach (var notification in notifications)
{
  toastNotifier.RemoveFromSchedule(notification);
}</Sentence>

Man könnte diesen Code in einem Befehl oder Ereignis-Handler auf Knopfdruck alle löschen z. B. gebunden.

Hinzufügen von Befehlen

Wenn Ihre app derzeit die Wecker-app für das Gerät ist, dann das vorherige Beispiel, generiert den Toast angezeigt, Abbildung 6 erscheint pünktlich, aber Abbildung 6sieht ähnlich wie ein Alarm, oder es? In erster Linie verpaßt du ein paar Gemeinsamkeiten für einen Alarm: Snooze und entlassen. In der Standardeinstellung wird durch Klicken auf den Toast oder wischen sie es abzuweisen; ein Alarm muss allerdings ein bisschen mehr intuitiv sein.

Neben den < Toast > Element < Sichtkontakt > Unterstützung untergeordnetes Element, es unterstützt auch eine < Befehle > Element. Dieses Element können Sie den Toast vordefinierten Befehle hinzu. Das Element selbst unterstützt ein einzelnes optional Szenario-Attribut. Das Szenario-Attribut kann entweder Alarm oder IncomingCall festgelegt werden. Für meine Zwecke hier wird es immer auf alarm festgelegt werden.

Die < Befehle > Element enthält eine Auflistung der einzelnen < Befehl > Elemente. Jeder Befehl muss ein Id-Attribut identifiziert, welche Art von Befehl ist. Für einen Alarm muss dies entweder Snooze oder entlassen. Indem Sie Ihre früheren Toast ein Abschnitt "Befehle" hinzufügen, deinen Toast sieht jetzt ein bisschen mehr wie ein Alarm, und hat die Fähigkeit, nicht nur entlassen werden, aber damit auch snooze. Hier ist der Code neu generierten Toast (Sie sehen die Ergebnisse dieses Codes in Abbildung 7):

<Sentence runat="server" id="tgt172" sentenceId="694f9365d7460a0d357d0edd1e374df0" class="tgtSentence" ><toast duration="long">
  <visual>
    <binding template="ToastText02">
      <text id="1">Sample Toast App</text>
      <text id="2">The is a sample message.</text>
    </binding>
  </visual>
  <commands scenario="alarm">
    <command id="snooze"/>
    <command id="dismiss"/>
  </commands>
</toast></Sentence>

An Alarm Toast Notification
Abbildung 7 ein Toast-Alarmierung

Die Schlummerfunktion einstellen

Standardmäßig legt Windows die Schlummerzeit für einen Alarm 9 Minuten. Jedoch können Sie die Dauer des die Snooze in der ScheduledToastNotification-Klasse definieren. Diese Klasse verfügt über einen zweiten Konstruktor mit zwei zusätzliche Parameter. Die erste ist die Zeitdauer für die Snooze. Das Snooze Intervall wird als TimeSpan definiert und kann liegen irgendwo zwischen 1 und 60 Minuten.

Der zweite neue Parameter ist die maximale Anzahl der Zeiten, die der Benutzer die Schlummerfunktion den Alarm schlagen kann. Wenn dieser Wert auf 0 (null) wird der Benutzer die Schlummerfunktion eine unbegrenzte Menge an mal treffen kann. Hier ist ein Beispiel für die Schlummerfunktion-Frequenz einstellen:

<Sentence runat="server" id="tgt183" sentenceId="5d28ae7844e293b99f67b83f7a2520a7" class="tgtSentence" >DateTime scheduledTime = DateTime.Now.AddMinutes(1);
TimeSpan snoozeInterval = TimeSpan.FromMinutes(5);
var scheduledToast = new ScheduledToastNotification(
  content, scheduledTime, snoozeInterval, 0);</Sentence>

Der Alarmton ändern

Wenn der Benutzer Sound für Benachrichtigungen aktiviert hat, wird dann jedes Toast machen die gleichen "Ding" sound wenn eine Toast-Nachricht angezeigt wird. Dies bringt ein paar Probleme, wenn es darum geht, eine Wecker-app. Zunächst ruft der Benutzer verwendet, um den gleichen Sound für alle Benachrichtigungen zu hören. Dies bedeutet ein Alarm kann verblassen in der Lärm der anderen Benachrichtigungen und nicht abheben. Das zweite Problem ist, dass ein Alarm zwar weiter klingen zu lassen, bis der Benutzer es bestätigt. Daher sollten Sie einen Alarm, irgendeine Art von Soundschleife zu haben.

Glücklicherweise unterstützt die Toast-Definition auch einen < Audio > Element, das können Sie den Sound gemacht, wenn der Toast angezeigt wird anpassen. Die < Audio > Element verfügt über zwei Attribute: Src und Schlaufe. Bevor Sie zu aufgeregt, muss der Wert des Src-Attributs eines der vordefinierten Werte von Windows bereitgestellt sein. Das bedeutet, Sie können keinen benutzerdefinierten Audio für Ihren Toast Benachrichtigungen bereitstellen, aber Sie haben eine ansehnliche Sammlung von Sounds zur Auswahl stehen.

Der Wert von Src muss einer der 25 vordefinierte Werte sein. Die Klänge werden in Schleifen- und nicht Schleifen Kategorien aufgeteilt. Die Schleife Klänge sind konstruiert, um nahtlose Schleife und sollte verwendet werden, wenn eine Schleife audio Benachrichtigung erstellen. Es sind 10 Wecker looping Sounds und 10 eingehenden Rufen Schleife Klänge zur Verfügung gestellt. Eine vollständige Liste der vordefinierten Werte finden Sie unter bit.ly/16HV2xm.

Wenn Sie eine Soundschleife spielen möchten, muss das Loop-Attribut festgelegt auf True. Zusätzlich wird das Duration-Attribut auf die < Toast > Element muss festgelegt werden, zu lange, um den Ton Zeit zum spielen zu geben. Abbildung 8 zeigt ein Beispiel für eine benutzerdefinierte audio Soundschleife für deinen Toast festlegen.

Abbildung 8 festlegen ein benutzerdefinierten Audio Soundschleife für einen Toast

<Sentence runat="server" id="tgt204" sentenceId="99d4284926276212e4072a1f57d7940a" class="tgtSentence" ><toast duration="long">
  <visual>
    <binding template="ToastText02">
      <text id="1">Sample Toast App</text>
      <text id="2">The is a sample message.</text>
    </binding>
  </visual>
  <commands scenario="alarm">
    <command id="snooze"/>
    <command id="dismiss"/>
  </commands>
  <audio src="ms-winsoundevent:Notification.Looping.Alarm2"
     loop="true" />
</toast></Sentence>

Wenn Sie nicht, dass Ihre Toast, keinen Ton zu spielen möchten, können Sie ein silent-Attribut auf True festlegen. Dies überschreibt keine Standardeinstellungen zum Anzeigen von Toast. Abbildung 9 zeigt, wie es benutzt wird.

Abbildung 9 das Silent-Attribut festlegen, also trinken wir keinen Ton spielen

<Sentence runat="server" id="tgt209" sentenceId="13b55ef36ec63c4e2c7fbe8e08d3700a" class="tgtSentence" ><toast duration="long">
  <visual>
    <binding template="ToastText02">
      <text id="1">Sample Toast App</text>
      <text id="2">The is a sample message.</text>
    </binding>
  </visual>
  <commands scenario="alarm">
    <command id="snooze"/>
    <command id="dismiss"/>
  </commands>
  <audio silent="true" />
</toast></Sentence>

Denken über Ihre App

Sie können eine Wecker-app in viele verschiedene Richtungen nehmen. Da jedes Gerät nur eine einzelne Wecker-app verfügen kann, ist es wichtig, über Ihre app zu denken. Wenn der Gültigkeitsbereich Ihrer Anwendung zu begrenzt ist, könnte der Benutzer es durch eine andere app ersetzen. Das hängt natürlich von der Zweck Ihrer Anwendung und ihrer Zielgruppe. Betrachten Sie Dinge wie Verwendung des Titel-Vertrags zu anderen apps erlauben Alarme durch Ihre app zu planen.

Mit dem Zusatz des Wecker-app-Features in Windows 8.1 schaffen Sie eine Vielzahl von Zeit-basierte Anwendungen mit einer Genauigkeit, die vom Benutzer erwartet. Ich habe gezeigt, was es braucht, um Sie unternehmungslustig mit einem Wecker-app erhalten. Nun, nicht mehr schlagen die Snooze-Taste. Gehen Sie aus, und erstellen Sie die folgende erstaunliche Wecker-app!

Tony Champion ist Präsident der Champion DS und ist ein Microsoft MVP. Er ist aktiv in der Gemeinschaft als Sprecher, Blogger und Autor. Er führt einen Blog unter tonychampion.net und ist erreichbar per E-mail unter tony@tonychampion.net.

Unser Dank gilt dem folgenden technischen Experten für die Durchsicht dieses Artikels: Pete Brown (Microsoft)
Pete Brown ist Programmmanager im Client und Geräte-Evangelisation-Team, Schwerpunkt XAML und modernen Anwendungen auf allen Windows-Geräten. Sein Fokus liegt auf schöne, qualitativ hochwertige apps zu erstellen, die Kreativität ermöglichen Entwicklern zu helfen. Er ist auf Twitter bei @pete_brown und im Internet unter 10rem.net.