显示来自 iOS 广播扩展的自定义错误消息

Sci*_*eSE 3 ios swift replaykit

我的应用程序包由主应用程序(普通 iOS 应用程序)和广播扩展(ReplayKit 2)组成。我的应用程序包含一个按钮 ( RPSystemBroadcastPickerView),它会打开一个系统弹出窗口来选择一个广播扩展并启动它。

对扩展内部广播扩展的状态没有太多控制,但是继承的扩展类RPBroadcastSampleHandler有一个有用的方法 ( finishBroadcastWithError),它允许我们从扩展中触发失败(这将反过来结束扩展的进程并显示一个弹出窗口,显示一个错误和 2 个按钮)。

finishBroadcastWithError方法接受一个错误作为参数。但是,文档中绝对没有关于如何自定义此系统弹出窗口中显示的错误消息的信息。

我尝试谷歌以了解如何设置错误消息,因为我看到了一些应用程序(Mobcrush),当出现此弹出窗口时,它们以某种方式能够设置自定义错误消息。为了获得更多信息,我观看了 WWDC 2017 和 WWDC 2018 中关于 ReplayKit 2 的两个视频,唯一一张提到了 Replay Kit 2 中的错误处理的幻灯片,其中演示了以下代码:

let userInfo = [NSLocalizedFailureReasonErrorKey : "Not Logged In"]
let error = NSError(domain: "RPBroadcastErrorDomain", code: 401, userInfo: userInfo)
finishBroadcastWithError(error)
Run Code Online (Sandbox Code Playgroud)

我立即尝试了它,但不幸的是它对错误弹出窗口中显示的错误没有任何影响。我认为要么是 Replay Kit 2 中的一些错误,要么是某些内容已更改并且没有正确记录(由于某种原因,Replay Kit 2 没有很好的记录,我不得不从不同来源收集信息来编写一个应用程序)作品)。

我什至尝试在字典中设置多个不同的键,希望其中至少有一个会更改弹出窗口中的错误消息,但没有一个起作用。

func stop(message error: String) {
    let userInfo = [NSLocalizedDescriptionKey : error,
                    NSLocalizedRecoverySuggestionErrorKey : error,
                    NSLocalizedFailureErrorKey : error]
    let error = NSError(domain: "RPBroadcastErrorDomain", code: 1, userInfo: userInfo)
    finishBroadcastWithError(error)
}
Run Code Online (Sandbox Code Playgroud)

我错过了文档中的某些内容吗?是否有任何“官方”方法可以更改错误消息?

ian*_*ank 9

这组参数出现自定义错误:

let userInfo = [NSLocalizedFailureReasonErrorKey: "failed to broadcast because...."]
NSError(domain: "ScreenShare", code: -1, userInfo: userInfo)
Run Code Online (Sandbox Code Playgroud)