2011-09-03 10 views
5

Mam aplikację na iPhone, która ma proces 30 sekund, który wykonuje niektóre operacje sieciowe. Zasadniczo, podczas gdy aplikacja jest w tle, chcę, aby ten proces był uruchamiany co godzinę (faktycznie raz dziennie, ale jeśli nie powiedzie się, chcę, aby ponownie działał w ciągu kilku godzin).Jak uruchomić proces ~ 30sek w tle co godzinę (aplikacja iPhone)

Dzięki funkcjom tła ios 4 jest to możliwe? Jeśli tak to jak? Jakie są ograniczenia, które wymyślę?

Dziękuję bardzo!

+1

Zrobiłem wiele badań i odkryłem, że " ciche powiadomienia push "zrobili dla mnie. Sprawdź http: // stackoverflow.com/questions/35987366/ios-enterprise-app-how-can-i-make-sure-my-app-runs-in-the-background –

Odpowiedz

6

Spójrz na dokumentacji Apple na temat uruchamiania kodu w tle.

http://developer.apple.com/library/ios/#documentation/iphone/conceptual/iphoneosprogrammingguide/BackgroundExecution/BackgroundExecution.html

Istnieje kilka różnych sposobów zbliża działających w tle zadań. Jedynymi aplikacjami, które mogą mieć w pełni uruchomione procesy, są aplikacje "audio", "voip" i "lokalizacja", co należy zadeklarować na liście Info.plist.

Jeśli Twoja aplikacja nie jest tego typu, prawdopodobnie będziesz mieć trudności z robieniem tego, co chcesz. Istnieją metody, które umożliwiają utrzymanie aplikacji w tle przez określony czas (również pod tym linkiem), ale w końcu Twoja aplikacja zostanie zamknięta.

Lokalne powiadomienia będą tylko monitować użytkownika o otwarcie aplikacji - czy naprawdę chcesz mieć wyskakujące okienko z ostrzeżeniem co 30 sekund?

+0

Wygląda na to, że nie można zrobić tego, czego chcę. Dzięki, że dałeś mi znać. – Chris

+0

Link w tej odpowiedzi jest martwy. Możesz znaleźć informacje o przetwarzaniu w tle w bieżących dokumentach iOS na http://developer.apple.com/library/ios/#documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/ManagingYourApplicationsFlow/ ManagingYourApplicationsFlow.html – Opsimath

0

wierzę, że Używanie powiadomień lokalnych pomoże .... sprawdzić następujące ....

  1. http://developer.apple.com/library/ios/#documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/IPhoneOSClientImp/IPhoneOSClientImp.html#//apple_ref/doc/uid/TP40008194-CH103-SW1
  1. Aplikacja może tworzyć i zaplanować lokalnym powiadomienia , a system operacyjny następnie dostarcza je w dniu i godzinie harmonogramu. Jeśli dostarcza je, gdy aplikacja nie jest aktywna na pierwszym planie, wyświetla alert, odznacza ikonę aplikacji lub odtwarza dźwięk - niezależnie od tego, co określono w obiekcie UILocalNotification. Jeśli aplikacja działa na pierwszym planie, nie ma alertu, plakietki ani dźwięku; zamiast tego aplikacja: didReceiveLocalNotification: metoda jest wywoływana, jeśli delegat ją implementuje.

  2. Uczestnik może sprawdzać właściwości powiadomienia, a jeśli powiadomienie zawiera niestandardowe dane w słowniku userInfo, może uzyskać dostęp do tych danych i odpowiednio je przetworzyć. Z drugiej strony, jeśli powiadomienie lokalne tylko odznaczy ikonę aplikacji, a użytkownik w odpowiedzi uruchamia aplikację, wywoływana jest aplikacja: didFinishLaunchingWithOptions: metoda, ale w słowniku opcji nie znajduje się żaden obiekt UILocalNotification.

+0

Lokalne powiadomienie pozwala ci na wyskakiwanie alertu z trampoliny, aktualizowanie znaczka ikony aplikacji numer lub odtwórz dźwięk. Ale nigdy nie daje żadnej możliwości zrobienia sieciowych operacji wejścia/wyjścia. –

+0

cześć, dzięki za informacje. Napisałem powyżej w oparciu o następujące. 1. Aplikacja: didReceiveLocalNotification: Odwołaj się do dyskusji. powiedzieli, że może to być dowolny obiekt UILocalNotification. 2. W części ogólnej przeglądu UILocalNotification: "Pełnomocnik może sprawdzić właściwości powiadomienia, a jeśli powiadomienie zawiera niestandardowe dane w słowniku userInfo, może uzyskać dostęp do tych danych i odpowiednio je przetwarzać." .... Pomyślałem więc o userinfo dict może mieć adres URL do wywołania i może wywołać go i przetwarzać dane, jeśli proces może zostać zakończony w określonym czasie dozwolonym dla procesu w tle. – Mohammad

1

Zrobiłem coś w rodzaju podobnych badań, spójrz na this SO answer na wypadek, gdybyś nie zdołał go znaleźć wcześniej. Aplikacje takie jak DataMan lub Data Usage muszą mieć okresowe wykonywanie kodu w tle, więc nie jestem w 100% przekonany, że to, o co prosisz, jest niemożliwe.

+0

Wygląda intrygująco, ale jestem ładna na pewno ten hakowaty roztwór pozwoliłby mi wyskoczyć z pronto sklepu z aplikacjami! – Chris

Powiązane problemy