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

时间:2018-08-24 13:24:38

标签: c# azure xamarin push-notification uwp

我陷入了一个相当简单的问题。 一点背景知识:我正在使用Xamarin(一个C#后端)开发一个应用程序,并使用Azure作为Push Notification Hub。

我的目标是通过Azure通知中心将后端的原始通知发送到我的UWP应用。在我的项目中,没有徽章,平铺或烤面包的通知,因此我受困于原始通知。

该应用程序在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对象一起使用。

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

请问有没有对我有用的建议。...

提前THX

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

1 个答案:

答案 0 :(得分:0)

  

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

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