Mam zintegrowane zdalne powiadomienia push, ale otrzymuję takie ostrzeżenie:
didReceiveRemoteNotification:fetchCompletionHandler:]
, ale nadal musisz dodać „remote-notification
” do listy obsługiwanychUIBackgroundMode
plików w swoimInfo.plist
.
Moja wersja Xcode to 8.3.1. Naprawdę chcę to dodać Info.plist
. Skorzystałem również z kilku tutoriali, ale oni też o tym nie wspomnieli. Co naprawdę powinienem zrobić?
ios
info-plist
uibackgroundmode
user1960169
źródło
źródło
application(_:didReceiveRemoteNotification:fetchCompletionHandler:)
funkcji, która służy do obsługi pobierania danych.Możesz także edytować potrzebne info.plist (Otwórz jako -> Kod źródłowy) i wkleić:
źródło
W rzeczywistości nie ma potrzeby dodawania UIBackgroundModes do .plist tylko po to, aby używać zdalnych powiadomień.
Wiem, że trochę dzielę spadkobierców (druga odpowiedź jest przeważnie świetna i być może coś nowego w iOS 11), ale pytanie dotyczy powiadomień push wymagających aktualizacji w tle, a tak nie jest.
Różnica polega na tym, że istnieją dwie różne metody, które akceptują powiadomienia w AppDelegate;
Ten nie wymaga używania UIBackgroundModes:
Powyższe zastępuje przestarzałe od wersji iOS 11:
A ten wymaga możliwości trybów w tle:
Najważniejsze jest to, że pierwsza (i przestarzała, którą zastąpiła) działa tylko wtedy, gdy aplikacja jest na pierwszym planie. Ta ostatnia będzie działać, jeśli aplikacja jest na pierwszym planie LUB w tle. Zobacz specyfikację tego konkretnego modelu użytkowego:
Dlatego jeśli potrzebujesz powiadomień push, zdecyduj, czy chcesz działać w tle - tylko jeśli potrzebujesz obu, zaimplementuj metodę sugerowaną przez ostrzeżenie.
źródło
Zdarzyło mi się to nawet po ustawieniu trybu zdalnych powiadomień w tle w możliwościach. Problem polegał na tym, że miałem trzy cele, jeden dotyczący produkcji, jeden dla QA i jeden dla inscenizacji. Musiałem ustawić zdalne powiadomienia we wszystkich trzech celach i to naprawiło ostrzeżenie.
źródło