使用Pushsharp的Windows推送通知服务给出通知失败

时间:2015-08-03 07:43:44

标签: windows-phone-8 pushsharp

var push = new PushBroker();
push.OnNotificationSent += NotificationSent;
push.OnChannelException += ChannelException;
push.OnServiceException += ServiceException;
push.OnNotificationFailed += NotificationFailed;
push.OnDeviceSubscriptionExpired += DeviceSubscriptionExpired;
push.OnDeviceSubscriptionChanged += DeviceSubscriptionChanged;
push.OnChannelCreated += ChannelCreated;
push.OnChannelDestroyed += ChannelDestroyed;
push.RegisterWindowsPhoneService();
push.QueueNotification(new WindowsPhoneToastNotification()
        .ForEndpointUri(new Uri(uri))
        .ForOSVersion(WindowsPhoneDeviceOSVersion.Eight)
        .WithBatchingInterval(BatchingInterval.Immediate)
        .WithNavigatePath("/LandingView.xaml")
        .WithText1("PushSharp")
        .WithText2("This is a Toast"));
 push.StopAllServices();

我正在使用pushsharp nuget包进行推送通知,并且在将uri传递给这个用于Windows的c#后端代码时,我收到通知失败异常。

1 个答案:

答案 0 :(得分:1)

我在我的项目中使用最新版本的PushSharp(版本3.0)向Windows Phone设备发送Toast通知,它对我来说很好。我通过上面的代码注意到您使用的是旧版本的PushSharp软件包,this tutorial提供了一个新的3.0版本。

您可以使用该最新程序包向Windows手机设备发送Toast通知。最新版本的PushSharp使用WNS而不是旧版MPNS。

如果你去上面提供的nuget get链接并下载解决方案,你可以看到一些关于如何使用WNS实现Windows Phone推送通知的示例。查看PushSharp.Test项目下的内容(查找WNSRealTest.cs文件)。

以下是如何向Windows Phone设备发送Toast通知的示例:

var config = new WnsConfiguration(
                 "Your-WnsPackageNameProperty",
                 "Your-WnsPackageSid",
                 "Your-WnsClientSecret"
                  );

var broker = new WnsServiceBroker(config);
broker.OnNotificationFailed += (notification, exception) =>
{
   //you could do something here
};
broker.OnNotificationSucceeded += (notification) =>
{
   //you could do something here
};

 broker.Start();

 broker.QueueNotification(new WnsToastNotification
 {
                ChannelUri = "Your device Channel URI",
                Payload = XElement.Parse(string.Format(@"
                    <toast>
                        <visual>
                            <binding template=""ToastText02"">
                                <text id=""1"">{0}</text>
                                <text id=""2"">{1}</text>
                            </binding>  
                        </visual>
                    </toast>
                ","Your Header","Your Toast Message"))
  });

  broker.Stop();

正如您在上面注意到的那样,WnsConfiguration构造函数需要包名称,包SID和客户端Secrete。要获取这些值,您的应用必须在Store Dashboard中注册。这将为您提供云服务在使用WNS进行身份验证时使用的应用凭据。您可以查看以下nuget上的步骤1-3,了解有关如何完成此操作的详细信息。 (请注意,在上面的链接中,它指出您必须使用应用程序的身份编辑appManifest.xml文件,我没有执行此步骤,只需确保正确设置Windows Phone应用程序以接收Toast通知,此{ {3}}将有助于此。

希望这有帮助。