Siri ShortCuts - NSUserActivity,不显示给定的缩略图
Posted
技术标签:
【中文标题】Siri ShortCuts - NSUserActivity,不显示给定的缩略图【英文标题】:Siri ShortCuts - NSUserActivity, Does not display given thumbnail image 【发布时间】:2018-10-11 07:01:49 【问题描述】:这就是我注册我的 UserActivity 的方式。
我得到了捷径并且功能有效。
但是我将应用图标作为缩略图而不是我设置的那个,
func registerUserActivity(component: Component)
userActivity = NSUserActivity.init(activityType: "com.company.app.openComponent")
if #available(ios 12.0, *)
userActivity.isEligibleForPrediction = true
userActivity.isEligibleForSearch = true
userActivity.suggestedInvocationPhrase = "Open \(component.componentName ?? "recent Component")"
userActivity.title = "Open \(component.componentName ?? "recent component")"
userActivity.userInfo = ["componentName" : component.componentName]
let attributes = CSSearchableItemAttributeSet.init(itemContentType: kUTTypeItem as String)
let image = UIImage(named: "cloud_car")!
attributes.thumbnailData = UIImagePNGRepresentation(image)
attributes.contentDescription = "Opens \(component.componentName ?? "recent Component") "
userActivity.contentAttributeSet = attributes
userActivity.becomeCurrent()
我做错了吗?
【问题讨论】:
我遇到了同样的问题,不知道出了什么问题。 【参考方案1】:据我所知,有 2 个可能的问题导致此问题。首先是你的逻辑应该是:attributes.thumbnailData = image.pngData()
。如果不是这样,这是为特定NSUserActivity
缓存缩略图的问题,并且自 iOS 9 以来一直存在。CoreSpotlight
框架似乎将图标数据与activityType
相关联,所以如果你以前捐赠了 NSUserActivity
对象,创建一个新的 NSUserActivity
对象将不允许您更新图标图像,即使您之前没有提供图标图像。您可以做的最好的事情是在内部跟踪所有持久标识符,删除旧标识符,并创建一个全新的 NSUserActivity,用户也必须将其视为新的快捷方式。
这绝对是个愚蠢的问题,我希望在 iOS 9 发布后的 3.5 年里,Apple 会引入一种更新 NSUserActivity
缩略图的方法,但我找不到任何证据表明情况确实如此。对不起,我可以给你一个更好的答案。
【讨论】:
【参考方案2】:当NSUserActivity
显示在快捷方式或 Siri 建议中时,它始终使用应用程序图标。目前没有办法改变这种行为。
属性集中的缩略图仅在 Spotlight 搜索结果中显示项目时使用。因此,如果某个活动出现在搜索结果中,我发现它将使用那里的缩略图。
这种行为没有得到很好的记录。很容易阅读 CoreSpotlight
文档并认为缩略图对于 NSUserActivity
的工作方式相同,但它们根本不受支持。
【讨论】:
以上是关于Siri ShortCuts - NSUserActivity,不显示给定的缩略图的主要内容,如果未能解决你的问题,请参考以下文章
如何将 Clockify API 与 Siri Shortcuts 一起使用
Siri Shortcuts App 总是在地理定位中抛出 kCLErrordomain 错误 2
Siri Shortcuts 的 Intent Extension 在 Sample App 中有效,不在现有项目中
使用 NSUserActivity 在锁定屏幕上看不到我的 siri 快捷方式