我已经实现了一个 Windows 服务,它每 3 分钟运行一次,并轮询数据库以获取准备发送的通知。我将它们收集到一个列表中,确定它是 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));
}
}
消息发送成功,但是,我遇到的问题是 1. 尝试在消息发送成功或失败时检索响应,失败原因等......这些是 pushsharp 代码中的代表,以便我可以记录对我们数据库的响应。为了澄清......我需要知道错误响应来自哪个条目尝试(设备ID)。由于数据未链接到任何特定的 deviceid 传递尝试,因此我无法通过通知代理生成的消息来判断。2. 我还希望能够保持 pushsharp 代码不变,并从我的代码中调用方法,以减少将来对 pushsharp 代码进行任何更新时的合并问题。有什么建议么?如果有人可以给我任何关于如何使用响应事件和委托来检索每次通知发送尝试的信息的示例,我将不胜感激。谢谢你。