最近在使用腾讯实时音视频SDK实现屏幕录制推流功能。跟着官方文档一顿操作,咦~~~咋就不行能。
参考文档:
//www.greatytc.com/p/401b5b632d5b
https://blog.csdn.net/holdsky/article/details/102602213
https://blog.csdn.net/weixin_30265171/article/details/98812687
http://www.openradar.me/FB7671583
踩过的坑一:
按照文档的操作,一顿设置。满心欢喜的run,以为成功就在眼前,结果,点击屏幕共享之后,没有任何反应。
之后尝试从控制中心中长按录屏按钮来手动启动屏幕分享。然后,更加绝望的事情来了,不显示我的Demo。如图1所示:
一番排查下来,发现,少了个步骤。创建了target之后,需要在xcode中,选择新创建的target,build,然后再run,在弹出的会话框里选择主APP,如图2所示。之后,再切换主APP的target,run,之后,调用屏幕共享的方法之后,控制中心中长按录屏按钮弹出的会话框里就有了Demo。感觉距离成功又近了一步。
踩过的坑二:
继续,发现事情并没有那么简单。点击共享屏幕按钮,毫无反应。且在屏幕分享按钮的响应函数中调用了TRTCBroadcastExtensionLauncher的方法launch。TRTCBroadcastExtensionLauncher如图3所示:
没有明显的报错,没有提示。嗯~遇到这种问题,着实脑瓜疼。检查控制台输出日志,终于,在一片的日志中发现了如下输出:
[Assert]Error in UIKit client: -[UIWindow setScreen:]should not be called if the client adopts UIScene lifecycle. Call -[UIWindow setWindowScene:]instead.
各种排查之后,意识到问题可能是出在了Xcode11的新特性SceneDelegate上。Xcode11新变化:SceneDelegate
删除SceneDelegate之后,再次Run,完美。一切都刚刚好。