Verwenden von Mitteilungen
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.
Inhaltsverzeichnis
- 1 Unterstützung von Mitteilungen nach Plattform
- 2 Erstellen von Mitteilungen
- 3 Auslösen von Mitteilungen
- 4 Wiederholen von Mitteilungen
- 5 Mitteilungston
- 6 Mitteilungsaktionen
- 7 Senden von Mitteilungen an die Mitteilungszentrale
- 8 Stornieren von Mitteilungen
- 9 Aktualisieren von Mitteilungen
- 10 Siehe auch
Unterstützung von Mitteilungen nach Plattform
Element | Windows | OS X | iOS | Android |
---|---|---|---|---|
Plattformunterstützung | Windows 10 und Windows 8 |
10.8+ |
||
Name des Benachrichtigungsbereichs | Aktionszentrale | Mitteilungszentrale | Mitteilungszentrale | Mitteilungsschublade |
TNotification | ||||
TNotification.Name | ||||
TNotification.AlertBody | Obligatorisch |
|||
TNotification.Title | Wenn kein Titel vorhanden ist, wird der App-Name als Titel verwendet. |
Nicht unterstützt.
Der App-Name wird als Titel verwendet. |
Wenn kein Titel vorhanden ist, wird der App-Name als Titel verwendet. | |
TNotification.FireDate | Nicht unterstützt. | |||
TNotification.Number | Nicht unterstützt. | Nicht unterstützt. | Legt die Zahl auf dem Kennzeichensymbol fest. |
|
TNotification.EnableSound | Nicht unterstützt.
Ton ist immer aktiviert. |
|||
TNotification.AlertAction | Nicht unterstützt. | Nicht unterstützt. | ||
TNotification.HasAction | Nicht unterstützt. | Nicht unterstützt. | ||
TNotification.RepeatInterval | Nicht unterstützt. | |||
TCustomNotificationCenter | ||||
TCustomNotificationCenter.ApplicationIconBadgeNumber | Nicht unterstützt. | Nicht unterstützt.
Siehe OS X Badge (Beispiel) (EN). |
Nicht unterstützt. | |
TCustomNotificationCenter.ScheduleNotification | Nicht unterstützt. | |||
TCustomNotificationCenter.PresentNotification |
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 |
---|---|
OS X-Mitteilungen
OS X unterstützt Mitteilungen ab der Version 10.8. Weitere Informationen über OS X finden Sie unter Verwenden der OS X-Mitteilungszentrale.
iOS-Mitteilungen
Berechtigungen für Mitteilungen
Fügen Sie Ihrer Anwendung Mitteilungsberechtigungen hinzu, um Mitteilungen in iOS verwenden zu können:
- Wählen Sie Projekt > Optionen > Versionsinformationen
- Wählen Sie die entsprechende iOS-Zielplattform aus.
- Setzen Sie im Listenfeld "Schlüssel-Wert" den Wert von
FMLocalNotificationPermission
aufTrue
.
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.
MyNotification:= NotificationCenter1.CreateNotification;
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.
- ApplicationIconBadgeNumber: Mit dieser Eigenschaft aktualisieren Sie die Zahl auf dem Anwendungskennzeichen in iOS.
Zahl auf dem iOS-Kennzeichensymbol | Android-Mitteilungsnummer |
---|---|
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:
MyNotification.FireDate := EncodeDateTime(2015, 12, 16, 17, 30, 00, 00);
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:
MyNotification.FireDate := Now + EncodeTime(0, 1, 30, 0);
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:
MyNotification.RepeatInterval := TRepeatInterval.Hour;
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:
- Ziehen Sie in der Projektverwaltung die Tondatei auf dem Namen Ihres Projekts, und bestätigen Sie, dass Sie diese Datei hinzufügen möchten.
- Geben Sie in Projekt > Bereitstellung die richtigen Remote-Pfade der Datei für die verschiedenen Plattformen an.
- iOS:
.\
- iOS:
- Geben Sie den benutzerdefinierten Tonnamen an, und legen Sie
SoundName
der Plattform entsprechend fest.
{$IFDEF IOS}
MyNotification.SoundName := 'nameOfSound.caf';
{$ENDIF}
#if defined(_PLAT_IOS)
myNotification->SoundName = "nameOfSound.caf";
#endif
- Hinweis: Laut der iOS-Dokumentation sollte die Tondatei die Dateierweiterung
aiff
,wav
odercaf
haben.
Achten Sie darauf, Ihrem Projekt die richtige Unit hinzuzufügen:
System.IOUtils;
.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:
if ANotification.Name='ProcessCompleted' then
ShowMessage('The process is completed.');
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.
MyNotification.HasAction := True;
MyNotification.AlertAction := 'Open App';
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.
NotificationCenter1.ScheduleNotification(MyNotification);
NotificationCenter1->ScheduleNotification(MyNotification);
PresentNotification
PresentNotification zeigt die Mitteilung sofort an, unabhängig vom Wert von FireDate.
NotificationCenter1.PresentNotification(MyNotification);
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.
NotificationCenter1.CancelNotification('MyNotificationName');
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.
NotificationCenter1.CancelAll;
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:
- Erstellen Sie eine Instanz von TNotification mit dem gleichen
Namen
wie die zu aktualisierende Mitteilung. - Konfigurieren Sie die neue Instanz mit den gewünschten Einstellungen.
- 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
- Verwenden der OS X-Mitteilungszentrale
- Mobile-Tutorial: Verwenden von Mitteilungen (iOS und Android)
- Push-Benachrichtigungen
- System.Notification.TNotification
- System.Notification.TNotificationCenter
Codebeispiele
- FireMonkey Send Cancel Notification (EN) (Beispiel)
- FireMonkey Android Notification Service (EN) (Beispiel)
- FireMonkey Set Reset Badge Number (EN) (Beispiel)
- OSX Dock Badges (EN) (Delphi)
- FireMonkey Notification Mac (EN) (Delphi)
- FireMonkey Notification Mac (EN) (C++)