当用户点击Xamarin Forms应用程序中的本地通知时,如何导航到特定页面?

时间:2018-01-18 12:23:12

标签: xamarin xamarin.forms xamarin.ios uilocalnotification localnotification

您好我正在开发一个Xamarin Forms应用程序。我在应用程序中实现了本地通知。通知触发后,单击通知后必须导航到特定页面。 在Appdelegate.cs的iOS项目中,我写了这个方法

    public async  override void ReceivedLocalNotification(UIApplication application, UILocalNotification notification)

当用户点击通知时会触发。在这里,我需要导航到一个页面。在这里,我写了下面的代码行

            App.Current.MainPage  = new NavigationPage(new FavoritesPage());

它正在导航到“收藏夹”页面,但它只显示一个空白页面。 OnNavigatedTo方法不调用FavoritesViewModel,而在Onnavigated中调用一个方法,该方法将id(此id来自通知)作为参数获取特定的收藏 这里有两个问题 1)如何导航到特定页面 2)如何将参数与页面导航一起传递。 有人可以帮我解决这个问题。

2 个答案:

答案 0 :(得分:4)

对于1:

您想要推送到新页面,但您所做的就是更换应用程序的MainPage。请尝试<link href="https://fonts.googleapis.com/css?family=Lobster" rel="stylesheet" type="text/css"> <link rel="stylesheet" href="style.css"> <link href="http://maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css" rel="stylesheet"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"> <link rel="stylesheet" href="https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css"> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.min.js"></script> <div> <div class="ids" id="1" style="float:left; clear:both"> <b style="color: #444444">Date</b> <input id="enterdate" class="duedatetextbox" data-inline = "true" type="text" placeholder="Enter date" tabindex="101" disabled> <div id= "setdate" style = "margin-left:0px;"> </div> </div> <div class="ids" id="2" style="float:left;"> <b style="color: #444444">Time</b> <input class="duedatetextbox" type="text" placeholder="Enter time" tabindex="102"> </div> </div>。您可以在App中订阅PushAsync

MessagingCenter

当您拨打public App () { InitializeComponent(); MainPage = new NavigationPage(new MainPage()); MessagingCenter.Subscribe<object, string>(this, "Push", async (sender, favoriteID) => { var favorite = new FavoritesPage(); favorite.FavoriteID = favoriteID; await (MainPage as NavigationPage).PushAsync(favorite, true); }); } 时,此Lambda会触发 这里的字符串 01 是我要推送的ID。

2:

在推送到新页面之前,我在此页面中定义了一个名为MessagingCenter.Send<object, string>(this, "Push", "01");的属性,然后使用上面的方法传递字符串。

答案 1 :(得分:0)

使用MessagingCenter,为MessagingCenter.Send设置ContentPage类型或网址,然后设置MessagingCenter.Subscribe&amp;负载