Moja aplikacja działa w tle, alert powiadomienia wyświetlał się poprawnie, a numer plakietki został zwiększony o 1. JEŚLI użytkownik kliknie alert, wszystko działa dobrze, a delegat didReceiveLocalNotification
jest nazywany.
Ale użytkownik zignorował alert. Po pewnym czasie, gdy użytkownik ponownie otworzy moją aplikację, jedynym wywołanym delegatem jest didBecomeActive
. Jak mogę coś zrobić (pokaż a UIAlertView
na przykład), na podstawie ostatniego zignorowanego alertu?
Odpowiedzi:
3 dla odpowiedzi № 1Sam iOS nie zapewnia na to żadnej metody.
Ale możesz po prostu to zrobić:
- Podczas rejestrowania powiadomienia na iOS - zapisz wszystkie dane powiadomienia do pliku.
- Po uruchomieniu aplikacji wczytaj plik powiadomień i wszystkie powiadomienia, które wygasły (NSDate < teraz) - są to powiadomienia ignorowane.
- Przed wykonaniem 2. musisz sprawdzić, czy ktoś nie przyszedł z powiadomienia i usunąć je z twojego pliku.
Jest to rodzaj duplikowania systemu zarządzania powiadomieniami iOS, który niestety nie pozwala uzyskać listy zarejestrowanych powiadomień.
Pisanie powiadomienia do pliku powinno być łatwe: już implementuje protokół NSCoding.
3 dla odpowiedzi № 2
O ile wiem, jeśli powiadomienie zostanie zignorowane, nie można go odzyskać po ponownym otwarciu aplikacji.
Musisz sprawdzić usługę, która przesłała to powiadomienie, aby dowiedzieć się, czy jest coś nowego
0 dla odpowiedzi № 3
Niestety nie ma prostej drogi, aby to osiągnąć.
Możliwe obejście — jeśli użytkownik odrzuci/zignoruje powiadomienie wypychane, aplikacja może przyjrzeć się wiadomościom na serwerze i obsłużyć je w odpowiedni sposób.