2012-10-31 14 views
5

Ich entwickle SIP und VoIP-basierte iOS-Anwendung und Anforderung ist, dass die Anwendung auch im Hintergrund kontinuierlich ausgeführt werden soll. Ich verwende pjsip lib.iOS: Empfangen von Medien im Hintergrund

Ich weiß, dass die iOS-Anwendung in bacground ausführen können, müssen wir diesen Schlüssel

  • Set UIBackgroundModes in Info.plist mit voip Wert

  • einen Handler Erstellt, die ich setKeepAliveTimeout geben: Handler hält für die Verbindung lebendig

Aber ich will nur, dass, wenn meine Anwendung im Hintergrund ausgeführt wird, kann: Ich empfange UDP-Pakete über (RTP/RTCP), während ich den UDP-Port immer geöffnet halte.

Ich habe bereits durch die Pfosten gegangen:

Aber ich habe nicht klare Vorstellung bekommen, die wir kontinuierlich auch UDP-Paket bekommen kann die App ist im Hintergrund oder Vordergrund.

Damit, wenn Daten zur iOS-Client-App kommen, sollte die App in der Lage sein, den Benutzer zu benachrichtigen.

Bitte geben Sie Vorschläge.

+2

Hallo Lyon, Bitte gehen Sie durch http://StackOverflow.com/Questions/6601536/IOS-voip-Socket-Will-No-Run-In-Background?RQ=1 dieser Beitrag auch, kann hilfreich für Sie sein. – User97693321

+0

Sie meinen. Du brauchst eine Möglichkeit, um die App im Hintergrund laufen zu lassen, so dass du bei einem Anruf darauf hinweist? –

+0

btw ... Welche Version von pjsip benutzt du? verwendest du auch zrtp? –

Antwort

-1

Ich denke, Sie können lokale Benachrichtigungen festlegen, wenn die App im Hintergrund ausgeführt wird und den Benutzer eines eingehenden Anrufs über die Benachrichtigung angeben. Wenn der Benutzer die Anwendung eingibt, können Sie den eingehenden Anruf anzeigen.

In dem folgenden Link, überprüfen Background Execution and Multitasking and also Scheduling the Delivery of Local Notifications

IE, da Sie den UIBackgroundModes Schlüssel in Ihrer Info.plist eingestellt haben, wird Ihre App lange laufende Aufgaben unterstützen. Fügen Sie also in der applicationDidEnterBackground-Methode eine Methode hinzu, die bei einem Anruf eine UILocalNotification erstellt. UILocalNotifications benachrichtigt den Benutzer mit einer Warnmeldung und einem Ton Ihrer Wahl. Sobald der Benutzer benachrichtigt wird und der Benutzer die App eingibt, wird die App in den Vordergrund gerückt, wo Sie die Methode hinzufügen können, um den Anruf zu empfangen.

Im Alert-Text der LocalNotification können Sie die Informationen des Anrufers an den Benutzer senden.

EDIT:Check out the answer of Paul Richter in this link, wo er sagt,

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. 

Obwohl nicht vollständig in die Bibliothek bezogen Sie verwenden, hat er einen anständigen explaination des Verfahrens gegeben.

Hoffe, das hilft.

0

Um die VoIP App im Hintergrund laufen zu lassen und auf einem Server zu registrieren, sollte man TCP auf iOS verwenden. Wenn etwas passiert, können Sie eine lokale Benachrichtigung auslösen.