这就是我注册用户活动的方式。
我得到了捷径和功能性的工作。
但是我得到的应用程序图标是缩略图,而不是我设置的那个,

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()

}

我做错什么了吗?

最佳答案

据我所知,有两个可能的问题导致了这一点。首先,你的逻辑应该是:attributes.thumbnailData = image.pngData()。如果不是这样,那就是缓存特定NSUserActivity的缩略图的问题,从iOS 9开始就一直存在。CoreSpotlight框架似乎将图标数据与activityType关联,因此,如果您以前捐赠过该NSUserActivity对象,则创建新的NSUserActivity对象将不允许您更新图标图像,即使您以前未提供图标图像。最好的办法是在内部跟踪所有持久标识符,删除旧的标识符,并创建一个全新的NSUserActivity,用户也必须将其视为一个新的快捷方式。
这绝对是一个愚蠢的问题,我本希望在iOS 9问世后的3.5年里,苹果会推出一种更新NSUserActivity缩略图的方法,但我找不到任何证据证明这是真的。对不起,我可以给你一个更好的答复。

关于ios - Siri ShortCuts-NSUserActivity,不显示给定的缩略图,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52754138/

10-09 09:13