使用 Pushsharp 的 Windows 推送通知服务提供通知失败

Posted

技术标签:

【中文标题】使用 Pushsharp 的 Windows 推送通知服务提供通知失败【英文标题】:Windows push notification service using Pushsharp giving Notification Failure 【发布时间】:2015-08-03 07:43:44 【问题描述】:
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 传递给此 c# 后端代码的 Windows 时,我收到通知失败异常。

【问题讨论】:

@pushsharp : 有人可以帮忙吗? 【参考方案1】:

我在我的一个项目中使用最新版本的 PushSharp(3.0 版)向 Windows Phone 设备发送 toast 通知,它对我来说工作正常。通过上面的代码,我注意到您使用的是旧版本的 PushSharp 包,nuget 提供了一个新的 3.0 版本。

您可以使用最新的软件包向 Windows Phone 设备发送 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 和一个客户端秘密。要获取这些值,您的应用必须在商店仪表板中注册。这将为您的应用程序提供凭据,您的云服务将在使用 WNS 进行身份验证时使用该凭据。您可以查看以下MSDN page 上的步骤 1-3,了解如何完成此操作的详细信息。 (注意在上面的链接中,它声明您必须使用您的应用程序的身份编辑您的 appManifest.xml 文件,我没有执行此步骤,只需确保您正确设置了 Windows 手机应用程序以接收 toast 通知,这@ 987654323@ 将提供帮助。

希望这会有所帮助。

【讨论】:

以上是关于使用 Pushsharp 的 Windows 推送通知服务提供通知失败的主要内容,如果未能解决你的问题,请参考以下文章

Pushsharp 推送通知仅适用于沙盒,不适用于生产

PushSharp 错误消息发送 IOS 推送通知

如何使用 PushSharp 为 Windows Phone 8 设置徽章值

如何使用库 PushSharp 向 iOS 发送推送通知?

使用 pushsharp 获取 android 的注册 ID 以进行推送通知

GCM 多次推送同一消息 (PushSharp)