Xamarin表单UWP推送通知单击

时间:2017-09-20 11:03:43

标签: c# xamarin xamarin.forms uwp xamarin.uwp

我已经为我的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变量作为参数传递。我怎样才能做到这一点 ?任何帮助将不胜感激。

1 个答案:

答案 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用于您的目的,我希望能帮助您