Benachrichtigungen in Xamarin.iOS
Wichtig
Die Informationen in diesem Abschnitt beziehen sich auf iOS 9 und früher. Informationen zu iOS 10 und höher finden Sie im Leitfaden zum Benutzerbenachrichtigungsframework.
iOS verfügt über drei Möglichkeiten, dem Benutzer anzugeben, dass eine Benachrichtigung empfangen wurde:
- Sound oder Vibration – iOS kann einen Sound wiedergeben, um Benutzer zu benachrichtigen. Wenn der Sound deaktiviert ist, kann das Gerät so konfiguriert werden, dass er vibriert.
- Warnungen – Es ist möglich, ein Dialogfeld auf dem Bildschirm mit Informationen zur Benachrichtigung anzuzeigen.
- Badges – Wenn eine Benachrichtigung veröffentlicht wird, kann eine Zahl auf dem Anwendungssymbol angezeigt werden (signaliert).
iOS stellt außerdem ein Benachrichtigungscenter bereit, in dem alle Benachrichtigungen sowohl lokal als auch remote für den Benutzer angezeigt werden. Benutzer können darauf zugreifen, indem Sie vom oberen Bildschirmrand nach unten wischen:
Erstellen lokaler Benachrichtigungen in iOS
iOS macht es recht einfach, lokale Benachrichtigungen zu erstellen und zu verarbeiten. Zunächst erfordert iOS 8, dass Anwendungen die Berechtigung des Benutzers zum Anzeigen von Benachrichtigungen anfordern. Fügen Sie Ihrer App den folgenden Code hinzu, bevor Sie versuchen, eine lokale Benachrichtigung zu senden, in der Regel in der FinishedLaunching-Methode von AppDelegate:
var notificationSettings = UIUserNotificationSettings.GetSettingsForTypes(
UIUserNotificationType.Alert | UIUserNotificationType.Badge | UIUserNotificationType.Sound, null
);
application.RegisterUserNotificationSettings(notificationSettings);
Um eine lokale Benachrichtigung zu planen, erstellen Sie ein UILocalNotification
Objekt, legen Sie es FireDate
fest, und planen Sie es über die ScheduleLocalNotification
Methode für das UIApplication.SharedApplication
Objekt. Der folgende Codeausschnitt zeigt, wie Sie eine Benachrichtigung planen, die in Zukunft eine Minute auslöst und eine Benachrichtigung mit einer Meldung anzeigt:
UILocalNotification notification = new UILocalNotification();
notification.FireDate = NSDate.FromTimeIntervalSinceNow(15);
//notification.AlertTitle = "Alert Title"; // required for Apple Watch notifications
notification.AlertAction = "View Alert";
notification.AlertBody = "Your 15 second alert has fired!";
UIApplication.SharedApplication.ScheduleLocalNotification(notification);
Der folgende Screenshot zeigt, wie diese Warnung aussieht:
Beachten Sie, dass, wenn der Benutzer sich entschieden hat, Benachrichtigungen nicht zuzulassen, nichts angezeigt wird.
Wenn Sie ein Signal auf das Anwendungssymbol mit einer Zahl anwenden möchten, können Sie es wie im folgenden Zeilencode dargestellt festlegen:
notification.ApplicationIconBadgeNumber = 1;
Um einen Sound mit dem Symbol wiederzugeben, legen Sie die SoundName-Eigenschaft für die Benachrichtigung fest, wie im folgenden Codeausschnitt gezeigt:
notification.SoundName = UILocalNotification.DefaultSoundName;
Wenn der Benachrichtigungssound länger als 30 Sekunden ist, gibt iOS stattdessen den Standardsound wieder.
Wichtig
Im iOS-Simulator gibt es einen Fehler, der die Stellvertretungsbenachrichtigung zweimal auslöst. Dieses Problem sollte nicht auftreten, wenn die Anwendung auf einem Gerät ausgeführt wird.
Behandeln von Benachrichtigungen
iOS-Anwendungen verarbeiten Remote- und lokale Benachrichtigungen nahezu auf die gleiche Weise. Wenn eine Anwendung ausgeführt wird, wird die ReceivedLocalNotification
Methode oder die ReceivedRemoteNotification
Methode für die AppDelegate
Klasse aufgerufen, und die Benachrichtigungsinformationen werden als Parameter übergeben.
Eine Anwendung kann eine Benachrichtigung auf unterschiedliche Weise behandeln. Beispielsweise zeigt die Anwendung möglicherweise nur eine Warnung an, um Benutzer an ein bestimmtes Ereignis zu erinnern. Oder die Benachrichtigung kann verwendet werden, um dem Benutzer eine Benachrichtigung anzuzeigen, dass ein Prozess abgeschlossen ist, z. B. die Veröffentlichung von Dateien auf einem Server.
Der folgende Code zeigt, wie Sie eine lokale Benachrichtigung behandeln und eine Warnung anzeigen und die Signalnummer auf Null zurücksetzen:
public override void ReceivedLocalNotification(UIApplication application, UILocalNotification notification)
{
// show an alert
UIAlertController okayAlertController = UIAlertController.Create(notification.AlertAction, notification.AlertBody, UIAlertControllerStyle.Alert);
okayAlertController.AddAction(UIAlertAction.Create("OK", UIAlertActionStyle.Default, null));
Window.RootViewController.PresentViewController(okayAlertController, true, null);
// reset our badge
UIApplication.SharedApplication.ApplicationIconBadgeNumber = 0;
}
Wenn die Anwendung nicht ausgeführt wird, gibt iOS den Sound wieder und/oder aktualisiert das Symbolsignal entsprechend. Wenn der Benutzer die mit der Warnung verknüpfte Anwendung startet, wird die Anwendung gestartet, und die FinishedLaunching
Methode für den App-Delegaten wird aufgerufen, und die Benachrichtigungsinformationen werden über den launchOptions
Parameter übergeben. Wenn das Optionswörterbuch den Schlüssel UIApplication.LaunchOptionsLocalNotificationKey
enthält, weiß die AppDelegate
Anwendung, dass die Anwendung über eine lokale Benachrichtigung gestartet wurde. Der folgende Codeausschnitt veranschaulicht diesen Prozess:
// check for a local notification
if (launchOptions.ContainsKey(UIApplication.LaunchOptionsLocalNotificationKey))
{
var localNotification = launchOptions[UIApplication.LaunchOptionsLocalNotificationKey] as UILocalNotification;
if (localNotification != null)
{
UIAlertController okayAlertController = UIAlertController.Create(localNotification.AlertAction, localNotification.AlertBody, UIAlertControllerStyle.Alert);
okayAlertController.AddAction(UIAlertAction.Create("OK", UIAlertActionStyle.Default, null));
Window.RootViewController.PresentViewController(okayAlertController, true, null);
// reset our badge
UIApplication.SharedApplication.ApplicationIconBadgeNumber = 0;
}
}
Für eine Remotebenachrichtigung launchOptions
wird ein LaunchOptionsRemoteNotificationKey
Zugeordneter mit der Remotebenachrichtigungsnutzlast verwendet NSDictionary
. Sie können die Benachrichtigungsnutzlast über die alert
Schlüssel badge
und sound
die Benachrichtigung extrahieren. Der folgende Codeausschnitt zeigt, wie Remotebenachrichtigungen abgerufen werden:
NSDictionary remoteNotification = options[UIApplication.LaunchOptionsRemoteNotificationKey];
if(remoteNotification != null)
{
string alert = remoteNotification["alert"];
}
Zusammenfassung
In diesem Abschnitt wurde gezeigt, wie Sie eine Benachrichtigung in Xamarin.iOS erstellen und veröffentlichen. Es zeigt, wie eine Anwendung auf Benachrichtigungen reagieren kann, indem sie die ReceivedLocalNotification
Methode oder die Methode in der ReceivedRemoteNotification
AppDelegate
.