有没有办法启用推送通知,以便当用户单击它时,它会将他们带到与通知显示的内容相关的页面?

Posted

技术标签:

【中文标题】有没有办法启用推送通知,以便当用户单击它时,它会将他们带到与通知显示的内容相关的页面?【英文标题】:Is there a way to enable a push notification so that when a user clicks it, it brings them to a page related to what the notification showed? 【发布时间】:2015-07-28 04:04:47 【问题描述】:

我的 Asp.net MVC 向我的 WP8 应用程序发送推送通知。通知显示特定数据的名称。例如,在特定日期,它将从我的 Sql Server 数据库中发送一条记录的名称,例如“aName”。因此,当天通知显示为“aName”。第二天它用不同的名字“bName”做同样的事情。

我希望用户能够单击通知并将其带到详细信息页面,该页面显示与单击通知时出现在通知上的名称相关的数据。您认为最好的方法是什么?

【问题讨论】:

只需在通知中添加一个参数,您就可以从您的应用程序中处理它。看看这里Deep linking to a screen using toast notifications 【参考方案1】:

您可以通过 toast 通知向您的应用发送参数。然后,您的应用可以检查此参数并显示包含一些详细信息的特定页面。在我们的 toasts 中,我们发送一个带有参数的 uri,如下例所示:

var toastmsg = String.Format("<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
    "<wp:Notification xmlns:wp=\"WPNotification\"><wp:Toast>" +
    "<wp:Text1>0</wp:Text1>" +
    "<wp:Text2>1</wp:Text2>" +
    "<wp:Param>2</wp:Param>" +
    "</wp:Toast>" +
    "</wp:Notification>", "title", "message", "myuri");

URI 示例:/mynotification/myaction?param=aName

在您的 WindowsPhone 应用程序中,您可以定义一个自定义 UriMapper,如下面的 sn-p:

public class MyCustomUriMapper : UriMapperBase

    public override Uri MapUri(Uri uri)
    
        var tempUri = System.Net.HttpUtility.UrlDecode(uri.ToString());

        if (tempUri.StartsWith("/mynotification"))
        
            // Check your uri param and redirect to a page with uri
            // or set some properties to check in your MainPage
        

    

然后在你的 App.xaml.cs 的构造函数中设置 UriMapper:

// Assign the URI-mapper class to the application frame.
RootFrame.UriMapper = new MyCustomUriMapper();

这就是我们使用通知在应用中导航的方式。我们不想在通知内容中设置 Page-Xaml-FileName,因为它们会随着时间而改变。

【讨论】:

以上是关于有没有办法启用推送通知,以便当用户单击它时,它会将他们带到与通知显示的内容相关的页面?的主要内容,如果未能解决你的问题,请参考以下文章

当用户明确杀死应用程序时,有没有办法调用函数?

单击时,Phonegap 推送通知重定向到应用程序中的特定页面

在 UIAlert 视图中显示推送通知文本

反正有保存推送通知吗?

在应用程序中推送通知

如何允许用户在阻止后启用推送通知?