Przetwarzanie wielu powiadomień za pomocą PushSharp dla ios i Androida
Zaimplementowałem usługę Windows, która działa co 3 minuty i odpytuje bazę danych o powiadomienia, które są gotowe do wysłania. Zbieram je na listę określa, czy jest to powiadomienie ios, czy android, a następnie dzwoni do PushBrokera (rozwiązanie PushSharp jest dołączone jako rozwiązanie kompilowane w moim projekcie rozwiązania). Następnie iteruję pozycje na liście, aby przetwarzać je w następujący sposób:
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));
}
}
Wiadomości są wysyłane pomyślnie, jednak problem, który mam, polega na 1. próbie odzyskania odpowiedzi po pomyślnym wysłaniu wiadomości lub niepowodzeniu, powodu niepowodzenia itp. Są to delegaty w kodzie pushsharp, dzięki czemu mogę zalogować się odpowiedzi na naszą bazę danych. Dla wyjaśnienia ... Muszę wiedzieć, jaka próba wejścia (identyfikator urządzenia) pochodzi z odpowiedzi błędu. Nie jestem w stanie określić przez wygenerowane wiadomości od delegatów powiadomienia, ponieważ dane nie są powiązane z żadną konkretną próbą dostarczenia urządzenia. 2. Chcę także mieć możliwość zachowania kodu pushsharp bez modyfikacji i metod wywołania z mojego kodu, aby ograniczyć problemy z łączeniem, gdy w przyszłości wprowadzone zostaną zmiany w kodzie pushsharp. Jakieś sugestie? Byłbym wdzięczny, jeśli ktoś może podać mi przykłady użycia zdarzeń odpowiedzi i delegatów do pobierania informacji o każdej próbie wysłania powiadomienia. Dziękuję Ci.