다음을 통해 공유


Xamarin.iOS의 알림 관리

iOS 12에서 운영 체제는 알림 센터 및 설정 앱에서 앱의 알림 관리 화면으로 딥 링크할 수 있습니다. 이 화면에서는 사용자가 앱에서 보내는 다양한 유형의 알림을 옵트인 및 옵트아웃할 수 있습니다.

알림 관리 화면

샘플 앱 ManageNotificationsViewController 에서 사용자가 빨간색 알림 및 녹색 알림을 독립적으로 사용하거나 사용하지 않도록 설정할 수 있는 사용자 인터페이스를 정의합니다. 표준입니다. UIViewController 에는 각 알림 유형에 대한 항목이 UISwitch 포함되어 있습니다. 두 유형의 알림 저장에 대한 스위치를 전환하면 기본적으로 해당 유형의 알림에 대한 사용자의 기본 설정이 저장됩니다.

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

참고 항목

알림 관리 화면은 사용자가 앱에 대한 알림을 완전히 사용하지 않도록 설정했는지 여부도 검사. 이 경우 개별 알림 유형에 대한 토글을 숨깁니다. 이렇게 하려면 알림 관리 화면:

  • 속성을 호출 UNUserNotificationCenter.Current.GetNotificationSettingsAsync 하고 검사합니다 AuthorizationStatus .
  • 앱에 대한 알림이 완전히 비활성화된 경우 개별 알림 유형에 대한 토글을 숨깁니다.
  • 사용자가 언제든지 iOS 설정 알림을 사용하거나 사용하지 않도록 설정할 수 있으므로 애플리케이션이 포그라운드로 이동할 때마다 알림이 비활성화되었는지 여부를 다시 검사.

알림을 보내는 샘플 앱의 ViewController 클래스는 알림이 사용자가 실제로 수신하려는 형식인지 확인하기 위해 로컬 알림을 보내기 전에 사용자의 기본 설정을 검사.

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

알림 센터에서 앱의 알림 관리 화면과 설정 앱의 앱 알림 설정에 대한 iOS 딥 링크입니다. 이를 용이하게 하려면 앱은 다음을 수행해야 합니다.

  • 앱의 알림 권한 부여 요청에 전달 UNAuthorizationOptions.ProvidesAppNotificationSettings 하여 알림 관리 화면을 사용할 수 있음을 나타냅니다.
  • 에서 IUNUserNotificationCenterDelegate메서드를 OpenSettings 구현합니다.

권한 부여 요청

운영 체제에 알림 관리 화면을 사용할 수 있음을 나타내려면 앱이 필요한 다른 알림 배달 옵션과 함께 옵션을 메서드에 UNUserNotificationCenter전달 UNAuthorizationOptions.ProvidesAppNotificationSettings 해야 합니다RequestAuthorization.

예를 들어 샘플 앱의 경우: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설정 메서드

시스템에서 앱의 알림 관리 화면에 대한 딥 링크를 호출하는 메서드는 OpenSettings 사용자를 해당 화면으로 직접 탐색해야 합니다.

샘플 앱에서 이 메서드는 필요한 경우 segue를 ManageNotificationsViewController 수행합니다.

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

    }
}