2015-09-06 25 views
25

Buduję system automatyki domowej, wybrałem iPada jako główne urządzenie hub/bridge do sterowania wieloma urządzeniami bluetooth (niektóre niestandardowe wykonane przy użyciu RFDuino).iOS 8 uruchom aplikację na zawsze lub wyłącz ekran

iPad (iOS 8.4.1) jest montowany na ścianie i podłączony do ładowarki przez cały czas.

muszę wybrać odpowiednie podejście, aby uruchomić aplikację cały czas do sterowania urządzeniami i otrzymywania aktualizacji, zdarzeń wyzwalających itp

Pytanie brzmi: Czy istnieje sposób visualy wyłączyć ekran? Przyciemnianie go nie jest wystarczająco dobre; najlepiej byłoby, gdyby ekran był wyłączony, tak jak w stanie zablokowanego urządzenia.

W prostych słowach, czy mogę zastosować czarny wygaszacz ekranu?

Jeśli odpowiedź na powyższe pytanie brzmi: Czy istnieje sposób na to, aby aplikacja działała w tle na zawsze?

Jedna rzecz do podkreślenia tutaj. Ta aplikacja nie iść do Apple Store więc rozwiązanie może być brudna Obejście

góry dzięki

Przetestowane dotychczas:

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) 
} 

Takie podejście utrzymuje aplikacja działa w tle przez 3 minuty tylko .

Przechowywać searching ...

+0

Przez „wyłączenie ekranu”, czy chcesz, aby uniemożliwić użytkownikowi korzystanie z iPada w ogóle i nie pozwalając mu/jej odblokowane urządzenie? –

+0

Nie. Wszystko, czego chcę, to nie patrzeć na iPada wiszącego na ścianie z włączonym ekranem, ale nadal wykonywać pełną funkcjonalność aplikacji w tle. Powinien działać jak typowy wygaszacz ekranu. Na każdym wejściu powinien wrócić do trybu live, po pewnym czasie powrócić do czarnego ekranu stanu –

+0

Lepiej jest użyć do tego tabletu z Androidem, ponieważ jest o wiele bardziej konfigurowalny – Andrey

Odpowiedz

9

Spróbuj UIApplicationExitsOnSuspend rozwiązanie:

Ponieważ aplikacje iOS 4 zawieszone po trafieniu przycisk home. Wcześniej (iOS 3) były zamykane i otwierane za każdym razem, gdy otwierasz aplikację - jeśli jednak nie zamknąłeś aplikacji przyciskiem home, ale zablokowałeś urządzenie z otwartą aplikacją iOS 3, działał on w tle. na zawsze. Możesz sprawić, aby Twoje aplikacje działały w ten sposób, dodając klucz UIApplicationExitsOnSuspend do pliku informacyjnego, ustaw wartość na YES.

Nie można szybko zamknąć aplikacji (zostanie ona ponownie uruchomiona za każdym razem, gdy użyjesz przycisku home), ale jeśli nie będziesz często kontaktować się z iPadem, możesz po prostu zablokować urządzenie, aplikacja jest otwarta i będzie działać do momentu odblokowania iPada lub otwarcia innej aplikacji.

Należy zauważyć, że to rozwiązanie jest ważne w App Store, ponieważ wykorzystuje oficjalne interfejsy API Apple.

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

+0

Przeprowadzanie testu na noc. Wygląda obiecująco. Fingers crossed –

+0

Wygląda na to, że mamy zwycięzcę! Aplikacja właśnie przekroczyła próg 10 min i doskonale działa przy wyłączonym ekranie. Dziękuję Panu! Dzięki Ci @Damo za nagrodę –

4

Wszystkie aplikacje wstać do 10 minut, aby zakończyć co robią zanim aplikacja jest naprawdę zawieszone. Ale w niektórych przypadkach mogą wymagać dłuższego działania, na przykład odtwarzania muzyki lub obliczania kroków. Można to zrobić, używając trybu Wymagany tryb tła to tryby, dzięki którym można zachować nieprzerwaną pracę aplikacji w tle.

proszę spojrzeć na zdjęcia poniżej:

enter image description here enter image description here

Wizyta na wykonanie tła: Apple

kliknij poniższy adres URL może być pomocne.

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

http://www.raywenderlich.com/29948/backgrounding-for-ios (na wyjaśnieniu z przykładowego kodu.)

Nadzieja pomaga w rozwiązywaniu problemu.

+0

Nadal studiując rzeczy Ray Wenderlicha. Testowanie wszystkich podejść. W tej chwili może działać tylko w tle nie dłużej niż 3 minuty. W iOS 8.4.1 wprowadzono pewne zmiany, aby zapobiec sztucznemu wydłużeniu żywotności aplikacji. –

+1

@CaptJak - Najpierw należy przeczytać dokumentację dostarczoną przez Apple. Jeśli nie zostanie przeprowadzone przetwarzanie w tle aplikacja zostanie zakończona. –

+2

@GregLukosek, jeśli twoja aplikacja odtwarza dźwięk, możesz pozostać w tle na zawsze. Na przykład spotify lub aplikacja podkastowa mogą działać w tle w nieskończoność. Dźwięk, który grasz, nie musi być słyszalny przez głośniki (po prostu odtwarzaj cichy utwór w powtórzeniach). W ten sposób Twoja aplikacja zostanie zablokowana w App Store, ale w przypadku wewnętrznej aplikacji działa idealnie. –

-3

Można ominąć/zhackować, uruchamiając ciszę w tle. Nie mogę sobie wyobrazić, żeby było to skuteczne lub najlepsze rozwiązanie, ale może to być praca dookoła. Wiem, że twórcy Workflow również próbowali ominąć to, a także przekroczyli limit 10 minut. W takim przypadku należy w prosty sposób wysłać powiadomienie lokalne w ciągu 9 minut i powiedzieć użytkownikowi, aby ponownie otworzył aplikację, aby mogła nadal działać.

+0

Oznacza to, że dosłownie muszę ponownie aktywować aplikację co 10 minut, to nie jest wcale rozwiązanie. –