Passo a passo: usar notificações locais no Xamarin.iOS

Nesta seção, explicaremos como usar notificações locais em um aplicativo Xamarin.iOS. Ele demonstrará os conceitos básicos de criação e publicação de uma notificação que exibirá um alerta quando recebido pelo aplicativo.

Importante

As informações nesta seção pertencem ao iOS 9 e anteriores, foi deixado aqui para suportar versões mais antigas do iOS. Para iOS 10 e posterior, consulte o guia da Estrutura de Notificação do Usuário para oferecer suporte à Notificação Local e Remota em um dispositivo iOS.

Passo a passo

Vamos criar um aplicativo simples que mostrará notificações locais em ação. Este aplicativo terá um único botão nele. Quando clicamos no botão, ele criará uma notificação local. Após o período de tempo especificado ter decorrido, veremos a notificação aparecer.

  1. No Visual Studio para Mac, crie uma nova solução iOS de Modo de Exibição Único e chame-a Notificationsde .

  2. Abra o Main.storyboard arquivo e arraste um botão para a Exibição. Nomeie o botão de botão e dê a ele o título Adicionar notificação. Você também pode definir algumas restrições para o botão neste ponto: Definindo algumas restrições no botão

  3. Edite a ViewController classe e adicione o seguinte manipulador de eventos ao método ViewDidLoad:

    button.TouchUpInside += (sender, e) =>
    {
        // create the notification
        var notification = new UILocalNotification();
    
        // set the fire date (the date time in which it will fire)
        notification.FireDate = NSDate.FromTimeIntervalSinceNow(60);
    
        // configure the alert
        notification.AlertAction = "View Alert";
        notification.AlertBody = "Your one minute alert has fired!";
    
        // modify the badge
        notification.ApplicationIconBadgeNumber = 1;
    
        // set the sound to be the default sound
        notification.SoundName = UILocalNotification.DefaultSoundName;
    
        // schedule it
        UIApplication.SharedApplication.ScheduleLocalNotification(notification);
    };
    

    Esse código criará uma notificação que usa um som, define o valor do selo de ícone como 1 e exibe um alerta para o usuário.

  4. Em seguida, edite o arquivo AppDelegate.cs, primeiro adicione o seguinte código ao FinishedLaunching método. Verificamos se o dispositivo está executando o iOS 8, se assim for, somos obrigados a pedir a permissão do usuário para receber notificações:

    if (UIDevice.CurrentDevice.CheckSystemVersion (8, 0)) {
        var notificationSettings = UIUserNotificationSettings.GetSettingsForTypes (
            UIUserNotificationType.Alert | UIUserNotificationType.Badge | UIUserNotificationType.Sound, null
        );
    
        application.RegisterUserNotificationSettings (notificationSettings);
    }
    
  5. Ainda no AppDelegate.cs, adicione o seguinte método que será chamado quando uma notificação for recebida:

    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));
    
        UIApplication.SharedApplication.KeyWindow.RootViewController.PresentViewController(okayAlertController, true, null);
    
        // reset our badge
        UIApplication.SharedApplication.ApplicationIconBadgeNumber = 0;
    }
    
  6. Precisamos lidar com o caso em que a notificação foi lançada por causa de uma notificação local. Edite o AppDelegate método FinishedLaunching no para incluir o seguinte trecho de código:

    // check for a notification
    
    if (launchOptions != null)
    {
        // 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;
            }
        }
    }
    
  7. Finalmente, execute o aplicativo. No iOS 8, você será solicitado a permitir notificações. Clique em OK e, em seguida, clique no botão Adicionar notificação . Após uma breve pausa, você verá a caixa de diálogo de alerta, conforme mostrado nas seguintes capturas de tela:

    Confirmando a capacidade de enviar notificaçõesO botão Adicionar notificaçãoA caixa de diálogo de alerta de notificação

Resumo

Este passo a passo mostrou como usar as várias APIs para criar e publicar notificações no iOS. Ele também demonstrou como atualizar o ícone do aplicativo com um selo para fornecer algum feedback específico do aplicativo para o usuário.