Xamarin.iOS에서 알림 관리Notification management in Xamarin.iOS

Ios 12에서 운영 체제에는 알림 센터에서 딥 링크 및 설정 앱에서 앱의 알림 관리 화면을 수 있습니다.In iOS 12, the operating system can deep link from Notification Center and the Settings app to an app's notification management screen. 이 화면을 사용 하는 사용자와 앱에서 다양 한 유형의 알림 보냅니다.This screen should allow users to opt in and out of the various types of notifications the app sends.

샘플 앱: RedGreenNotificationsSample app: RedGreenNotifications

알림 관리 작동 하는 방법의 예제를 보려면 잠시 살펴 합니다 RedGreenNotifications 샘플 앱입니다.To see an example of how notification management works, take a look at the RedGreenNotifications sample app.

이 샘플 앱 – 빨강 및 녹색 – 두 가지 유형의 알림 보냅니다 하 고 참여 하거나 참여 하지 두 종류 할 수 있는 화면을 제공 합니다.This sample app sends two types of notifications – red and green – and provides a screen that allows users to opt in or out of either kind.

이 샘플 앱에서이 가이드에서 코드 조각을 제공 됩니다.Code snippets in this guide come from this sample app.

알림 관리 화면Notification management screen

샘플 앱에서 ManageNotificationsViewController 독립적으로 사용 하도록 설정 하 고 빨간색 알림 및 녹색 알림을 사용 하지 않도록 설정할 수 있는 사용자 인터페이스를 정의 합니다.In the sample app, ManageNotificationsViewController defines a user interface that allows users to independently enable and disable red notifications and green notifications. 이것은 표준 UIViewControllerIt is a standard UIViewController 포함 하는 UISwitch 각 알림 형식에 대 한 합니다.containing a UISwitch for each notification type. 알림의 형식 중 하나에 대 한 스위치를 설정/해제 저장, 사용자 기본값에 해당 알림 유형에 대 한 사용자의 기본 설정:Toggling the switch for either type of notification saves, in user defaults, the user's preference for that type of notification:

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

참고

알림 관리 화면 사용자 앱에 대 한 알림을 완전히 비활성화 여부를 확인 합니다.The notification management screen also checks whether or not the user has completely disabled notifications for the app. 그렇다면 개별 알림 형식에 대 한 토글을 숨깁니다.If so, it hides the toggles for the individual notification types. 이렇게 하려면 알림 관리 화면:To do this, the notification management screen:

  • 호출 UNUserNotificationCenter.Current.GetNotificationSettingsAsync 검사를 AuthorizationStatus 속성입니다.Calls UNUserNotificationCenter.Current.GetNotificationSettingsAsync and examines the AuthorizationStatus property.
  • 앱에 대 한 알림을 완전히 비활성화 된 경우에 대 한 개별 알림 유형 설정/해제를 숨깁니다.Hides the toggles for the individual notification types if notifications have been completely disabled for the app.
  • 다시 하므로 사용자 수 활성화/비활성화 알림 iOS 설정에서에서 언제 든 지 응용 프로그램을 전경에 이동할 때마다 알림을 해제 되었는지 여부를 확인 합니다.Re-checks whether notifications have been disabled each time the application moves to the foreground, since the user can enable/disable notifications in iOS Settings at any time.

샘플 앱의 ViewController 클래스를 수신 하려는 실제로 되도록 알림 형식의 사용자 로컬 알림을 보내기 전에 사용자가 원하는 알림을 확인의 보냅니다.The sample app's ViewController class, which sends the notifications, check's the user's preference before sending a local notification to ensure that the notification is of a type the user actually wants to receive:

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

iOS 딥 링크 앱의 알림 관리 화면으로 알림 센터에서 설정 앱의 앱 알림 설정 합니다.iOS deep links to an app's notification management screen from Notification Center and the app's notification settings in the Settings app. 이 작업을 위해 다음과 같은 앱 같아야 합니다.To facilitate this, an app must:

  • 알림 관리 화면을 전달 하 여 사용할 수 있는지를 나타내는 UNAuthorizationOptions.ProvidesAppNotificationSettings 앱의 알림 인증 요청을 합니다.Indicate that a notification management screen is available by passing UNAuthorizationOptions.ProvidesAppNotificationSettings to the app's notification authorization request.
  • 구현 된 OpenSettings 메서드에서 IUNUserNotificationCenterDelegate 합니다.Implement the OpenSettings method from IUNUserNotificationCenterDelegate.

권한 부여 요청Authorization request

알림 관리 화면을 사용할 수 있는 앱을 전달 해야 하는 운영 체제에 알리기 위해 합니다 UNAuthorizationOptions.ProvidesAppNotificationSettings (함께 다른 알림 배달 옵션 필요) 옵션을 RequestAuthorization 메서드를 UNUserNotificationCenter합니다.To indicate to the operating system that a notification management screen is available, an app should pass the UNAuthorizationOptions.ProvidesAppNotificationSettings option (along with any other notification delivery options it needs) to the RequestAuthorization method on the UNUserNotificationCenter.

샘플 앱의 예를 들어 AppDelegate:For example, in the sample app's 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) =>
    {
        // ...

OpenSettings 메서드OpenSettings method

OpenSettings 딥 링크 앱의 알림 관리 화면을 위해 시스템에서 호출 하는 메서드를 해당 화면으로 직접 사용자를 이동 해야 합니다.The OpenSettings method, called by the system to deep link to an app's notification management screen, should navigate the user directly to that screen.

샘플 앱에서이 메서드를 segue를 수행 합니다 ManageNotificationsViewController 필요한 경우:In the sample app, this method performs the segue to the ManageNotificationsViewController if necessary:

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

    }
}