2017-09-21 13 views
2

Hat jemand sonst Probleme mit applicationDidBecomeActive falsch feuern auf Deaktivierung der App auf dem neuen iPhone X?applicationDidBecomeActive Feuern auf Deaktivierung auf dem iPhone X

Hier ist mein Test-App:

class ViewController: UIViewController { 

    required init?(coder aDecoder: NSCoder) { 
     super.init(coder:aDecoder) 
     NotificationCenter.default.addObserver(
      self, 
      selector: #selector(fired), 
      name: .UIApplicationDidBecomeActive, 
      object: nil 
     ) 
    } 

    @objc func fired(_:Any) { 
     print("fired") 
    } 

} 

Führen Sie die App auf dem iPhone X-Simulator. Natürlich sehe ich in der Konsole "gefeuert". So weit, ist es gut. Wischen Sie nun die Home-Anzeige seitwärts oder nach oben, um zu einer anderen App zu wechseln oder den App-Switcher aufzurufen. Ich sehe "gefeuert" wieder in der Konsole erscheinen!

Das scheint einfach falsch, und wirft alle meine Apps in eine Kerfuffle. Wie kann ich mit der Deaktivierung einer Aktivierungsbenachrichtigung umgehen?

+0

Es scheint, dass 3 Benachrichtigungen in schneller Folge ausgelöst werden: willResignActive/didBecomeActive/willResignActive. –

+0

Nur eine kurze Sache zu testen - was passiert, wenn Sie diesen Test sagen auf einem iPad Pro und versuchen, Apps zu wechseln? – solenoid

+0

@solenoid Keine iPad App. Kein Problem in irgendeinem anderen iPhone, nur iPhone X. – matt

Antwort

2

In der Tat gibt es drei Meldungen in schneller Folge ausgelöst, wenn die Anwendung auf dem iPhone X Simulator deaktiviert ist:

  1. UIApplicationWillResignActive
  2. UIApplicationDidBecomeActive
  3. UIApplicationWillResignActive

Das ist falsch (und Sie könnten einen Fehlerbericht ablegen), aber es ist etwas, das könnte passieren, wenn ein Benutzer deaktiviert - aktiviert - deaktiviert die App schnell, so die App sollte diese Situation sowieso bewältigen.

Beide Benachrichtigungen müssen symmetrisch behandelt werden (und sie sind auch bei diesem Fehler richtig ausgeglichen): Die Aktionen auf "activate" müssen bei "disable" umgekehrt werden.