Siri ShortCuts-NSUserActivity,不显示给定的缩略图

时间:2018-10-11 07:01:50

标签: ios swift sirishortcuts

这是我注册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 个答案:

答案 0 :(得分:0)

就我所能确定的来说,有两个可能的问题导致了这一点。首先是您的逻辑应为:attributes.thumbnailData = image.pngData()。如果不是那样,那就是为特定的NSUserActivity缓存缩略图的问题,并且从iOS 9开始就存在。CoreSpotlight框架似乎将图标数据与activityType关联起来,因此,如果您以前已经捐赠了NSUserActivity对象,即使您以前没有提供图标图像,创建新的NSUserActivity对象也将不允许您更新图标图像。最好的办法是在内部跟踪所有持久性标识符,删除旧的标识符,并创建一个全新的NSUserActivity,用户也必须将其视为新的快捷方式。

这绝对是一个愚蠢的问题,我希望自iOS 9推出以来的3.5年中,Apple会引入一种更新NSUserActivity缩略图的方法,但我不能找到任何证据证明是这种情况。抱歉,我可以为您提供更好的答案。