從一個月前開始開始接收公司的直播類app.到今天為止測試都已接近尾聲,但是產品哥哥加了一個要求,就是在app進入後台後也實時保證錄音並且推流.
剛聽到這個的時候我也是懵逼的,可是冷靜下來找資料,還是有所收獲的,在此分享一下.
對於我們的app要求後台也實時錄音並推流主要要注意兩點:
1.設置應用為voip應用
打開-info.plist文件,加入如下的key
Required background modes,追加
//保證app進入後台後實時錄音 App plays audio or streams audio/video using AirPlay
//保證app進入後台後實時推流 App provides Voice over IP services
2.將socket設置成異步模式,並將socket設置成VOIP類的,以便系統能夠托管它。
CFStreamCreatePairWithSocket(NULL, (CFSocketNativeHandle)(mosq->sock), &readStream, NULL); //保證不關閉原來的socket CFReadStreamSetProperty(readStream, kCFStreamPropertyShouldCloseNativeSocket, kCFBooleanFalse); //設置成voip socket CFReadStreamSetProperty(readStream, kCFStreamNetworkServiceType, kCFStreamNetworkServiceTypeVoIP);
3.安裝keepAliveTimeout handler,讓系統每隔一段時間重新建立連接
UIApplication *application = [UIApplication sharedApplication]; [application setKeepAliveTimeout:600 handler:^{ [self reconnect]; }];
到這裡command + R 運行程序,開始直播然後將app切入後台會發現屏幕頂部會有一條紅色條,然後用播放器播放會發現錄音與推流成功.