AppDelegate applicationDidEnterBackground работает на симуляторе, но не на устройстве
Я пытаюсь отслеживать, когда пользователь в сети или в автономном режиме. Я пытаюсь сделать это, обновляя пользовательский объект на сервере синтаксического анализа каждый раз, когда приложение открыто, и всякий раз, когда приложение закрывается с помощью следующего кода.
func applicationWillEnterForeground(_ application: UIApplication) {
let username : String? = UserDefaults.standard.string(forKey: "username")
if username != nil {
print("online")
let object = PFUser.current()
object!["online"] = "yes"
object?.saveInBackground()
}
}
func applicationDidEnterBackground(_ application: UIApplication) {
let username : String? = UserDefaults.standard.string(forKey: "username")
if username != nil {
print("Offline")
let object = PFUser.current()
object!["online"] = "no"
object?.saveInBackground()
}
}
Когда я проверяю это на симуляторе на Mac, кажется, он работает отлично. Однако, когда я тестирую его на моем реальном iPhone, он обновляется, когда приложение открыто, но не когда оно закрыто. (печать всегда печатается как на устройстве, так и на симуляторе, поэтому функция вызывается)
Проведя некоторое исследование, я обнаружил, что мне это может понадобиться в моем info.plist Application does not run in background
Так что я добавил это и установил его нет. Однако это все еще не работает.
1 ответ
Почему бы вам не использовать другой метод состояния приложения, например func applicationDidEnterBackground(_ application: UIApplication) {}
Помните, что applicationWillResignActive (:) вызывается раньше, чем applicationDidEnterBackground (:)