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 快捷方式

iOS12 SiriKit新特性 shortcuts(Objective-C版本)

shortcuts 快捷键