这是我注册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()
}
我做错什么了吗?
答案 0 :(得分:0)
就我所能确定的来说,有两个可能的问题导致了这一点。首先是您的逻辑应为:attributes.thumbnailData = image.pngData()
。如果不是那样,那就是为特定的NSUserActivity
缓存缩略图的问题,并且从iOS 9开始就存在。CoreSpotlight
框架似乎将图标数据与activityType
关联起来,因此,如果您以前已经捐赠了NSUserActivity
对象,即使您以前没有提供图标图像,创建新的NSUserActivity
对象也将不允许您更新图标图像。最好的办法是在内部跟踪所有持久性标识符,删除旧的标识符,并创建一个全新的NSUserActivity,用户也必须将其视为新的快捷方式。
这绝对是一个愚蠢的问题,我希望自iOS 9推出以来的3.5年中,Apple会引入一种更新NSUserActivity
缩略图的方法,但我不能找到任何证据证明是这种情况。抱歉,我可以为您提供更好的答案。