当我点击 Core Spotlight 搜索的结果时,应用程序会启动,但
AppDelegate.swift
中的函数不会被调用:
func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
print("called")
}
其中包含用于导航到特定视图控制器和加载数据的逻辑。
有些人这里似乎推荐使用
SceneDelegate.swift
:
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
print("called"
}
但也没有被 Core Spotlight 调用。
似乎被调用的唯一函数是:
func sceneDidBecomeActive(_ scene: UIScene) {}
func sceneWillEnterForeground(_ scene: UIScene) {}
在
SceneDelegate.swift
中,但没有所需的 userActivity
参数。
我花了很长时间才找到这个,所以尽管这是一个老问题,但我认为我应该添加对我有用的答案!
我在这里找到了答案:https://betterprogramming.pub/implement-core-spotlight-in-a-swiftui-app-859cb703f55d
它不是一个
AppDelegate
函数,它只是作为修饰符添加到主内容视图中:
.onContinueUserActivity(CSSearchableItemActionType) { userActivity in
if let uniqueIdentifier = Int(userActivity.userInfo?[CSSearchableItemActivityIdentifier] as? String ?? "") {
print("id: \(uniqueIdentifier)")
}
}