Я рекомендую прочесть о новом шаблоне дизайна. Apple имеет пост iOS 10+ для Пользовательские уведомления
Старые удаленные уведомления всегда обрабатывались протоколом / интерфейсом UIApplicationDelegate
итак как ваш класс AppDelegate
по умолчанию реализует этот протокол, обычной практикой является обработка входящих удаленных уведомлений оттуда с устаревшим
application:didReceiveRemoteNotification:fetchCompletionHandler:
.
В iOS 10+ Apple абстрагировала уведомления в инфраструктуру UNUserNotificationCenter
, и чтобы назначить делегата, вы должны назначить UNUserNotificationCenter.Current.Delegate
либо для пользовательского класса, который подкачивает из UserNotificationCenterDelegate
, либо, как я,Заставьте свой AppDelegate
реализовать интерфейс и обрабатывать вещи там.
Вот как я мог бы реализовать вещи в Xamarin.iOS
:
using Foundation
using UIKit;
using UserNotifications;
public class AppDelegate : UIApplicationDelegate, IUNUserNotificationCenterDelegate
{
public override UIWindow Window { get; set; }
public override bool FinishedLaunching(UIApplication application, NSDictionary launchOptions)
{
UNUserNotificationCenter.Current.Delegate = this;
return true;
}
[Export("userNotificationCenter:didReceiveNotificationResponse:withCompletionHandler:")]
public void DidReceiveNotificationResponse(UNUserNotificationCenter center, UNNotificationResponse response, System.Action completionHandler)
{
//Handle Notification if user interacts with notification in Notification Center of iOS.
}
[Export("userNotificationCenter:willPresentNotification:withCompletionHandler:")]
public void WillPresentNotification(UNUserNotificationCenter center, UNNotification notification, System.Action<UNNotificationPresentationOptions> completionHandler)
{
//Handle Notification if app is in the foreground when recieved.
}
}
Конечно, вы захотите взглянуть на User Notifications framework, чтобы увидеть, как реализоватьклассы, такие как UNNotification
и UNNotification
, если вы не знакомы с этими классами.