2012-02-07 12 views
6

Opracowałem aplikację, która obecnie jest ustawiona jako "Lokalizacja oparta", tak aby mogła działać w tle na nieokreślony czas. To nie sztuczka, potrzebuję jej do robienia rzeczy, gdy użytkownik się porusza. Po pewnym wyszukiwaniu dowiedziałem się, że ta aplikacja wykona kod tylko w przypadku zmiany lokalizacji, bez żadnego timera, który będzie w stanie wykonać dowolny kod po 10 minutach.Framework XMPP - aplikacja oparta na lokalizacji połączona w tle

Moja aplikacja, będąc w tle, pozostaje podłączona do XMPP przez około 50 minut, a następnie rozłącza się. Chciałbym, aby aplikacja nigdy się nie rozłączyła, przyjrzałem się ramie, ale nie mogę znaleźć miejsca, w którym można by naprawić to zachowanie. Czy wiesz, czy można pozostać w kontakcie "nieokreślony"? jeśli tak, jakie ustawienia muszę zmienić w xmppframework.

dzięki

[Edycja] Po 50mins użytkownik jest nadal podłączony do XMPP ale rozłączeniu z XMPPRooms został conected. W innym uruchomieniu był podłączony przez 3 godziny, czas podłączenia iPhone'a nie wydaje się być spójny.

+0

Jeśli jest odłączony od XMPPRooms, może to mieć coś wspólnego z sesjami utrzymywanymi na zapleczu, które trwają 50 minut. – tipycalFlow

+0

Ustawiłem mój serwer na: _Nie rozłączaj klientów, którzy są bezczynni._ Jakie ustawienie masz na myśli? – subharb

+0

Miałem na myśli sesje w pokojach, jeśli różnią się od sesji użytkowników. Wspomniałeś w swojej edycji, że sesja użytkownika jest utrzymywana, ale XMPPRooms są rozłączone – tipycalFlow

Odpowiedz

0

Aby upewnić się, że aplikacja może wysyłać i odbierać wiadomości podtrzymujące, musi to być aplikacja VoIP i używać gniazda VoIP. Od Apple's Documentation:

  1. Dodaj klucz UIBackgroundModes do Info.plist pliku Twojej aplikacji. Ustaw wartość tego klucza na tablicę zawierającą wartość Voip.
  2. Skonfiguruj jedno z gniazd aplikacji do korzystania z VoIP.
  3. Przed przejściem do tła należy wywołać metodę setKeepAliveTimeout: handler:, aby zainstalować procedurę obsługi, która będzie wykonywana okresowo. Twoja aplikacja może korzystać z tego modułu obsługi, aby utrzymać połączenie z usługą.

chodzi o gniazdo:

NSInputStream i NSOutputStream: dla strumieni kakaowy użyć setProperty: forKey: w celu dodania właściwości NSStreamNetworkServiceType do strumienia. Wartość tej właściwości powinna być ustawiona na NSStreamNetworkServiceTypeVoIP.

Powiązane problemy