Verwenden von Mitteilungen

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Verwenden der RTL in geräteübergreifenden Anwendungen


Mitteilungen sind Meldungen, die Anwendungen senden, um Informationen oder Warnungen weiterzugeben.

Hinweis: In diesem Thema werden lokale Mitteilungen behandelt, die von Geräteanwendungen gesendete Mitteilungen darstellen; Informationen zu Remote-Mitteilungen finden Sie unter Push-Benachrichtigungen.

RAD Studio enthält die Komponente TNotificationCenter für die Verwaltung geräteübergreifender Mitteilungen. Die Mitteilungszentrale ermöglicht das Senden von Mitteilungen aus einer ausgeführten Anwendung. Anwendungen können anhand von Mitteilungen den Benutzer über etwas informieren.

Die Komponente TNotification ist die Mitteilung, die die Anwendung an die Mitteilungszentrale sendet und die im ausgewiesenen Benachrichtigungsbereich der jeweiligen Plattform angezeigt werden soll.

Sie können Mitteilungen für Windows mit der VCL oder für Ihre geräteübergreifenden Anwendungen mit FireMonkey erstellen.

Unterstützung von Mitteilungen nach Plattform

Element Windows OS X iOS Android
Plattformunterstützung
YesC++11Feature.png

Windows 10 und Windows 8

YesC++11Feature.png

10.8+

YesC++11Feature.png
YesC++11Feature.png
Name des Benachrichtigungsbereichs Aktionszentrale Mitteilungszentrale Mitteilungszentrale Mitteilungsschublade
TNotification
TNotification.Name
YesC++11Feature.png
YesC++11Feature.png
YesC++11Feature.png
YesC++11Feature.png
TNotification.AlertBody
YesC++11Feature.png
YesC++11Feature.png
YesC++11Feature.png

Obligatorisch

YesC++11Feature.png
TNotification.Title
YesC++11Feature.png
YesC++11Feature.png

Wenn kein Titel vorhanden ist, wird der App-Name als Titel verwendet.

Nicht unterstützt.

Der App-Name wird als Titel verwendet.

YesC++11Feature.png

Wenn kein Titel vorhanden ist, wird der App-Name als Titel verwendet.

TNotification.FireDate Nicht unterstützt.
YesC++11Feature.png
YesC++11Feature.png
YesC++11Feature.png
TNotification.Number Nicht unterstützt. Nicht unterstützt.
YesC++11Feature.png

Legt die Zahl auf dem Kennzeichensymbol fest.

YesC++11Feature.png
TNotification.EnableSound Nicht unterstützt.

Ton ist immer aktiviert.

YesC++11Feature.png
YesC++11Feature.png
YesC++11Feature.png
TNotification.AlertAction Nicht unterstützt.
YesC++11Feature.png
YesC++11Feature.png
Nicht unterstützt.
TNotification.HasAction Nicht unterstützt.
YesC++11Feature.png
YesC++11Feature.png
Nicht unterstützt.
TNotification.RepeatInterval Nicht unterstützt.
YesC++11Feature.png
YesC++11Feature.png
YesC++11Feature.png
TCustomNotificationCenter
TCustomNotificationCenter.ApplicationIconBadgeNumber Nicht unterstützt. Nicht unterstützt.

Siehe OS X Badge (Beispiel) (EN).

YesC++11Feature.png
Nicht unterstützt.
TCustomNotificationCenter.ScheduleNotification Nicht unterstützt.
YesC++11Feature.png
YesC++11Feature.png
YesC++11Feature.png
TCustomNotificationCenter.PresentNotification
YesC++11Feature.png
YesC++11Feature.png
YesC++11Feature.png
YesC++11Feature.png

Windows-Mitteilungen

Popupbenachrichtigungen sind mit den folgenden Windows-Versionen kompatibel:

  • Windows 8: Windows 8 zeigt die Benachrichtigungen eine kurze Zeit lang an, danach kann der Benutzer nicht mehr darauf zugreifen.
  • Windows 10: Windows 10 zeigt die Benachrichtigungen eine kurze Zeit lang an, danach sind die Benachrichtigungen in der Aktionszentrale verfügbar.

Um die Aktionszentrale zum Anzeigen der Benachrichtigungen zu öffnen, klicken Sie in der Taskleiste auf das Symbol "Aktionszentrale". Je nachdem, ob Benachrichtigungen verfügbar sind, wird das Symbol unterschiedlich dargestellt:

Ausstehende Benachrichtigungen Keine ausstehenden Benachrichtigungen
W10-NotificationsPending.png W10-NoNotificationsPending.png

OS X-Mitteilungen

