在IOS上集成VOIP功能能后,前后台切换时遇到的坑

来源:互联网 发布:windows 7传统窗口 编辑:程序博客网 时间:2024/05/29 08:51

最近公司的设计APP中,集成进去了VOIP的功能,今天我就在IOS上集成VOIP功能,简单述说一下:

1、首先加入pushkit的功能包。

2、申请一个VOIPPush的证书,服务器要通过这个证书,才能给客户端推送VOIP消息,看官方解释,应该1s能到,具体参考官方的pushKit文档。

3、启动voip推送功能。

4、打开后台运行voip,

     


以上功能,只是做离线VOIP的一些常用功能,稍微有点经验的人,都可以搞定!



其实我在VOIP遇到的主要的坑,是这样的,

当启用Voice over IP 功能后,当APP进入后台后,就会一直在后台跑,知道系统通知你,资源用完了,当再次打开APP的时候,先Crash一次,抓到的日志如下:

Exception Type:  EXC_RESOURCE
Exception Subtype: CPU_FATAL
Exception Message: (Limit 80%) Observed 97% over 60 secs


想要解决这个问题,主要的思路,就是把VOIP的那条TCP,标志上VOIP的标记,其他不变。

由于多数的voip通讯协议是C++编写的,想要在不修改原来socket代码的基础上,标上标志,需要把socket 的 句柄 抛出来,执行以下代码:


    CFReadStreamRef readStream;    CFWriteStreamRef writeStream;    CFStreamCreatePairWithSocket(NULL, m_socket,  &readStream, &writeStream);        NSInputStream* miStream;    NSOutputStream* moStream;        miStream = (__bridge NSInputStream *)readStream;    moStream = (__bridge NSOutputStream *)writeStream;        [miStream setProperty:NSStreamNetworkServiceTypeVoIP forKey:NSStreamNetworkServiceType];    [moStream setProperty:NSStreamNetworkServiceTypeVoIP forKey:NSStreamNetworkServiceType];




0 0
原创粉丝点击