如何解决自定义 IntentResponse 返回图像
我的应用程序应该向快捷方式应用程序捐赠一个快捷方式,以检索随机图像。 但是我无法返回图像,并且确实了解应该如何完成。
我的意图文件如下。由于“图像”不是可能的返回类型,我改为返回一个文件。
我的代码:
class TestIntentHandler: NSObject,TestIntentIntentHandling {
func handle(intent: TestIntentIntent,completion: @escaping (TestIntentIntentResponse) -> Void) {
let response = TestIntentIntentResponse(code: .success,userActivity: nil)
let data = UIImage(named: "test")!.pngData()!
response.image = INFile(data: data,filename: "tester",typeIdentifier: "png")
completion(response)
}
func confirm(intent: TestIntentIntent,completion: @escaping (TestIntentIntentResponse) -> Void) {
completion(TestIntentIntentResponse(code: .ready,userActivity: nil))
}
}
但是测试快捷方式不显示图像。
解决方法
尝试运行相同类型的代码,发现如果在创建 --stdin
对象时为其提供正确的 typeIdentifier
(UTI),Shortcut 会将文件识别为图像。例如,要显示 PNG 文件,您可以使用 INFile
现在您的问题可能是“我从哪里获得这些标识符?”。好吧,这取决于您的目标 iOS 版本。您可以使用 UTTypeCreatePreferredIdentifierForTag(iOS or you can read the Apple reference list here
我将在这里留下 UTTypeCreatePreferredIdentifierForTag 示例,由 this answer 提供
"public.png"
... 以及 URL 示例,由 this other answer
提供let fileExtension = "png" // This could be extracted from an URL
let uti = UTTypeCreatePreferredIdentifierForTag(
kUTTagClassFilenameExtension,fileExtension,nil)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。