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