ios - 显示来自 iOS 广播扩展的自定义错误消息
问题描述
我的应用程序包由主应用程序(普通 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)
我立即尝试了它,但不幸的是它对错误弹出窗口中显示的错误没有任何影响。我假设它要么是 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)
}
我错过了文档中的某些内容吗?是否有任何“官方”方式来更改错误消息?
解决方案
我收到了使用这组参数的自定义错误:
let userInfo = [NSLocalizedFailureReasonErrorKey: "failed to broadcast because...."]
NSError(domain: "ScreenShare", code: -1, userInfo: userInfo)
推荐阅读
- node.js - 如何从另一条路线调用一个模型
- sql - 将具有两个不同日期的数据分组并取最新日期
- javascript - nodejs 按文件类型计算文件大小
- rust - 仅匹配有效的 UTF-8 字符
- javascript - 如何检查 discord.js 中是否存在消息
- javascript - Angular 8 - 在单词出现时动态插入带有回调调用的按钮
- exception - 使用 Apache Camel 处理 onException() 异常
- android - 如何从 Rest API 获取动态数据
- centos7 - 参考:jfrog artifactory could not validate router error
- git - 无法通过 jenkins 中的 ssh 连接到 bitbucket