尝试与 Airplay 断开连接时,带有嵌入式 iframe 播放器的 WKWebView 会导致访问错误

Posted

技术标签:

【中文标题】尝试与 Airplay 断开连接时,带有嵌入式 iframe 播放器的 WKWebView 会导致访问错误【英文标题】:WKWebView with embedded iframe player causes bad access when trying to disconnect from airplay 【发布时间】:2020-05-18 14:16:39 【问题描述】:

我有一个 WKWebView,它使用这个 url 加载请求,它在加载后播放内联视频并且可以切换到全屏,当切换到全屏时,会出现本机 ios 播放器,该播放器中有一个播放按钮让用户通过airplay流式传输视频,连接airplay和流式播放、暂停等都没有问题。

问题是,当我尝试将播放从播放切换菜单切换回应用程序时,会导致日志访问异常:

Error acquiring assertion: <NSError: 0x283cbe310; domain: RBSAssertionErrorDomain; code: 2; reason: "Client is missing required entitlement"> 

    userInfo = 
        RBSAssertionAttribute = <RBSLegacyAttribute: 0x108054960; requestedReason: MediaPlayback; reason: MediaPlayback; flags: PreventTaskSuspend | PreventTaskThrottleDown | WantsForegroundResourcePriority>;


[ProcessSuspension]  0x1183e1018 - ProcessAssertion() PID 29725 Unable to acquire assertion for process with PID 29725[![enter image description here][1]][1]

连接到airplay时连接指示器看起来也很奇怪

【问题讨论】:

【参考方案1】:

最终解决了这个问题,它在 NSObject 上有类别,其中覆盖了 copyWithZone 方法并导致 BAD_ACCESS,因此删除该库并在项目端实现其功能解决了问题。

【讨论】:

以上是关于尝试与 Airplay 断开连接时,带有嵌入式 iframe 播放器的 WKWebView 会导致访问错误的主要内容,如果未能解决你的问题,请参考以下文章

Audio Units是不是支持airplay?

可以使用 Apple AirPlay 实现自己的 linux 应用程序吗?

带有多个 AVPlayer 实例的 AirPlay

检测命名管道与 I/O 完成断开连接

电缆与 Mac 断开连接时应用程序崩溃

ios 9 中的 Asyncsocket 错误 - 在连接或接受连接时尝试连接。先断开