显示来自 iOS 广播扩展的自定义错误消息
Display custom error message from iOS broadcasting extension
我的应用程序包由主应用程序(普通 iOS 应用程序)和广播扩展程序(ReplayKit 2)组成。我的应用程序包含一个按钮 (RPSystemBroadcastPickerView
),它会打开系统弹出窗口 select 一个广播扩展并启动它。
扩展内部对广播扩展的状态没有太多控制,但是继承RPBroadcastSampleHandler
的扩展class有一个有用的方法(finishBroadcastWithError
),这允许我们从扩展中触发失败(这将依次结束扩展的进程并显示一个弹出窗口 window,显示一个错误和 2 个按钮)。
finishBroadcastWithError
方法接受错误作为参数。但是绝对 no information in docs 如何自定义此系统弹出窗口中显示的错误消息 window。
我尝试 google 以了解如何设置错误消息,因为我看到一些应用程序 (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)
我立即尝试了,但不幸的是,它对错误弹出窗口中显示的错误没有任何影响。我假设这是 Replay Kit 2 中的一些错误,或者某些内容已更改并且没有正确记录(出于某种原因,Replay Kit 2 没有很好的记录,我不得不从不同来源收集信息来编写一个应用程序作品)。
我什至尝试在字典中设置多个不同的键,希望其中至少有一个可以更改弹出窗口中的错误消息 window,但其中 none 个有效。
func stop(message error: String) {
let userInfo = [NSLocalizedDescriptionKey : error,
NSLocalizedRecoverySuggestionErrorKey : error,
NSLocalizedFailureErrorKey : error]
let error = NSError(domain: "RPBroadcastErrorDomain", code: 1, userInfo: userInfo)
finishBroadcastWithError(error)
}
我是否遗漏了文档中的内容?有什么 "official" 方法可以更改错误消息吗?
这组参数出现自定义错误:
let userInfo = [NSLocalizedFailureReasonErrorKey: "failed to broadcast because...."]
NSError(domain: "ScreenShare", code: -1, userInfo: userInfo)
我的应用程序包由主应用程序(普通 iOS 应用程序)和广播扩展程序(ReplayKit 2)组成。我的应用程序包含一个按钮 (RPSystemBroadcastPickerView
),它会打开系统弹出窗口 select 一个广播扩展并启动它。
扩展内部对广播扩展的状态没有太多控制,但是继承RPBroadcastSampleHandler
的扩展class有一个有用的方法(finishBroadcastWithError
),这允许我们从扩展中触发失败(这将依次结束扩展的进程并显示一个弹出窗口 window,显示一个错误和 2 个按钮)。
finishBroadcastWithError
方法接受错误作为参数。但是绝对 no information in docs 如何自定义此系统弹出窗口中显示的错误消息 window。
我尝试 google 以了解如何设置错误消息,因为我看到一些应用程序 (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)
我立即尝试了,但不幸的是,它对错误弹出窗口中显示的错误没有任何影响。我假设这是 Replay Kit 2 中的一些错误,或者某些内容已更改并且没有正确记录(出于某种原因,Replay Kit 2 没有很好的记录,我不得不从不同来源收集信息来编写一个应用程序作品)。
我什至尝试在字典中设置多个不同的键,希望其中至少有一个可以更改弹出窗口中的错误消息 window,但其中 none 个有效。
func stop(message error: String) {
let userInfo = [NSLocalizedDescriptionKey : error,
NSLocalizedRecoverySuggestionErrorKey : error,
NSLocalizedFailureErrorKey : error]
let error = NSError(domain: "RPBroadcastErrorDomain", code: 1, userInfo: userInfo)
finishBroadcastWithError(error)
}
我是否遗漏了文档中的内容?有什么 "official" 方法可以更改错误消息吗?
这组参数出现自定义错误:
let userInfo = [NSLocalizedFailureReasonErrorKey: "failed to broadcast because...."]
NSError(domain: "ScreenShare", code: -1, userInfo: userInfo)