使用該框架的前提
一衙传、IOS系統(tǒng)版本需要大于等于9.0
[[UIDevice currentDevice].systemVersion floatValue] < 9.0 // IOS系統(tǒng)版本小于9.0就不支持錄屏功能
二肚邢、硬件要求
[RPScreenRecorder sharedRecorder].available 這句代碼返回NO就是不支持錄屏功能的老設(shè)備
注:支持ReplayKit的是大于等于以下列出的蘋(píng)果設(shè)備:
1.iPhone 5 s
2.iPad mini 2
3.iPod Touch第六代
4.iPad Air。
三植兰、我在IOS 10.3.3中遇到的坑
1.只要你系統(tǒng)語(yǔ)言切換到英文,然后停止錄屏的時(shí)候就會(huì)失敗,錯(cuò)誤信息是:RPRecordingErrorFailed = -5804的錯(cuò)誤康二。系統(tǒng)語(yǔ)言本來(lái)在中文模式下錄屏功能好好的,結(jié)果切換到英文后就會(huì)引起-5804的錯(cuò)誤勇蝙,就算再把系統(tǒng)語(yǔ)言切換回中文也是會(huì)錄屏失敗沫勿。但是很神奇的是系統(tǒng)語(yǔ)言切換到日文就可以錄屏成功。但是再?lài)L試切換到中文味混、英文下還是錄屏失敗产雹。
當(dāng)該方法調(diào)用時(shí)用戶(hù)會(huì)收到權(quán)限請(qǐng)求警告,這個(gè)警告每次會(huì)在開(kāi)始錄制時(shí)出現(xiàn)翁锡。然而蔓挖,一旦用戶(hù)選擇了其中一種偏好設(shè)置,系統(tǒng)會(huì)在接下來(lái)的8分鐘記住這個(gè)選擇馆衔。和獲取用戶(hù)相冊(cè)權(quán)限只要彈一次是完全不同的瘟判,而且這個(gè)錄屏權(quán)限也不會(huì)像相冊(cè)權(quán)限一樣顯示在系統(tǒng)設(shè)置里面供修改。
第一項(xiàng)是允許錄屏和錄聲音
第二項(xiàng)是只允許錄屏
第三項(xiàng)是拒絕
監(jiān)聽(tīng)錯(cuò)誤碼-5801可以得知用戶(hù)是選擇第三項(xiàng)拒絕錄屏的角溃,這個(gè)時(shí)候你可以選擇彈窗讓用戶(hù)確定是否真的不開(kāi)啟該權(quán)限拷获,如果他選擇開(kāi)啟,你可以再調(diào)用startRecordingWithMicrophoneEnabled這個(gè)方法讓這個(gè)權(quán)限選擇再次彈出减细。
這個(gè)權(quán)限選擇界面的文字沒(méi)給我們做國(guó)際化的方法刀诬,無(wú)論在簡(jiǎn)體中文還是繁體下都是顯示英文的,讓我震驚的是我切換成日文的時(shí)候這些權(quán)限選擇的文字居然變成日文了邪财,他沒(méi)做簡(jiǎn)體或者繁體的國(guó)際化陕壹,只是做了少數(shù)語(yǔ)言的翻譯。
四树埠、如何自定義RPPreviewViewController界面糠馆?
RPPreviewViewController這個(gè)錄屏結(jié)束后的預(yù)覽界面也是不能自定義,因?yàn)槟惬@取不到save怎憋、cancel按鈕又碌,你只能通過(guò)代理方法去監(jiān)聽(tīng)他的事件九昧,我就算是覆蓋一層View在save和cancel按鈕上然后把userInteractionEnabled = NO,事件也不會(huì)穿透到父類(lèi)的save按鈕上。但是我通過(guò)運(yùn)行時(shí)獲取頭文件發(fā)現(xiàn)NSURL *movieURL = [previewViewController valueForKey:@"movieURL"]; movieURL就是錄屏視頻文件的本地路徑毕匀,我可以直接拿到這個(gè)路徑然后就可以自己控制什么情況下保存視頻到相冊(cè)或者分享铸鹰,這就可以完全自定義預(yù)覽界面了。
NSURL *movieURL = [previewViewController valueForKey:@"movieURL"];
ALAssetsLibrary *library = [[ALAssetsLibrary alloc]init];
[library writeVideoAtPathToSavedPhotosAlbum:movieURL completionBlock:^(NSURL *assetURL, NSError *error) {
if (error) {
NSLog(@"Save video to system Album failed:%@",error);
}else{
NSLog(@"Save video to system album success!");
}
}];
這兩句代碼就可以拿到視頻并保存到系統(tǒng)相冊(cè)