在 C# 中从后端发送 UWP 原始通知

Posted

技术标签:

【中文标题】在 C# 中从后端发送 UWP 原始通知【英文标题】:Send UWP Raw Notification from backend in C# 【发布时间】:2019-01-30 23:52:56 【问题描述】:

我被一个看起来很简单的问题困住了。 一点背景知识:我正在开发一个带有 Xamarin 的应用程序,它是 C# 中的一个后端,并使用 Azure 作为推送通知中心。

我的目标是通过 Azure 通知中心从后端向我的 UWP 应用发送原始通知。徽章、平铺或 toast 通知在我的项目中不是选项,所以我被原始通知卡住了。

应用程序在 Win10 机器上运行并成功注册到通知中心。测试从 Azure 发送通知(任何一种)都有效!

后端也在同一网络中的 Win10 机器上运行。应用程序和后端通过 REST 进行通信(也可以工作)。

现在的问题: 我尝试使用以下代码从后端向 Notification-Hub 发送原始通知:

 var message = "Test";
 Notification notification = new WindowsNotification( message );
 notification.Headers.Add( "X-WNS-Type", @"wns/raw" );
 try
    
      return await _notificationHub.SendNotificationAsync( notification, tag ); ;
    
    catch( Exception e )
    
      System.Diagnostics.Debug.WriteLine( $"===> Notification message \nTO tag could not be sent !!" );
      System.Diagnostics.Debug.WriteLine( $"e.Message" );
    

我想,这应该是发送原始通知的基本代码。 但我得到一个例外说明:

“wns/raw”通知的内容类型必须是“application/octet-stream”。TrackingId:xxx,TimeStamp:8/24/2018 1:07:20 PM

所以我加了一行

notification.Headers.Add( "Content-Type", @"application/octet-stream" );

在“try”-语句之上。 现在我得到了例外

错误的标题名称。确保请求标头与 HttpRequestMessage 一起使用,响应标头与 HttpResponseMessage 一起使用,内容标头与 HttpContent 对象一起使用。

...我不知道如何正确设置标题。

有没有人可以给我一个有用的建议......

提前谢谢

附:将 VS2017 与“Microsoft.AspNetCore.All 2.0.7”和“Microsoft.Azure.NotificationHubs 2.0.0-preview2”一起使用(仅提及重要的库)。

【问题讨论】:

【参考方案1】:

“wns/raw”通知的内容类型必须是“application/octet-stream”

此消息意味着您需要指定“wns/raw”通知的内容类型。我查看了WindowsNotification 文档,它有一个Notification.ContentType 属性,请尝试指定该属性的值。

【讨论】:

感谢您的回复。但不幸的是,添加 notification.ContentType = @"application/octet-stream"; 后,异常仍然存在:“'wns/raw' 通知的内容类型必须是 'application/octet-stream'”

以上是关于在 C# 中从后端发送 UWP 原始通知的主要内容,如果未能解决你的问题,请参考以下文章

NotificationHub 在注册标签 UWP 中发送通知

通过通知中心向所有用户发送推送通知

如何从后端通知前端?

IBM Worklight:从后端调用推送通知适配器

从后端异步更新/通知 HTML,无需 AJAX 轮询

在 Swift 中从 RSS 推送通知