Siri ShortCuts - NSUserActivity, не отображает данное эскизное изображение - PullRequest
0 голосов
/ 11 октября 2018

Так я регистрирую свою 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 голосов
/ 28 февраля 2019

Как я могу определить, есть две возможные проблемы, вызывающие это.Во-первых, ваша логика должна быть: attributes.thumbnailData = image.pngData().Если это не так, это проблема с кэшированием миниатюры для определенного NSUserActivity, которая существует с iOS 9. Платформа CoreSpotlight, похоже, связывает данные значка с activityType, так что если вы ранеепожертвовав этот объект NSUserActivity, создание нового объекта NSUserActivity не позволит вам обновить изображение значка, даже если вы ранее не предоставляли изображение значка.Лучшее, что вы можете сделать, - это отслеживать все постоянные идентификаторы внутри себя, удалить старый и создать совершенно новый NSUserActivity, который пользователь должен будет рассматривать как новый ярлык.

Это определенноглупая проблема, и я надеялся, что за 3,5 года, прошедшие с выхода iOS 9, Apple представила способ обновления миниатюрного изображения NSUserActivity, но я не могу найти никаких доказательств того, что это так,Извините, я мог бы дать вам лучший ответ.

...