iOS voip 后台保持长连接

本文详细探讨了iOS应用在后台时如何处理VoIP长连接,特别是遇到程序挂起、异常错误(如exceeded 15 wakes in 300 sec)的情况。重点指出一个程序只能有一个socket设置为voip属性,否则可能导致后台崩溃。解决方案在于正确管理和释放voip stream连接,确保仅有一个有效的VoIP连接存在。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近项目出了点问题不得不重新认真地研究了这一块,顺便记录一下以方便以后查阅。

- (void) releaseStream
{
    if (mReadStream)
    {
        CFReadStreamClose(mReadStream);
        CFRelease(mReadStream);
        mReadStream = NULL;
    }
    
    if (mWriteStream)
    {
        CFWriteStreamClose(mWriteStream);
        CFRelease(mWriteStream);
        mWriteStream = NULL;
    }
}


- (BOOL) setVoipMode
{
    if (mReadStream == NULL || mWriteStream == NULL)
    {
        NSLog(@"creating read and write stream...");
        
        CFStreamCreatePairWithSocket(NULL, (CFSocketNativeHandle)mSock,
                                     &mReadStream, &mWriteStream);
        
        if (mReadStream)
            CFReadStreamSetProperty(mReadStream,kCFStreamPropertyShouldCloseNativeSocket,
                                    kCFBooleanFalse);
        if (mWriteStream)
            CFWriteStre
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值