【问题标题】:xamarin push notification ios Page navigation not working when push notification click推送通知单击时xamarin推送通知ios页面导航不起作用
【发布时间】:2021-11-14 17:17:12
【问题描述】:

我在 Xamarin 表单中有 azure 推送通知。当收到推送通知时,我需要在我的应用程序中打开一个页面。它在android中工作正常。在 iOS 中,当应用程序打开时它不起作用。当应用程序在后台时,它在 iOS 中的工作发现。

这是我的应用代理代码

public override void DidReceiveRemoteNotification(UIApplication application, NSDictionary userInfo,
   Action<UIBackgroundFetchResult> completionHandler)
    {

        try
        {
            UIApplication.SharedApplication.ApplicationIconBadgeNumber = 0;
            NSError error;
            NSData notification = NSJsonSerialization.Serialize(userInfo["action"], NSJsonWritingOptions.PrettyPrinted, out error);
            string notificationString = NSString.FromData(notification, NSStringEncoding.UTF8).ToString();

            var NotificationObj = JsonConvert.DeserializeObject<NotificationData>(notificationString);
            NotificationService.pushPageName = NotificationObj.Notification[0].PageName.ToString();
            NotificationService.pushAppName = NotificationObj.AppName.ToString();
            NotificationService.OpenPages = NotificationObj.Notification[0].OpenPage;
            NotificationService.Notification = notificationString;

            if (UIApplication.SharedApplication.ApplicationState.Equals(UIApplicationState.Active))
            {
                //App is in foreground. Act on it.
                var application1 = new App(NotificationService.pushPageName, NotificationService.pushAppName, NotificationService.Notification);
                LoadApplication(application1);
            }
            else
            {
              //  var application1 = new App(NotificationService.pushPageName, NotificationService.pushAppName, NotificationService.Notification);
            //    LoadApplication(application1);
            }
        }
        catch (Exception ex)
        {
            //LogInfo.ReportErrorInfo(ex.Message, ex.StackTrace, "AppDelegate-DidReceiveRemoteNotification");

        }
    }

点击推送通知后,我需要再次打开闪屏。

这是 App.cs 代码

     public App(string openPageName, string openAppName,string notification)
    {  
            ServiceContainer.Resolve<IPushNotificationActionService>()
            .ActionTriggered += NotificationActionTriggered;
            InitMainPage(openPageName, openAppName, notification);
    } 

   private void InitMainPage(string pageName,string appName,string notification)
    {
        ServiceContainer.Resolve<IPushNotificationActionService>()
      .ActionTriggered += NotificationActionTriggered;
        PushNotificationActionService.PushNotificationPageName = pageName ;
        PushNotificationActionService.PushNotificationAppName = appName;
        PushNotificationActionService.PushNotificationMessage = notification;
        MainPage = new NavigationPage(new Splash(pageName));
     }

所有方法都在调用并且推送通知数据也在 iOS 中正确加载。但没有导航到 Spalsh Screen。任何人都有解决此问题的想法,请帮助。

【问题讨论】:

标签: ios xamarin.forms push-notification


【解决方案1】:

如果应用程序正在运行,我们不需要用LoadApplication重新加载应用程序,我们可以直接发送消息在App.cs中设置MainPage

iOS

if (UIApplication.SharedApplication.ApplicationState.Equals(UIApplicationState.Active))
{
     MessagingCenter.Send<object>(this,"Hi");
}

表格

public App()
{
    InitializeComponent();

    MainPage = new MainPage();

    MessagingCenter.Subscribe<object>(this, "Hi", (obj) => {
       MainPage = new NavigationPage(new Splash(pageName));
    });
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-29
    • 1970-01-01
    • 2018-03-01
    • 2020-07-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多