我已经为我的Xamarin.Forms UWP应用实现了推送通知功能,我可以接收通知,然后弹出祝酒词。我正在使用下面的代码。
//This method is triggered when a user taps/clicks the notification
private void Toast_Activated(ToastNotification sender, object args)
{
ToastActivatedEventArgs targs = (ToastActivatedEventArgs)args;
var xml = sender.Content.GetXml();
XmlDocument xDoc = new XmlDocument();
xDoc.LoadXml(xml);
XmlNodeList txts = xDoc.GetElementsByTagName("text");
var sitid = txts[0].InnerText;
var id = sitid.Substring(sitid.LastIndexOf(':') + 1);
Debug.WriteLine("Id:" + id);
}
当用户点击/点击通知时,我想从我的PCL项目中打开一个特定页面,并将此id
变量作为参数传递。我怎样才能做到这一点 ?任何帮助将不胜感激。
答案 0 :(得分:1)
使用ServiceLocator或其他任何dependency injection框架来调用您的导航服务。
如果您想使用内置的Xamarin表单,请参阅此处 - http://developer.xamarin.com/guides/cross-platform/xamarin-forms/dependency-service/
基本上你定义了一个
的接口public interface INavigationService
{
void NavigateTo(String pageKey);
}
然后你创建一个新类
public class NavigationService: INavigationService
{
private NavigationPage _navPage;
public void Initialize(NavigationPage navPage)
{
_navPage = navPage;
}
public void NavigateTo(String pageKey)
{
// Get Page from pageKey
_navPage.PushAsync(page);
}
}
如果你想看看它是如何在MVVMLight中完成的,你可以看一下:http://www.mvvmlight.net/doc/nav1.cshtml
您可以根据需要使用ServiceLocator或其他来获取导航服务,无论是否使用本机代码。
OR
另一种方法是您依赖注入另一个服务类型并从Forms内部加载另一个类。然后你只需将动作传递给它,它就可以在你进入Forms时执行导航。
我已将此tutorial用于您的目的,我希望能帮助您