У меня есть приложение xamarin.forms, в котором реализованы уведомления firebase pu sh. В настоящее время я играю с частью ios. Я могу получать уведомления, когда приложение находится на переднем плане, в фоне и убито. Проблема заключается в обработке клика по уведомлению. Я пытаюсь вызвать метод MessagingCenter
из DidReceiveNotificationResponse
, чтобы открыть страницу содержимого (страницу сведений об уведомлении в формах). У меня есть два сомнения
Я обрабатываю только щелчок уведомления методом DidReceiveNotificationResponse
. Я могу обработать уведомление от этого метода. В настоящее время я тестирую на Iphone с ios 12.4.6
. Есть ли какие-либо дополнительные действия для обработки уведомлений в более низких версиях ОС? Или этого достаточно для всех версий ОС?
Как обработать щелчок уведомления, когда приложение находится в закрытом или прерванном состоянии? В настоящее время приложение перейдет на мою указанную страницу c на всех Scenar ios, но в нерабочем состоянии само приложение после загрузки закроет страницу сведений о сообщении и автоматически перейдет на домашний экран. Как решить эту проблему?
My DidReceiveNotificationResponse
[Export("userNotificationCenter:didReceiveNotificationResponse:withCompletionHandler:")]
public void DidReceiveNotificationResponse(UNUserNotificationCenter center, UNNotificationResponse response, Action
completionHandler)
{
completionHandler();
NSDictionary userInfo = response.Notification.Request.Content.UserInfo;
var a = userInfo[new NSString("user_notification_id")] as NSString;
try
{
var myData = JsonConvert.DeserializeObject(userInfo[new NSString("user_notification_id")] as NSString);
if (myData != null)
{
Settings.NotificationID = myData.ToString();
Settings.NCNotificationStatus = null;
}
}
catch (Exception ex)
{
}
// Managing notification click here
MessagingCenter.Send<Object>(new Object(), "iosNcnotificationTapped");
}
My App.xaml.cs
public partial class App : Application
{
public string Isnotification;
public App(bool hasNotification = false)
{
InitializeComponent();
if (hasNotification)
{
var navPage = new NavigationPage(new LandingPage());
Application.Current.MainPage = navPage;
navPage.Navigation.PushModalAsync(new ChatPage("26"));
}
else
{
var splashPage = new CustomRender.TransitionNavigationPage(new SplashPage());
MainPage = splashPage;
}
MessagingCenter.Subscribe<Object>(this, "iosNcnotificationTapped", async (sender) => {
var navPage = new NavigationPage(new LandingPage());
Application.Current.MainPage = navPage;
await navPage.Navigation.PushModalAsync(new ChatPage("26"));
});
}
protected override void OnStart()
{
}
protected override void OnSleep()
{
}
protected override void OnResume()
{
}
}
Часть hasNotification
предназначена для части android. Для ios оно всегда будет ложным. Как решить эти проблемы?