我已经实现了一个每3分钟运行一次的Windows服务,并轮询数据库以获取准备发送的通知.我将它们收集到一个列表中,确定它是ios还是android通知,然后调用PushBroker(PushSharp解决方案作为我的解决方案项目中的编译解决方案包含在内)然后迭代列表中的项目进行如下处理:
static void ProcessIOS(List<Client> IOS)
{
PushBroker 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;
foreach (var entry in IOS)
{
string dev = entry.Device_Id.ToString();
string load = entry.Push_Payload.ToString();
int count = entry.Unread_Count;
var appleCert = File.ReadAllBytes(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "../../../productionfile.p12"));
push.RegisterAppleService(new ApplePushChannelSettings(true, appleCert, "password")); //Extension method
push.QueueNotification(new AppleNotification()
.ForDeviceToken(dev)
.WithAlert(load)
.WithBadge(count));
}
}
Run Code Online (Sandbox Code Playgroud)
消息发送成功,但是,我遇到的问题是1.尝试在消息发送成功或失败时检索响应,失败原因等...这些是pushsharp代码中的委托,以便我可以记录回复我们的数据库.为了澄清......我需要知道错误响应来自哪个条目尝试(deviceID).由于数据未链接到任何特定的deviceid传递尝试,因此我无法通知来自通知发布的代理的生成的消息.2.我还希望能够保持pushsharp代码不受修改并从我的代码中调用方法,以便在将来对pushsharp代码进行任何更新时减少合并问题.有什么建议?如果有人可以给我任何关于如何使用响应事件和代理来检索每个通知发送尝试的信息的示例,我将不胜感激.谢谢.