我需要向成千上万安装了我的应用的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: 此外,我似乎找不到一种同时针对多个设备令牌的方法,而不是通过循环遍历它们并逐个排队通知。 这是唯一的方法,还是我在这里错过了什么?
提前感谢。
NotificationFactory
和PushService
下面看到红线,是不是我漏掉了什么需要包含的内容? - user2754681