Freigeben über


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:

Das Benachrichtigungscenter

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);

Bestätigen der Möglichkeit zum Senden einer lokalen Benachrichtigung

Um eine lokale Benachrichtigung zu planen, erstellen Sie ein UILocalNotification Objekt, legen Sie es FireDatefest, 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:

Beispielwarnung

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.LaunchOptionsLocalNotificationKeyenthä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 alertSchlüssel badgeund 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.