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 macOS iOS Android
Plattformunterstützung
Checkmark.svg

Windows 10 und Windows 8

Checkmark.svg

10.8+

Checkmark.svg
Checkmark.svg
Name des Benachrichtigungsbereichs Aktionszentrale Mitteilungszentrale Mitteilungszentrale Mitteilungsschublade
TNotification
TNotification.Name
Checkmark.svg
Checkmark.svg
Checkmark.svg
Checkmark.svg
TNotification.AlertBody
Checkmark.svg
Checkmark.svg
Checkmark.svg

Obligatorisch

Checkmark.svg
TNotification.Title
Checkmark.svg
Checkmark.svg

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

Nicht unterstützt.

Der App-Name wird als Titel verwendet.

Checkmark.svg

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

TNotification.FireDate Nicht unterstützt.
Checkmark.svg
Checkmark.svg
Checkmark.svg
TNotification.Number Nicht unterstützt. Nicht unterstützt.
Checkmark.svg

Legt die Zahl auf dem Kennzeichensymbol fest.

Checkmark.svg
TNotification.EnableSound
Checkmark.svg
Checkmark.svg
Checkmark.svg
Checkmark.svg
TNotification.AlertAction Nicht unterstützt.
Checkmark.svg
Checkmark.svg
Nicht unterstützt.
TNotification.HasAction Nicht unterstützt.
Checkmark.svg
Checkmark.svg
Nicht unterstützt.
TNotification.RepeatInterval Nicht unterstützt.
Checkmark.svg
Checkmark.svg
Checkmark.svg
TCustomNotificationCenter
TCustomNotificationCenter.ApplicationIconBadgeNumber Nicht unterstützt. Nicht unterstützt.

Siehe OS X Badge (Beispiel) (EN).

Checkmark.svg
Nicht unterstützt.
TCustomNotificationCenter.ScheduleNotification Nicht unterstützt.
Checkmark.svg
Checkmark.svg
Checkmark.svg
TCustomNotificationCenter.PresentNotification
Checkmark.svg
Checkmark.svg
Checkmark.svg
Checkmark.svg

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

macOS-Mitteilungen

macOS unterstützt Mitteilungen ab der Version 10.8. Weitere Informationen zu macOS finden Sie unter Verwenden der macOS-Mitteilungszentrale.

iOS-Mitteilungen

Berechtigungen für Mitteilungen

Fügen Sie Ihrer Anwendung Mitteilungsberechtigungen hinzu, um Mitteilungen in iOS verwenden zu können:

  1. Wählen Sie Projekt > Optionen > Versionsinformationen
  2. Wählen Sie die entsprechende iOS-Zielplattform aus.
  3. Setzen Sie im Listenfeld "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 Hinweis ä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 macOS und iOS wird, selbst wenn Töne aktiviert sind, der Mitteilungston nicht abgespielt, wenn sich die Anwendung im Vordergrund befindet. macOS und iOS spielen den Mitteilungston ab, wenn sich die Anwendung im Hintergrund befindet oder geschlossen ist.
  • Wenn unter Windows EnableSound auf True festgelegt ist, wird der Mitteilungston abgespielt. Sie können den Ton deaktivieren, indem Sie diese Eigenschaft auf False festlegen.

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 im Projekte-Fenster 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 unter macOS, 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 (macOS 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 unter macOS 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 Wiederholungsintervallen 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, der der eindeutige Bezeichner der Mitteilung ist, 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