Englisch version   English version


Example Extended Notification Test

The example creates this notification

with an extensive range of functions. The app has a button for creating and deleting the notification:

Die Schaltflächen Create Notification (cmdCreate) und Remove Notification (cmdRemove) werden dem Anzeigezustand der Benachrichtigung entsprechend freigegeben.

Bei der Benachrichtigung sind vier Aktionen hinterlegt: Das Antippen der Benachrichtigung und drei Aktionsschaltflächen. Jede Aktion ist über einen Intent definiert.

Funktionen der Benachrichtigung

Body Das Antippen der Benachrichtigung hat keine Wirkung.  
Open Urs

Die Adresse https://ullisroboterseite.de wird im Browser geöffnet.

Raise Event

Das Ereignis UrsNotification.OnClick wird ausgelöst. Das Gerät vibriert für 500 ms.

 
Launch Screen 'Notification'

Der Screen 'Notification' wird geöffnet.

Wischen (nach Rechts)

Die Benachrichtigung wird gelöscht und das Ereignis UrsNotification.UserCanceled wird ausgelöst.

Komponenten

In dem Projekt sind folgende Instanzen der Komponenten angelegt.

  Typ Name Funktion
UrsAI2NotificationChannel Channel Benachrichtigungskanal.
UrsNotification Notification Die eigentliche Benachrichtigung.
UrsNotification NotificationDestroyed Benachrichtigung, die nach dem Schließen der App angezeigt werden soll.
UrsIntent IntentNone Keine Aktion.
UrsIntent IntentOpenUrs Ullis Roboter Seite im Browser öffnen. Funktioniert auch bei geschlossener App.
UrsIntent IntentRaiseEvent Das Ereignis Notification.OnClick auslösen. Funktioniert nur solange die App geöffnet ist (Vordergrund oder Hintergrund).
UrsIntent IntentScreenNotification Den Screen Notification der App öffnen. Funktioniert auch bei geschlossener App.

Das Auslösen des Ereignisses UrsNotification.OnClick funktioniert nicht, wenn der zugehörige Screen geschlossen ist. Nach dem Schließen des Screens (hier Screen1, also die App) soll die zugehörige Aktionsschaltfläche nicht mehr angezeigt werden. Leider erlaubt es der App Inventor nicht, das Activity.onDestroy-Ereignis an die App weiter zu geben. Diese hat also keine Möglichkeit, die Benachrichtigung entsprechend abzuändern. Deshalb wird über die Funktion UrsNotification.SetOnDestroyAction eine passende Benachrichtigung registriert, die angezeigt wird, wenn die App geschlossen wird. Zu beachten ist, dass die intern notwendig Objekte zum Zeitpunkt des Aufrufs dieser Funktion erstellt werden1). Wenn nachträglich Änderungen am übergebenen UrsNotificationObject oder UrsIntentObject vorgenommen werden sollen, muss die Funktion erneut aufgerufen werden. Ansonsten hätte die Änderung keine Wirkung.

1) Wenn die App aus der App-Übersicht (Historie) geschlossen wird, steht nur begrenzte Zeit und ein begrenzter Funktionsumfang zur Verfügung (Test mit Version Android Oreo, 8.1). Dieser reicht nicht aus, um die Objekte zum Zeitpunkt des Schließen zu erstellen.

Code

Beim Initialisieren des Screens werden die Aktionsschaltflächen den Benachrichtigungsobjekten hinzugefügt. NotificationDestroyed erhält eine Schaltfläche weniger. Die rote Farbe der ersten Schaltfläche wird durch ein Hypertext-Tag erreicht.

Notification.SetOnDestroyAction legt fest, das beim Schließen der App die über NotificationDestroyed definierte Benachrichtigung angezeigt wird. NotificationDestroyed und Notification haben die gleiche ID (Feld NumberID). NotificationDestroyed wird Notification ersetzen. NotificationDestroyed würde auch dann angezeigt werden, wenn Notification nicht angezeigt wurde oder bereit gelöscht ist. Um das zu verhindern, wird SetOnDestroyAction erst dann aufgerufen, wenn die Notification wirklich angezeigt wird. Wenn erkannt wird, dass die Benachrichtigung gelöscht wurde, wird auch NotificationDestroyed wieder entfernt.

Die Schaltflächen Create Notification (cmdCreate) und Remove Notification (cmdRemove) werden dem Anzeigezustand der Benachrichtigung entsprechend freigegeben.

Zum Schluss wird das Benachrichtigungsfenster geöffnet, so dass man die erstellte Benachrichtigung direkt ansehen kann.

Die Schaltfläche cmdRemove löscht sowohl die angezeigte Benachrichtigung als auch die Benachrichtigung, die beim Schließen der App angezeigt werden soll.

Wenn der Anwender die Benachrichtigung löscht, muss auch die Benachrichtigung, die beim Schließen der App angezeigt werden soll, entfernt werden. Dass der Anwender die Nachricht gelöscht hat, wird auf der Benutzeroberfläche angezeigt.

Der Action-Button Raise Event löst das Ereignis OnClick aus.