2015-09-06 15 views
25

Ich bin ein Hausautomationssystem bauen, habe ich iPad als Haupt Hub/Bridge-Gerät, um viele Bluetooth-Geräte zu steuern (einige benutzerdefinierte mit RFDuino gemacht).iOS 8 Run App für immer oder deaktivieren Bildschirm

Das iPad (iOS 8.4.1) wird ständig an die Wand montiert und an das Ladegerät angeschlossen.

Ich brauche den richtigen Ansatz zu wählen, um die App die ganze Zeit laufen zu lassen, die Geräte zu steuern und erhalten Updates, Triggerereignisse usw.

Die Frage ist: Gibt es eine Möglichkeit, den Bildschirm visualy zu deaktivieren? Dimmen ist nicht gut genug; Am besten wäre es, wenn der Bildschirm wie im gesperrten Gerätezustand ausgeschaltet wäre.

In einfachen Worten, kann ich einen schwarzen Bildschirmschoner verwenden?

Wenn die obige Antwort nicht lautet: Gibt es eine Möglichkeit, die Anwendung für immer im Hintergrund zu erzwingen?

Eine Sache, die hier hervorgehoben wird. Diese App geht nicht in dem Apple Store, so dass die Lösung

eine schmutzige Abhilfe

Vielen Dank im Voraus sein könnte

bisher getestet:

let backgroundQueue = dispatch_get_global_queue(QOS_CLASS_BACKGROUND,0) 

func applicationDidEnterBackground(application: UIApplication) { 

    application.beginBackgroundTaskWithName("myBgTask", expirationHandler: nil) 
    dispatch_async(self.backgroundQueue, myBackgroundTask) 
} 

func myBackgroundTask() { 
    NSThread.sleepForTimeInterval(1) 
    dispatch_async(self.backgroundQueue, myBackgroundTask) 
} 

Dieser Ansatz hält ca. 3 Minuten lang im Hintergrund läuft nur .

Halten der Suche ...

+0

Mit „auf den Bildschirm zu deaktivieren“, tun Sie Benutzer verhindern mögen, dass überhaupt das iPad verwenden und nicht so dass er/sie das Gerät entsperrt? –

+0

Nein. Alles, was ich will, ist nicht das iPad mit dem Bildschirm an der Wand hängen zu sehen, aber immer noch volle App-Funktionalität im Hintergrund. Es sollte wie ein typischer Bildschirmschoner funktionieren. Auf jeden Eingang sollte wieder gehen zu leben, nach einiger Zeit sollte wieder in den schwarzen Bildschirm Zustand gehen –

+0

Es ist bessere Option, Android-Tablet dafür zu verwenden, weil es viel mehr anpassbare – Andrey

Antwort

9

Versuchen Sie, die UIApplicationExitsOnSuspend Lösung:

Seit iOS 4 Apps gesperrt werden, wenn Sie die Home-Taste getroffen. Vorher (iOS 3) wurden sie jedes Mal beendet und neu gestartet, wenn Sie die App öffneten. Wenn Sie jedoch nicht die Home-Taste zum Schließen der App benutzten, sondern das Gerät mit Ihrer iOS 3 App öffneten, lief es im Hintergrund für immer. Sie können Ihre Apps so einrichten, dass Sie den Schlüssel UIApplicationExitsOnSuspend zu Ihrem Info-Gerät hinzufügen. Setzen Sie den Wert auf YES.

Sie können die App nicht so schnell schließen und wieder öffnen (sie wird jedes Mal neu gestartet, wenn Sie die Home-Taste verwenden), aber wenn Sie nicht häufig mit dem iPad interagieren, können Sie das Gerät einfach sperren Die App ist geöffnet und wird weiterhin ausgeführt, bis das iPad entsperrt ist oder Sie eine andere App öffnen.

Beachten Sie, dass diese Lösung für den App Store gültig ist, da sie offizielle Apple APIs verwendet.

https://developer.apple.com/library/ios/documentation/General/Reference/InfoPlistKeyReference/Articles/iPhoneOSKeys.html

+0

Lauftest über Nacht. Sieht vielversprechend aus. Daumen drücken –

+0

Sieht aus, als hätten wir einen Gewinner! App hat gerade 10 Minuten überschritten und funktioniert perfekt mit ausgeschaltetem Bildschirm. Danke mein Herr! Danke Dir @Damo für das Kopfgeld –

4

Alle Apps erhalten bis zu 10 Minuten zu beenden, was sie taten, bevor die App wirklich aufgehängt ist. In einigen Fällen müssen sie jedoch länger ausgeführt werden, z. B. beim Abspielen von Musik oder beim Berechnen von Schritten. Es kann gemacht werden mit Erforderliche Hintergrund-Modus sind die Modi, mit denen Sie Ihre Anwendung für immer im Hintergrund laufen lassen können.

schauen Sie bitte auf die Bilder unten:

enter image description here enter image description here

Anlass des Besuchs Hintergrundausführung: Apple

Besuch unter URL kann es hilfreich sein.

https://stackoverflow.com/a/29168981/4101371

http://www.raywenderlich.com/29948/backgrounding-for-ios (für explaination mit Beispielcode.)

Hoffe, dass es bei der Lösung Ihres Problems hilft.

+0

Studiert immer noch das Ray Wenderlich-Zeug. Alle Ansätze testen. Im Moment kann nur maximal 3 Minuten im Hintergrund laufen. Es gibt einige Änderungen in iOS 8.4.1, um zu verhindern, dass die Lebensdauer der App künstlich verlängert wird. –

+1

@CaptJak - Sie sollten zuerst die vom Apple bereitgestellte Dokumentation lesen. Wenn im Hintergrund keine Verarbeitung stattfindet, wird die Anwendung beendet. –

+2

@GregLukosek Wenn deine App Audio spielt, kannst du für immer im Hintergrund weiterlaufen. Beispielsweise kann spotify oder eine Podcast-App unbegrenzt im Hintergrund laufen. Der Sound, den Sie spielen, muss nicht wirklich über die Lautsprecher zu hören sein (spielen Sie einfach eine stille Spur bei der Wiederholung). Dadurch wird Ihre App aus dem App Store gesperrt, aber für eine Inhouse-App funktioniert es perfekt. –

-3

Können Sie umgehen/hacken, indem Sie Stille im Hintergrund ausführen. Ich kann mir nicht vorstellen, dass dies effizient oder die beste Lösung ist, aber es könnte eine Arbeit sein. Ich weiß, dass die Entwickler von Workflow versucht haben, dies ebenfalls zu umgehen und auch die Grenze von 10 Minuten erreicht haben. Es gibt eine Problemumgehung, einfach eine lokale Benachrichtigung bei der 9-Minuten-Markierung zu senden und dem Benutzer zu sagen, dass er die App erneut öffnen muss, damit sie weiter ausgeführt werden kann.

+0

Das heißt also, ich müsste die App buchstäblich alle 10 Minuten reaktivieren, das ist überhaupt keine Lösung. –