当前位置: 首页 > 知识库问答 >
问题:

Xamarin表单UWP推送通知单击

古明煦
2023-03-14

我已经为我的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个答案

史俊德
2023-03-14

使用ServiceLocator或任何其他依赖注入框架调用导航服务。

如果您想使用内置的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);
    }
}

您可以根据需要使用ServiceLocator或其他工具来获取导航服务,不管它是否在本机代码中。

另一种方式是依赖注入另一个服务类型,并从表单内部加载另一个类。然后您只需将操作传递给它,它就可以在您处于表单内部时执行导航。

 类似资料:
  • 通过上面的行,我得到了一个URL,它将在大约一个月内有用。 现在我不可能做的是将推送通知发送到应用程序。 任何关于如何使用Uri和如何将信息发送到它的光我会很高兴,因为我的400错误,那是关于我的post消息的一些错误。 我可以在发布或调试模式下获得推送通知吗? 使用PHP可以完成带有正确Uri的推送通知吗?

  • 我有一个使用Xamarin.Forms的应用程序,针对IOS,Android和WP 8。 我的应用中需要推送通知功能。 我看过<code>pushsharp</code>演示,它似乎很有前途。但我看到的所有代码都是针对每个平台分别编写的。 我希望这件事能在法庭上进行。Forms项目,在App.cs中的某个地方,这样我就不需要重复注册设备的代码,也不需要处理应该如何处理推送通知。 任何帮助都将不胜感

  • 我已经在我的应用程序上实现了推送通知,它们工作得很好。我遇到的问题是,当我点击下拉菜单中的它们时,它们会立即重新加载应用程序。为了解决这个问题,我让应用程序创建了一个新的活动实例。这现在打开了一个新的页面,但当点击从这个新的页面返回时,它有同样的问题,并重新加载整个应用程序。

  • 我想使用按钮单击中的GCM将推送通知从一个设备发送到多个设备。我遵循了GCM的所有流程。我获得了设备的服务器密钥和注册ID,但没有使用GCM获得推送通知。我也在谷歌上搜索过,但没有找到正确的解决方案。 请建议我如何在多设备上发送推送通知。 MAYActivity.java

  • full方法使用不同的方法,但值仍然不会传递给mainActivity。总是有一个空的?