首页 > 解决方案 > 在 C# 中从后端发送 UWP 原始通知

问题描述

我被一个看起来很简单的问题困住了。一点背景知识:我正在开发一个带有 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" );

上面的“尝试” - 声明。现在我得到了例外

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

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

有没有人对我有帮助的建议......

提前 THX

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

标签: c#azurexamarinpush-notificationuwp

解决方案


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

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


推荐阅读