OS X unterstützt Mitteilungen ab der Version 10.8. Weitere Informationen über OS X finden Sie unter Verwenden der Mac OS X-Mitteilungszentrale.

iOS-Mitteilungen

Berechtigungen für Mitteilungen

Sie müssen Ihrer Anwendung Mitteilungsberechtigungen hinzufügen, damit Mitteilungen in iOS verwendet werden können. Dazu muss der Wert des Schlüssels FMLocalNotificationPermission auf "true" gesetzt werden. RAD Studio fügt dann das entsprechende Schlüssel- und Wertepaar in die Datei Info.plist Ihres Projekts ein.

So setzen Sie FMLocalNotificationPermission auf "true":

  1. Wählen Sie Projekt > Optionen > Versionsinformationen.
  2. Wählen Sie die entsprechende iOS-Zielplattform aus.
  3. Setzen Sie in der Liste "Schlüssel/Wert" den Wert von FMLocalNotificationPermission auf "true".
FMLocalNotificationPermission.png

Mitteilungshinweis

In iOS kann der Benutzer festlegen, ob Mitteilungen einer App als Banner oder als Hinweis angezeigt werden. Banner werden nur eine kurze Zeit lang auf dem Bildschirm angezeigt, aber Hinweise verbleiben auf dem Bildschirm, bis der Benutzer eine Interaktion mit dem Hinweis ausführt.

Um Mitteilungen als Hinweise anzuzeigen, muss der Endbenutzer in den Mitteilungseinstellungen auf dem iOS-Gerät, die Einstellung Hinweisstil in Hinweise ändern.

Erstellen von Mitteilungen

Mitteilungen werden mit der Klasse TNotification erstellt. Zum Verwalten einer oder mehrerer TNotification-Instanzen benötigen Sie die Komponente TNotificationCenter.

Nachdem Sie eine TNotificationCenter-Komponente auf Ihrem Formular platziert haben, können Sie die Variable TNotification deklarieren und die Methode CreateNotification zum Erstellen der Mitteilung aufrufen.

Delphi:
MyNotification:= NotificationCenter1.CreateNotification;
C++:
TNotification *MyNotification = NotificationCenter1->CreateNotification();

Nach dem Erstellen der Mitteilung sollten Sie mindestens die folgenden Felder festlegen:

  • Name: Eindeutiger Name der Mitteilung.
  • AlertBody: Text des Steuerelements. Das Feld AlertBody ist in iOS obligatorisch.

Sie können andere Einstellungen für Ihre Mitteilungen verwalten:

  • Title: Titel der Mitteilung.
iOS ist mit dem Feld Title nicht kompatibel; iOS zeigt immer den App-Namen als Titel an.
  • Number: Mit diesem Feld aktualisieren Sie die Mitteilungsnummer in Android oder die Zahl auf dem Anwendungskennzeichen in iOS.
Zahl auf dem iOS-Kennzeichensymbol Android-Mitteilungsnummer
IOSNotification.PNG Android Notification with number.png

Auslösen von Mitteilungen

Mit FireDate legen Sie das Datum und die Uhrzeit fest, zu der die Mitteilung ausgelöst werden soll.

Um die Zeit festzulegen, zu der die Mitteilung ausgelöst werden soll, können Sie zwei Typen von Mitteilungen erstellen.

Sofortige Mitteilungen

Standardmäßig ist FireDate auf Now gesetzt. Wenn Sie den Wert von FireDate nicht ändern, wird daher die Mitteilung sofort ausgelöst.

Geplante Mitteilungen

Der Zeitpunkt, zu dem Mitteilungen ausgelöst werden, kann geplant werden. Setzen Sie FireDate auf das Datum und die Uhrzeit, zu der die Mitteilung ausgelöst werden soll.

Auslösen von Mitteilungen zu einem bestimmten Zeitpunkt

Sie können festlegen, dass eine Mitteilung zu einem bestimmten Zeitpunkt ausgelöst werden muss. Wenn eine Mitteilung beispielsweise am 16. Dezember 2015, um 17:30, ausgelöst werden soll, können Sie FireDate wie folgt festlegen:

Delphi:
MyNotification.FireDate := EncodeDateTime(2015, 12, 16, 17, 30, 00, 00);
C++:
MyNotification->FireDate = System::Dateutils::EncodeDateTime(2015, 12, 16, 17, 30, 00, 00);

Denken Sie beim Planen von Mitteilungen für einen bestimmten Zeitpunkt daran, dass die Mitteilung sofort ausgelöst wird, wenn das festgelegte FireDate bereits vorüber ist.

Auslösen von Mitteilungen nach einer bestimmten Zeitspanne

