iOS:在后台接收媒体

时间:2012-10-31 02:24:10

标签: ios5 ios4 udp voip pjsip

我正在开发基于SIP和VoIP的iOS应用程序,并且要求应用程序应该在后台连续运行。我正在使用pjsip lib。

我知道要在bacground中运行iOS应用程序,我们需要这个

  • 使用voip值在Info.plist中设置UIBackgroundModes键

  • 创建了一个传递给setKeepAliveTimeout的处理程序:handler:for 保持连接活着

但我只是希望如果我的应用程序在后台运行,我可以通过(RTP / RTCP)接收UDP数据包,而我保持UDP端口始终打开。

我已经完成了帖子:

但是,我还没有明确的想法,即使应用程序处于后台或前台,我们也可以连续获取UDP数据包。

因此,如果iOS客户端应用程序中有任何数据,应用程序应该能够通知用户。

请提出建议。

2 个答案:

答案 0 :(得分:0)

为了在后台运行VoIP应用程序并在服务器上注册,应该在iOS上使用TCP。当事情发生时,您可以发出本地通知。

答案 1 :(得分:-1)

我认为您可以在应用程序在后台运行时设置本地通知,并通过通知指示来电用户。当用户输入应用程序时,您可以显示来电。

在下面的链接中,检查 Background Execution and Multitasking and also Scheduling the Delivery of Local Notifications

IE,因为您已在Info.plist中设置了UIBackgroundModes键,您的应用程序将支持长时间运行的任务。因此,在applicationDidEnterBackground方法中添加一个方法,在调用时创建UILocalNotification。 UILocalNotifications会通过警报消息和您选择的音调通知用户。因此,一旦用户收到通知并且用户进入应用程序,该应用程序将进入前台,您可以在其中添加方法以便他接收呼叫。

在LocalNotification的警报正文中,您可以将呼叫者的信息发送给用户。

编辑: Check out the answer of Paul Richter in this link,他说

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. 

虽然与你正在使用的图书馆没有完全相关,但他对这个过程给出了不错的解释。

希望这会有所帮助。