2012-10-31 27 views
5

Pracuję nad aplikacją SOS i VoIP opartą na systemie iOS, a warunkiem jest, aby aplikacja działała nieprzerwanie również w tle. Korzystam z biblioteki pjsip.iOS: Odbieranie mediów w tle

wiem, że aby uruchomić aplikację na iOS w bacground, musimy to

  • Set UIBackgroundModes klucz Info.plist o wartości voip

  • Utworzony obsługi, że przekazywany do setKeepAliveTimeout: obsługi : dla utrzymując połączenie żywego

Ale ja po prostu, że jeśli moja aplikacja działa w tle można Dostaję pakiety UDP przez (RTP/RTCP), a ja utrzymuję port UDP zawsze otwarty.

już przeszedł stanowisk:

Ale ja nie uzyskanie jasnego pojęcia, że ​​możemy dostać pakiet UDP nieprzerwanie nawet aplikacja znajduje się w tle lub na pierwszym planie.

Jeśli więc do aplikacji klienckiej iOS są jakieś dane, aplikacja powinna być w stanie powiadomić użytkownika.

Proszę podać sugestie.

+2

Witaj lyon, proszę przejść przez http://stackoverflow.com/questions/6601536/ios-voip-socket-will-not-run-in-background?rq=1 ten post również może być pomocny dla ciebie. – User97693321

+0

Masz na myśli. Potrzebujesz sposobu, aby aplikacja działała w tle, więc gdy jest połączenie, to znaczy, że jesteś? –

+0

btw ... Którą wersję programu pjsip używasz? używasz też ZOTP? –

Odpowiedz

-1

Myślę, że możesz ustawić powiadomienia lokalne, gdy aplikacja działa w tle i wskazuje użytkownikowi połączenia przychodzące za pośrednictwem powiadomienia. Kiedy użytkownik wchodzi do aplikacji, możesz pokazać połączenie przychodzące.

W poniższym linku, sprawdź Background Execution and Multitasking and also Scheduling the Delivery of Local Notifications

IE ponieważ trzeba ustawić klucz UIBackgroundModes w swojej Info.plist, aplikacja będzie wspierać długie uruchomionych zadań. Tak więc w metodzie applicationDidEnterBackground dodaj metodę, która tworzy UILocalNotification, gdy jest wywołanie. UILocalNotifications powiadamia użytkownika za pomocą komunikatu ostrzegawczego i wybranego tonu. Kiedy użytkownik zostanie powiadomiony, a użytkownik wejdzie do aplikacji, aplikacja przejdzie na pierwszy plan, gdzie możesz dodać metodę, która pozwoli mu odebrać połączenie.

W treści alertu LocalNotification można wysłać informacje o dzwoniącym do użytkownika.

EDIT:Check out the answer of Paul Richter in this link, gdzie mówi

VOIP mode gives you the ability to have code running to notify you of a call coming in 
but you're not going to be able to record audio from the background. If you look at how 
Voip apps work, when a call comes in a Local Notification is sent informing the user 
that a call is coming in. The User then must accept the call which will bring the 
application to the foreground at which point from the audio side of things you can 
activate your session and proceed with the phone call. 

Chociaż nie do końca związane z biblioteki używasz, dał godnej wyjaśnieniu procesu.

Mam nadzieję, że to pomoże.

0

Aby uruchomić aplikację VoIP w tle i zarejestrować się na serwerze, należy użyć protokołu TCP na iOS. Gdy coś się stanie, możesz wystrzelić powiadomienie lokalne.