Używam Alamofire do nawiązania połączenia z serwisem internetowym, który ładuje się dość długo. Jeśli aplikacja trafi w tło, utknę z moim programem ładującym po powrocie do aplikacji. Wyobrażam sobie, że to dlatego, że wywołanie nigdy nie zwraca niczego do mojego programu obsługi zakończenia. Jak mogę rozwiązać ten problem?Żądanie Alamofire zostaje zablokowane podczas wprowadzania tła?
Odpowiedz
Możesz użyć pobierania w tle, aby rozwiązać ten problem. Można to zrobić w następujący sposób w Swift 3:
var backgroundTask: UIBackgroundTaskIdentifier? // global variable
backgroundTask = UIApplication.shared.beginBackgroundTask(withName: "backgroundTask") {
// Cleanup code should be written here so that you won't see the loader
UIApplication.shared.endBackgroundTask(self.backgroundTask!)
self.backgroundTask = UIBackgroundTaskInvalid
}
Zadzwoń do serwisu alamofire po tej linii. W module obsługi zakończenia zakończ zadanie za pomocą poniższych wierszy.
UIApplication.shared.endBackgroundTask(self.backgroundTask!)
self.backgroundTask = UIBackgroundTaskInvalid
Należy pamiętać, że aplikacja ma trochę czasu tła (backgroundTimeRemaining
właściwość) pozostały, zanim wejdzie w stan nieaktywny. Musisz wykonać swoje zadanie przed tym czasem. Program obsługi jest wywoływany na krótko przed upływem pozostałego czasu tła. Ponadto każde wywołanie metody beginBackgroundTask(withName:){}
musi być zrównoważone przez pasujące wywołanie do metody endBackgroundTask:
.
Aby powyższy kod zadziałał, musisz dostosować ustawienia w swojej aplikacji. Idź do „celów” i kliknij na „Możliwości”, aby wprowadzić następujące zmiany
Po tym, przejdź do pliku Info.plist i otwórz go jako źródło, aby dodać następujący kod.
Mam nadzieję, że to pomaga. Jeżeli chcą Państwo uzyskać bardziej szczegółowe informacje, linki te mogą pomóc
- 1. Żądanie Youtube zostanie zablokowane
- 2. Żądanie w tle nie wykonuje Alamofire Swift
- 3. Żądanie Alamofire http do lokalnego serwera WWW
- 4. Żądanie HTTP Androida zablokowane przez incapsula
- 5. Jak wykonać żądanie synchroniczne za pomocą Alamofire?
- 6. Alamofire Uzyskaj żądanie i odpowiedź JSON
- 7. Zmiana koloru tła wyłączonego pola wprowadzania danych
- 8. Żądanie POST z danymi w ciele z Alamofire 4
- 9. Filtr zostaje usunięty podczas klonowania git svn?
- 10. window.open popup zostaje zablokowany podczas zdarzenia click
- 11. Przejścia myszy D3 zostają "zablokowane".
- 12. Alamofire 3.0 ReactiveCocoa Konwersja
- 13. Zarządzanie sesjami za pomocą Alamofire
- 14. pamięć Alamofire przecieki Instruments
- 15. sql server- Kiedy stół zablokowane podczas aktualizacji z przyłączyć
- 16. Pływające elementy div o różnej wysokości są zablokowane podczas owijania
- 17. Wystąpił błąd podczas wprowadzania do kolekcji Meteorów
- 18. Zrozumienie AlamoFire OAuth Przykład
- 19. Losowy obraz tła podczas odświeżania
- 20. Nieudane potwierdzenie: już zablokowane
- 21. Zabij zablokowane Zwiększenie :: Wątek
- 22. iOS: przepustowość przepustnicy np. Alamofire
- 23. Nie znaleziono ramy Alamofire
- 24. Alamofire odpowiednik AFHTTPSessionManager
- 25. Problem pobierania Alamofire
- 26. Nie można zaimportować Alamofire
- 27. Obsługa błędów w Alamofire
- 28. Drukuj Alamofire request body
- 29. Zrozumienie Swift Alamofire completionHandler
- 30. plik jar zostaje uszkodzony podczas budowania z maven
http://stackoverflow.com/questions/34328678/web-service-call-in-background-mode -ios – Sofeda
http://redth.codes/ios7-recipe-background-fetching/ – Sofeda
te mogą ci pomóc – Sofeda