Sie können festlegen, dass eine Mitteilung nach einer bestimmten Zeitspanne ausgelöst werden muss. Um die Mitteilung beispielsweise in 1 Minute und 30 Sekunden auszulösen, können Sie Folgendes angeben:

Delphi:
MyNotification.FireDate := Now + EncodeTime(0, 1, 30, 0);
C++:
MyNotification->FireDate = Now() + EncodeTime(0, 1, 30, 0);

Wenn eine Mitteilung geplant ist und Sie eine andere Mitteilung mit dem gleichen Namen (geplant oder nicht) erstellen, wird die geplante Mitteilung überschrieben.

Wiederholen von Mitteilungen

Sie können mit RepeatInterval geplante Mitteilungen nach einer bestimmten Zeitspanne wiederholen. Dazu stehen die folgenden von TRepeatInterval definierten Intervalltypen zur Verfügung: None, Second, Minute, Hour, Day, Week, Weekday, Month, Quarter, Year oder Era.

Warnung: Wenn Sie mit RepeatInterval die Wiederholung einer Mitteilung nach einer bestimmten Zeitspanne planen, wird die Mitteilung weiterhin wiederholt, auch wenn die Anwendung geschlossen ist; achten Sie darauf, dass Mitteilungen korrekt storniert werden.

Damit eine Mitteilung jede Stunde wiederholt wird, könnten Sie beispielsweise Folgendes angeben:

Delphi:
MyNotification.RepeatInterval := TRepeatInterval.Hour;
C++:
MyNotification->RepeatInterval = TRepeatInterval::Hour;

Mitteilungston

Aktivieren von Mitteilungstönen

Sie können Töne mit EnableSound aktivieren oder deaktivieren. Standardmäßig ist EnableSound auf True gesetzt.

  • Bei OS X und iOS wird, selbst wenn Töne aktiviert sind, der Mitteilungston nicht abgespielt, wenn sich die Anwendung im Vordergrund befindet; OS X und iOS spielen den Mitteilungston ab, wenn sich die Anwendung im Hintergrund befindet oder geschlossen ist.
  • Bei Windows wird der Mitteilungston immer abgespielt; auch wenn Sie den Ton mit EnableSound deaktivieren.

Anpassen von Mitteilungstönen

Sie können den Ton Ihrer Mitteilungen anpassen, indem Sie SoundName festlegen.

Führen Sie die folgenden Schritte aus, um einen benutzerdefinierten Mitteilungston hinzuzufügen:

  1. Ziehen Sie in der Projektverwaltung die Tondatei auf dem Namen Ihres Projekts, und bestätigen Sie, dass Sie diese Datei hinzufügen möchten.
  2. Geben Sie in Projekt > Bereitstellung die richtigen Remote-Pfade der Datei für die verschiedenen Plattformen an.
    • iOS:.\
  3. Geben Sie den benutzerdefinierten Tonnamen an, und legen Sie SoundName der Plattform entsprechend fest.
Delphi:
{$IFDEF IOS}
MyNotification.SoundName := 'nameOfSound.caf';
{$ENDIF}
C++:
#if defined(_PLAT_IOS)
myNotification->SoundName = "nameOfSound.caf";
#endif
Hinweis: Laut der iOS-Dokumentation sollte die Tondatei die Dateierweiterung aiff, wav oder caf haben.

Achten Sie darauf, Ihrem Projekt die richtige Unit hinzuzufügen:

Delphi: Fügen Sie System.IOUtils in die uses-Klausel ein.
System.IOUtils;
C++: Fügen Sie System.IOUtils.hpp in die Header-Datei .h Ihres Projekts ein.
#include <System.IOUtils.hpp>

Wenn das Gerät die benutzerdefinierte Tondatei, die Sie in Ihrem Projekt festgelegt haben, nicht finden kann, spielt iOS den Standardton, Android dagegen keinen Ton ab.

Mitteilungsaktionen

Durch Klicken auf die Mitteilungen in OS X, iOS oder Android wird die Anwendung, die die Mitteilung gesendet hat, in den Vordergrund gesetzt, unabhängig davon, ob diese Anwendung im Hintergrund ausgeführt wird oder geschlossen ist.

Für Windows ist kein bestimmtes Verhalten vorgesehen, wenn der Benutzer auf die Mitteilung klickt.

Hinzufügen von Mitteilungsaktionen

Sie können Aktionen ausführen, wenn der Benutzer auf eine Mitteilung klickt. Beim Klicken auf eine Mitteilung wird das Ereignis OnReceiveLocalNotification ausgelöst. Schreiben Sie eine Ereignisbehandlungsroutine, um eine Aktion festzulegen.

