Я нашел обходной путь для этой проблемы, я не знаю, правильный ли это подход, но он работал для меня.
В Xamarin.iOS, когда приложение запускается, сначала вызываются методы базового класса (т.е. applicationDidFinishLaunching), а затем вызывается часть Xamarin (т.е. FinishedLaunching).
Таким образом, я изменил имена параметров FinishedLaunching, аналогично параметрам базового класса (т. Е. «App» на «uiApplication» и «options» на «launchOptions»), и я получил ключ в словаре launchOptions.
public override bool FinishedLaunching(UIApplication uiApplication, NSDictionary launchOptions)
{
global::Xamarin.Forms.Forms.Init();
isNotificationTapped = false;
if (launchOptions != null) {
if (launchOptions.ContainsKey(UIApplication.LaunchOptionsLocalNotificationKey))
isNotificationTapped = true;
}
LoadApplication(new App());
return base.FinishedLaunching(uiApplication, launchOptions);
}
Когда пользователь запускает приложение с помощью уведомления, выполняется метод FinishedLaunching в AppDelegate, и мы можем проверить словарь launchOptions, чтобы найти событие касания, а также, если приложение находится в фоновом режиме или запущено, а пользователь нажимает на уведомление. затем вызывается метод RecieveLocalNotification в AppDelegate.
public override void ReceivedLocalNotification(UIApplication application, UILocalNotification notification)
{
isNotificationTapped = true;
}
После инициализации значения я сохранил его в UserDefaults с помощью DependencyService