我想实现一个具有深度链接能力的搜索功能。下面是我写的代码片段,但是深度链接不起作用。搜索总是会启动应用程序,但不会进入深度视图控制器。请让我知道下面的代码有什么问题。谢谢
let activity: NSUserActivity = NSUserActivity(activityType: "com.myproject.SearchTest1")
activity.title = "My Search app"
activity.userInfo = ["Search" : ["Icecream" , "Nuts", "Biscuits"]]
if #available(iOS 9.0, *) {
activity.eligibleForSearch = true
} else {
// Fallback on earlier versions
}
if #available(iOS 9.0, *) {
activity.keywords = NSSet(array: ["Icecream" , "Nuts", "Biscuits"]) as! Set<String>
} else {
// Fallback on earlier versions
}
activity.delegate = self
activity.needsSave = true
self.userActivity = activity
activity.becomeCurrent()
override func updateUserActivityState(activity: NSUserActivity) {
activity.title = self.userActivity?.title
activity.addUserInfoEntriesFromDictionary(["Search" : ["Icecream" , "Nuts", "Biscuits"]])
super.updateUserActivityState(activity)
}我的App委托代码如下:
func application(application: UIApplication, continueUserActivity userActivity: NSUserActivity, restorationHandler: ([AnyObject]?) -> Void) -> Bool {
if let window = self.window {
window.rootViewController?.restoreUserActivityState(userActivity)
}
return true
}发布于 2015-08-25 20:23:00
单击来自spotlight的搜索结果将转到continueUserActivity方法。
将userActivity传递给应用程序窗口的rootViewController并返回true。这将告诉操作系统您已成功处理了Handoff操作。从现在开始,您需要自己转接呼叫并恢复活动。您在rootViewController上调用的方法是restoreUserActivityState (activity:)。
您现在的任务是沿着视图控制器层次结构向下移动,并将活动从父视图控制器传递到子视图控制器,直到活动被使用为止。
override func restoreUserActivityState(activity: NSUserActivity) {
let nextViewController = childViewControllers.first as!UIViewController
nextViewController.restoreUserActivityState(activity)
super.restoreUserActivityState(activity)
}如果你遵循这个tutorial,你必须完全完成它。
https://stackoverflow.com/questions/31999590
复制相似问题