首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有深度链接的iOS 9搜索功能

具有深度链接的iOS 9搜索功能
EN

Stack Overflow用户
提问于 2015-08-14 06:41:25
回答 1查看 620关注 0票数 1

我想实现一个具有深度链接能力的搜索功能。下面是我写的代码片段,但是深度链接不起作用。搜索总是会启动应用程序,但不会进入深度视图控制器。请让我知道下面的代码有什么问题。谢谢

代码语言:javascript
复制
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委托代码如下:

代码语言:javascript
复制
func application(application: UIApplication, continueUserActivity userActivity: NSUserActivity, restorationHandler: ([AnyObject]?) -> Void) -> Bool {
        if let window = self.window {
            window.rootViewController?.restoreUserActivityState(userActivity)
        }
        return true
    }
EN

回答 1

Stack Overflow用户

发布于 2015-08-25 20:23:00

单击来自spotlight的搜索结果将转到continueUserActivity方法。

将userActivity传递给应用程序窗口的rootViewController并返回true。这将告诉操作系统您已成功处理了Handoff操作。从现在开始,您需要自己转接呼叫并恢复活动。您在rootViewController上调用的方法是restoreUserActivityState (activity:)。

您现在的任务是沿着视图控制器层次结构向下移动,并将活动从父视图控制器传递到子视图控制器,直到活动被使用为止。

代码语言:javascript
复制
override func restoreUserActivityState(activity: NSUserActivity) {
 let nextViewController = childViewControllers.first as!UIViewController
 nextViewController.restoreUserActivityState(activity)
 super.restoreUserActivityState(activity)
}

如果你遵循这个tutorial,你必须完全完成它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31999590

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档