gpt4 book ai didi

ios - NSUserActivity 与 Core Spotlight 深层链接

转载 作者:行者123 更新时间:2023-11-28 14:26:59 26 4
gpt4 key购买 nike

我同时使用 NSUserActivity 和 Core Spotlight 来索引我应用程序中的内容。我使用 Core Spotlight 的原因是因为我想在用户访问(打开)它之前索引这些内容。

我面临的问题是在 AppDelegate 方法中:
func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([Any]?) -> Void) -> Bool

基本上 userActivity ONLY 在我的 viewController 中执行此操作时包含正确的信息:

userActivity = myUserActivity

但如果我这样做了,它就不起作用了:

CSSearchableIndex.default().indexSearchableItems(searchableItems)

通过使用第二种方法(Core Spotlight),我可以在 Spotlight 搜索中看到我的所有结果,但是当我点击该项目时,我在 AppDelegate 方法中没有任何信息。

最糟糕的是:


po userActivity.activityType
“com.apple.corespotlightitem”

如果我打印 activityType,而不是我自己的,我得到这个...

有什么建议吗?

最佳答案

当您的应用从 CoreSpotlight 结果启动时,您会得到一个 CSSearchableItemActionType

您需要通过检索 CSSearchableItemActivityIdentifier 来处理此类操作 - 此值将匹配您在将可搜索项目提交到索引时提供的标识符。

类似于:

func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([Any]?) -> Void) -> Bool {
if userActivity.activityType == CSSearchableItemActionType {
guard let selectedItem = userActivity.userInfo?[CSSearchableItemActivityIdentifier] as? String else {
return
}
// Do something with selectedItem
}
}

关于ios - NSUserActivity 与 Core Spotlight 深层链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51489110/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com