iOS跨應用錄屏方案

接到一個跨應用錄屏的需求,要求封裝成SDK給到別的團隊去使用,調研了一波錄屏相關的實現,iOS目前唯一能實現的怕也只是基於ReplayKitBroadcast Upload Extension

但是有一定侷限性,在控制中心啓動錄屏,如果手機存在多個應用支持該方式錄屏,長按出現一個可選列表,很容易選錯或者誤操作, 可能蘋果也想到了這一點在iOS12以上則可以在應用內調用啓動錄屏,就是UI不易定製,得用蘋果自帶的UI或者hack按鈕點擊(hack有一定風險 後續版本如果UI層級改變或者實現方式改變就得跟着改 萬一出現問題容易出現生產事故)

主要思路

  • 宿主需要獲得視頻文件或者視頻流進行業務處理, 這裏就涉及到進程間通信,目前瞭解到的實現方案有

    • 如果是錄製視頻文件則可以採用 App Groups 實現文件沙盒共享

    • 如果是視頻流數據 可以通過本地Socket服務, 建立長鏈接進行通信

  • 錄屏回調事件轉發,採用底層的通知中心(CFNotificationCenterGetDarwinNotifyCenter)從拓展發送給宿主,然後宿主進行轉發處理

  • 創建Broadcast Upload ExtensionSampleHandler裏處理視頻數據的寫入,轉發回調等邏輯,也可以封裝一個framework專門處理視頻寫入以及進程通信

目前遇到的問題

  1. 應用切到後臺,點擊左上角紅點結束錄屏,使用CFNotificationCenterGetDarwinNotifyCenter通知宿主,控制檯打印沒有及時顯示,而是等應用切到前臺纔有打印, 這裏涉及到停止錄屏的後續操作,跨應用錄屏的話停止錄屏時,宿主應用應該需要知道已經結束錄屏了,然後回到宿主應用內進行下一步的業務邏輯... 這一個問題還需進一步驗證,那就是在拓展裏SampleHandler結束回調時,嘗試直接打開喚醒宿主應用

  2. 集成問題也比較複雜,不像普通SDK只需拖拽一個framework就完事了,這個還需項目新建target Broadcast Upload Extension 添加錄屏處理的代碼,然後還要新建App Group進行關聯

未經作者授權,禁止轉載
THE END
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章