当用户点击 Xamarin Forms 应用程序中的本地通知时如何导航到特定页面?
How to navigate to a particular page when user taps on a Local Notification in Xamarin Forms app?
您好,我正在开发 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) 如何随页面导航一起传递参数。
有人可以帮我解决这个问题吗?
使用 MessagingCenter,为 MessagingCenter.Send 设置 ContentPage 类型或 url,然后 MessagingCenter.Subscribe 并加载
对于 1:
您想推送到一个新页面,但您所做的是替换应用的主页面。请尝试 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 将在您调用 MessagingCenter.Send<object, string>(this, "Push", "01");
时触发
这里的字符串01就是我要推送的ID
对于 2:
在我推送到一个新页面之前,我在这个页面定义了一个名为FavoriteID
的属性,然后我使用上面的方法传递字符串。
您好,我正在开发 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) 如何随页面导航一起传递参数。 有人可以帮我解决这个问题吗?
使用 MessagingCenter,为 MessagingCenter.Send 设置 ContentPage 类型或 url,然后 MessagingCenter.Subscribe 并加载
对于 1:
您想推送到一个新页面,但您所做的是替换应用的主页面。请尝试 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 将在您调用 MessagingCenter.Send<object, string>(this, "Push", "01");
时触发
这里的字符串01就是我要推送的ID
对于 2:
在我推送到一个新页面之前,我在这个页面定义了一个名为FavoriteID
的属性,然后我使用上面的方法传递字符串。