Die Ereignisbehandlungsroutine für OnReceiveLocalNotification empfängt auch die im Parameter ANotification angegebene TNotitication, auf die der Benutzer klickt; mit dem Parameter ANotification ermitteln Sie weitere Einzelheiten über die Mitteilung, auf die der Benutzer geklickt hat.

So zeigen Sie eine Meldung gemäß der Mitteilung, auf die der Benutzer geklickt hat, an:

Delphi:
if ANotification.Name='ProcessCompleted' then
	ShowMessage('The process is completed.');
C++:
if (ANotification->Name == "ProcessCompleted") {
	ShowMessage("The process is completed.");
}

Mitteilungsaktionen (OS X und iOS)

Sie können einem Hinweis eine Aktions-Schaltfläche hinzufügen, mit der der Benutzer die Anwendung öffnen kann. Dazu muss der Benutzer in den Mitteilungseinstellungen den Stil der Mitteilung auf "Hinweise" festlegen; weitere Informationen dazu finden Sie unter Mitteilungshinweise in OS X und Mitteilungshinweise in iOS.

Um eine Aktions-Schaltfläche hinzuzufügen, setzen Sie das Feld HasAction auf True. Im Feld AlertAction können Sie den Text für die Schaltfläche angeben.

Delphi:
MyNotification.HasAction := True;
MyNotification.AlertAction := 'Open App';
C++:
MyNotification->HasAction = True;
MyNotification->AlertAction = "Open App";

Senden von Mitteilungen an die Mitteilungszentrale

Wenn Sie alle Einstellungen für Ihre Mitteilung konfiguriert haben, müssen Sie Ihre Mitteilung an die Mitteilungszentrale zur Verarbeitung senden.

Sie können Mitteilungen an die Mitteilungszentrale mit einer der beiden folgenden Methoden senden.

ScheduleNotification

ScheduleNotification sendet eine geplante Mitteilung an die Mitteilungszentrale. Wenn FireDate Now ist oder FireDate einen vergangenen Zeitpunkt (TDateTime) enthält, dann wird die Mitteilung sofort angezeigt; ansonsten wird die Mitteilung wie angegeben geplant.

Warnung: Windows unterstützt ScheduleNotification nicht.
Delphi:
NotificationCenter1.ScheduleNotification(MyNotification);
C++:
NotificationCenter1->ScheduleNotification(MyNotification);

PresentNotification

PresentNotification zeigt die Mitteilung sofort an, unabhängig vom Wert von FireDate.

Delphi:
NotificationCenter1.PresentNotification(MyNotification);
C++:
NotificationCenter1->PresentNotification(MyNotification);

Stornieren von Mitteilungen

Sie können Mitteilungen, die geplant sind, und Mitteilungen, die wiederholt werden, stornieren sowie Mitteilungen entfernen, die bereits in der Aktionszentrale, der Mitteilungszentrale oder der Mitteilungsschublade angezeigt werden.

CancelNotification

Mit CancelNotification wird eine geplante Mitteilung oder eine Mitteilung, die wiederholt wird, storniert. Um eine Mitteilung zu stornieren, benötigen Sie den Namen der Mitteilung.

Delphi:
NotificationCenter1.CancelNotification('MyNotificationName');
C++:
NotificationCenter1->CancelNotification("MyNotificationName");

CancelAll

CancelAll storniert alle Mitteilungen:

  • Geplante Mitteilungen werden nicht ausgelöst.
  • Mitteilungen mit einem Wiederholungsintervall werden storniert.
  • Mitteilungen, die in der Aktionszentrale, der Mitteilungszentrale oder der Mitteilungsschublade für diese Anwendung verfügbar sind, werden gelöscht.
Delphi:
NotificationCenter1.CancelAll;
C++:
NotificationCenter1->CancelAll();

Aktualisieren von Mitteilungen

Sie können ausstehende Mitteilungen anhand des Namens, des eindeutigen Bezeichners der Mitteilung, aktualisieren. Führen Sie die folgenden Schritte aus, um eine Mitteilung zu aktualisieren:

  1. Erstellen Sie eine Instanz von TNotification mit dem gleichen Namen wie die zu aktualisierende Mitteilung.
  2. Konfigurieren Sie die neue Instanz mit den gewünschten Einstellungen.
  3. Senden Sie die Mitteilung an die Mitteilungszentrale.

Durch die Aktualisierung von zukünftigen Mitteilungen, geplanten Mitteilungen oder Mitteilungen mit einem Wiederholungsintervall werden die Mitteilungen, die sich bereits in der Aktionszentrale, der Mitteilungszentrale oder der Mitteilungsschublade befinden, gelöscht und zukünftige Mitteilungen überschrieben.

Siehe auch

Codebeispiele