这就是我如何注册我的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()
}我做错什么了吗?
发布于 2019-02-28 11:44:17
据我所知,有两个可能的问题导致了这个问题。第一个是你的逻辑应该是:attributes.thumbnailData = image.pngData()。如果不是这样,这就是缓存特定NSUserActivity的缩略图的问题,从iOS 9开始就有了。CoreSpotlight框架似乎将图标数据与activityType关联起来,所以如果您以前捐赠了那个NSUserActivity对象,那么创建一个新的NSUserActivity对象将不允许您更新图标图像,即使您以前没有提供图标图像。最好的做法是在内部跟踪所有持久标识符,删除旧标识符,然后创建一个全新的NSUserActivity,用户也必须将其视为新的快捷方式。
这绝对是一个愚蠢的问题,我本希望在iOS 9问世后的3.5年里,苹果会推出一种更新NSUserActivity缩略图的方法,但我找不到任何证据证明这是真的。抱歉,我能给你一个更好的答案。
发布于 2021-12-19 16:25:38
当NSUserActivity显示在快捷方式或Siri建议中时,它总是使用应用图标。目前还没有办法改变这种行为。
仅当项目显示在Spotlight搜索结果中时,才使用属性集中的缩略图。因此,如果一个活动出现在搜索结果中,我发现它会使用那里的缩略图。
这种行为的记录很少。很容易阅读CoreSpotlight文档,并认为缩略图对NSUserActivity也是一样的,但它们根本不受支持。
https://stackoverflow.com/questions/52754138
复制相似问题