我需要将通知推送到我的应用安装的数以万计的 iOS 设备。我正在尝试使用 PushSharp 来实现,但这里缺少一些基本概念。起初我试图在 Windows 服务中实际运行它,但无法让它工作 - 来自 _push.QueueNotification() 调用的空引用错误。然后我完全按照文档中的示例代码做了什么,并且它起作用了:
PushService _push = new PushService();
_push.Events.OnNotificationSendFailure += new ChannelEvents.NotificationSendFailureDelegate(Events_OnNotificationSendFailure);
_push.Events.OnNotificationSent += new ChannelEvents.NotificationSentDelegate(Events_OnNotificationSent);
var cert = File.ReadAllBytes(HttpContext.Current.Server.MapPath("..pathtokeyfile.p12"));
_push.StartApplePushService(new ApplePushChannelSettings(false, cert, "certpwd"));
AppleNotification notification = NotificationFactory.Apple()
.ForDeviceToken(deviceToken)
.WithAlert(message)
.WithSound("default")
.WithBadge(badge);
_push.QueueNotification(notification);
_push.StopAllServices(true);
问题 #1:这非常有效,我看到通知在 iPhone 上弹出。但是,由于它被称为推送服务,我认为它的行为类似于服务 - 意思是,我实例化它并可能在 Windows 服务中调用 _push.StartApplePushService()。而且我想实际上将我的通知排队,我可以在前端(例如管理应用程序)执行此操作:
PushService push = new PushService();
AppleNotification notification = NotificationFactory.Apple()
.ForDeviceToken(deviceToken)
.WithAlert(message)
.WithSound("default")
.WithBadge(badge);
push.QueueNotification(notification);
显然(就像我已经说过的那样),它不起作用 - 最后一行不断抛出空引用异常。
我很难找到任何其他类型的文档来展示如何以服务/客户端方式进行设置(而不仅仅是一次调用所有内容)。有可能还是我错过了应该如何使用 PushSharp 的要点?
问题#2:此外,我似乎无法找到一种方法来一次定位多个设备令牌,而不是遍历它们并一次将通知排队。这是唯一的方法还是我在这里也错过了什么?
提前致谢。