AppDelegate.swift 中未调用 userActivity 函数

问题描述 投票:0回答:1

当我点击 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
参数。

ios swift appdelegate spotlight
1个回答
0
投票

我花了很长时间才找到这个,所以尽管这是一个老问题,但我认为我应该添加对我有用的答案!

我在这里找到了答案: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)")
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.