2017-08-22 2 views
0

Gibt es eine Möglichkeit zu finden, ob Watch App in der vordersten (vom iPhone oder nicht) ist? Das Problem besteht darin, dass, wenn sich die Überwachungs-App im vordersten Zustand befindet, sowohl auf die
applicationWillResignActive() als auch auf die applicationDidEnterBackground() extensionDelegate-Methode zugegriffen wird.Überprüfen, ob die App im Vordergrund ist

So, wie man überprüft, ob die Uhr App im vordersten Zustand ist oder nicht?

+1

Meinst du, check ist die Watch App läuft im _foreground_? Es gibt keine App, die sich "vorne" befindet. Außerdem kann das, was Sie in Ihrer Frage sagen, nicht passieren. Beide Methoden werden aufgerufen, wenn die App in den _background_-Modus wechselt. Müssen Sie also vor dem Wechsel in den Hintergrundmodus oder vor dem Wechsel in den Vordergrundmodus etwas Code ausführen? –

+0

Natürlich gibt es einen vordersten Zustand (wenn Sie wachen, wird das Gesicht inaktiv sein und wenn Sie zurück drehen, wird es die letzte Anwendung erscheinen). Frontmost ist weder Hintergrund noch Vordergrund. –

+0

Mein Schlechter, es gibt tatsächlich eine [vorderste App] (https://developer.apple.com/documentation/watchkit/wkextension), aber es kann immer nur eine Front-App geben, also gibt es kein "in erster Linie". –

Antwort

0

Nach der documentation of WKExtension, gibt es eine integrierte Methode, um zu prüfen, ob eine App die vorderste App ist oder nicht. Selbst die WKApplicationState enum doesn't have ein Fall für die Bestimmung, ob Ihre App die vorderste App ist oder nicht.

Wenn eine App zur führenden App wird (direkt nachdem der Benutzer das Handgelenk gesenkt hat, während die App im Vordergrund läuft), wechselt die App kurz in den Hintergrundmodus und wird dann vom Design deaktiviert. Es ist also das erwartete Verhalten, dass die Systemfunktionen applicationWillResignActive() und applicationDidEnterBackground() aufgerufen werden, da die Anwendung tatsächlich in den Hintergrundmodus wechselt.

In watchOS3 hat die Vordergrund-App keine Vorteile, die Entwickler anders nutzen könnten als die Tatsache, dass das System den App-Status für die Vordergrund-App automatisch wieder einnimmt.

In watchOS 4 sind die vorderste app Gewinne die folgenden zusätzlichen Vorteile:

  • Kann haptisches Feedback aus dem Hintergrund spielen.
  • Wakes aus dem Hintergrund, um Benachrichtigungen zu erhalten.
  • Wakes sofort nach Abschluss einer Hintergrundübertragung von einer URLSession-Task oder Watch Connectivity-Sitzung.
  • Erhält erhöhte Laufzeitpriorität, wenn die Methode performExpiringActivity(withReason:using:) des ProcessInfo-Objekts zum Ausführen von Aufgaben im Hintergrund verwendet wird.
0

Auf dem iPhone können Sie isReachable Wert von WCSession überprüfen.

Nach WCSession documentation, isReachable gilt, wenn:

A gepaart und aktive Apple Watch ist in Reichweite, wird die entsprechende WatchKit Erweiterung ausgeführt wird, und die der WatchKit Erweiterung isReachable Eigenschaft ist wahr.

+0

isReachable Eigenschaft haben einige Bugs, ich hatte schwere Zeiten mit diesem. Auch wenn es funktionieren würde, ist isReachable auch dann gültig, wenn sich die App im Vordergrund befindet. –

Verwandte Themen