Xamarin. ios firebase pu sh уведомление о проблеме с кликом - PullRequest
0 голосов
/ 18 апреля 2020

У меня есть приложение xamarin.forms, в котором реализованы уведомления firebase pu sh. В настоящее время я играю с частью ios. Я могу получать уведомления, когда приложение находится на переднем плане, в фоне и убито. Проблема заключается в обработке клика по уведомлению. Я пытаюсь вызвать метод MessagingCenter из DidReceiveNotificationResponse, чтобы открыть страницу содержимого (страницу сведений об уведомлении в формах). У меня есть два сомнения

  1. Я обрабатываю только щелчок уведомления методом DidReceiveNotificationResponse. Я могу обработать уведомление от этого метода. В настоящее время я тестирую на Iphone с ios 12.4.6. Есть ли какие-либо дополнительные действия для обработки уведомлений в более низких версиях ОС? Или этого достаточно для всех версий ОС?

  2. Как обработать щелчок уведомления, когда приложение находится в закрытом или прерванном состоянии? В настоящее время приложение перейдет на мою указанную страницу 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 оно всегда будет ложным. Как решить эти проблемы?

1 Ответ

0 голосов
/ 20 апреля 2020

C# версия для решения в этой теме

В вашем iOS проекте:

public override bool FinishedLaunching(UIApplication app, NSDictionary options)
{

    //if (launchOptions?[UIApplicationLaunchOptionsKey.remoteNotification]) != nil {
    //    // check the userInfo and take the needed action
    //}

    if (options != null)
    {
        NSObject result;
        if (options.TryGetValue(UIApplication.LaunchOptionsRemoteNotificationKey, out result))
        {
            //Get remoteNotification
        }
    }

    global::Xamarin.Forms.Forms.Init();
    LoadApplication(new App());

    return base.FinishedLaunching(app, options);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...