Partager via


Gestion des notifications dans Xamarin.iOS

Dans iOS 12, le système d’exploitation peut établir un lien profond entre le Centre de notification et l’application Paramètres à l’écran de gestion des notifications d’une application. Cet écran doit permettre aux utilisateurs de refuser et de désactiver les différents types de notifications envoyées par l’application.

Écran de gestion des notifications

Dans l’exemple d’application, ManageNotificationsViewController définit une interface utilisateur qui permet aux utilisateurs d’activer et de désactiver indépendamment les notifications rouges et les notifications vertes. Il s’agit d’une norme UIViewController contenant un UISwitch pour chaque type de notification. Basculez le commutateur pour l’un ou l’autre type d’enregistrement de notification, dans les valeurs par défaut de l’utilisateur, la préférence de l’utilisateur pour ce type de notification :

partial void HandleRedNotificationsSwitchValueChange(UISwitch sender)
{
    NSUserDefaults.StandardUserDefaults.SetBool(sender.On, RedNotificationsEnabledKey);
}

Remarque

L’écran de gestion des notifications case activée également si l’utilisateur a complètement désactivé les notifications pour l’application. Si c’est le cas, il masque les bascules pour les types de notification individuels. Pour ce faire, l’écran de gestion des notifications :

  • Appelle UNUserNotificationCenter.Current.GetNotificationSettingsAsync et examine la AuthorizationStatus propriété.
  • Masque les bascules pour les types de notification individuels si les notifications ont été complètement désactivées pour l’application.
  • Re-case activée si les notifications ont été désactivées chaque fois que l’application passe au premier plan, car l’utilisateur peut activer/désactiver des notifications dans iOS Paramètres à tout moment.

La classe de l’exemple d’applicationViewController, qui envoie les notifications, case activée la préférence de l’utilisateur avant d’envoyer une notification locale pour s’assurer que la notification est d’un type que l’utilisateur souhaite réellement recevoir :

partial void HandleTapRedNotificationButton(UIButton sender)
{
    bool redEnabled = NSUserDefaults.StandardUserDefaults.BoolForKey(ManageNotificationsViewController.RedNotificationsEnabledKey);
    if (redEnabled)
    {
        // ...

Liens profonds iOS vers l’écran de gestion des notifications d’une application à partir du Centre de notification et des paramètres de notification de l’application dans l’application Paramètres. Pour faciliter cela, une application doit :

  • Indiquez qu’un écran de gestion des notifications est disponible en passant UNAuthorizationOptions.ProvidesAppNotificationSettings à la demande d’autorisation de notification de l’application.
  • Implémentez la OpenSettings méthode à partir de IUNUserNotificationCenterDelegate.

Requête d’autorisation

Pour indiquer au système d’exploitation qu’un écran de gestion des notifications est disponible, une application doit transmettre l’option UNAuthorizationOptions.ProvidesAppNotificationSettings (ainsi que les autres options de remise de notification dont elle a besoin) à la méthode sur le RequestAuthorizationUNUserNotificationCenter.

Par exemple, dans l’exemple d’application AppDelegate:

public override bool FinishedLaunching(UIApplication application, NSDictionary launchOptions)
{
    // Request authorization to send notifications
    UNUserNotificationCenter center = UNUserNotificationCenter.Current;
    var options = UNAuthorizationOptions.ProvidesAppNotificationSettings | UNAuthorizationOptions.Alert | UNAuthorizationOptions.Sound | UNAuthorizationOptions.Provisional;
    center.RequestAuthorization(options, (bool success, NSError error) =>
    {
        // ...

Open Paramètres méthode

La OpenSettings méthode, appelée par le système pour établir un lien profond vers l’écran de gestion des notifications d’une application, doit naviguer directement vers cet écran.

Dans l’exemple d’application, cette méthode effectue le segue au ManageNotificationsViewController cas échéant :

[Export("userNotificationCenter:openSettingsForNotification:")]
public void OpenSettings(UNUserNotificationCenter center, UNNotification notification)
{
    var navigationController = Window.RootViewController as UINavigationController;
    if (navigationController != null)
    {
        var currentViewController = navigationController.VisibleViewController;
        if (currentViewController is ViewController)
        {
            currentViewController.PerformSegue(ManageNotificationsViewController.ShowManageNotificationsSegue, this);
        }

    }
}