如何从 Spotlight 系统搜索中为你的 App 引流

这里每天分享一个 iOS 的新知识,快来关注我吧

前言

之前的文章讲过如何为你的 App 增加系统搜索索引,不知道大家有没有在自己的项目上用上,今天来补充一个小知识点,那就是"在 App 内搜索"的实现。

当你在系统 Spotlight 搜索时,拉到最底部,会看到在App中搜索 的一个列表,点击某个 app ,可以直接进入到这个 App 的搜索页面进行关键词搜索:

还有另外一种形式,在你的搜索结果中,某个 App 的右上角,会出现在 App 中搜索的按钮,点击之后,也是跟上边相同的效果:

讲讲实现步骤

我查阅了相关的技术文档,发现实现非常简单,只需要在你的 info.plist 文件中增加一个 CoreSpotlightContinuation 的 key,值为 Bool 类型 true。

设置完成之后再次运行项目,打开 Spotlight ,输入关键词,比如我这里输入 "swift编程",就可以看到"在 App 内搜索" 的选项了。

如果看不到这个选项的话,可以将手机重启后再试一下。

应用内接收点击事件

当用户点击在 App 内搜索 按钮时,系统会打开 App ,并调用 Appdelegate 中的 application(_:continue:restorationHandler:) 方法。

然后,这个方法会收到一个 NSUserActivity 对象,其 activityType 值为 CSQueryContinuationActionType,用来标记从这个入口进来的。

这个对象还会带一个 userInfo 字典,我们可以通过解析这个字典拿到当前用户输入的内容,之后进一步跳转到你的 App 对应的搜索页面,以让用户的搜索行为持续下去:

swift 复制代码
func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
    if userActivity.activityType == CSQueryContinuationActionType {
        print("从"在 App 中搜索"入口点进来的")
        let q = (userActivity.userInfo?[CSSearchQueryString] as? String) ?? ""
        let alert = UIAlertController(title: "Tip", message: "从"在 App 中搜索"入口点进来的行为会弹这个 Alert,用户搜索的内容为 \(q)", preferredStyle: .alert)
        alert.addAction(UIAlertAction(title: "OK", style: .default))
        window?.rootViewController?.present(alert, animated: true)
    }
    return true
}

当我们点击 在 App 中搜索 按钮时,系统会调用这个方法,我们解析用户输入的内容后,弹一个 UIAlertController 出来,这里你可以直接唤起你们 App 的搜索页面(如果有的话)。

支持 Spotlight 搜索是吸引用户进入你的 App 的一种非常有效的方法,因为每天有大量的流量会进入到系统搜索,像淘宝、小红书这种 App 已经内置了大量的索引,以便倒流到自己的应用,因此做好 Spotlight 支持,一定能提高应用的日活和留存。

今天所讲的内容全部基于上次的这篇如何为你的 App 增加系统搜索索引,如果还没看过的可以先去看这个。

这里每天分享一个 iOS 的新知识,快来关注我吧

本文同步自微信公众号 "iOS新知",每天准时分享一个新知识,这里只是同步,想要及时学到就来关注我吧!

相关推荐
传奇开心果编程7 小时前
【Flutter踩坑排雷】第7课:巨型 build 函数坑|全部 UI 写在同一个 build,维护难、隐性异常
android·flutter·ios·移动开发·跨平台·dart·声明式ui
程序员老刘9 小时前
从短剧App的bug看响应式编程在AI时代的优势
flutter·ai编程·客户端
瓦瓦gogo11 小时前
第一次了解 iOS 开发:从 Swift、SwiftUI 到公共组件
ios·swiftui·swift
Liben15 小时前
Weex开发踩坑记录
android·前端·ios
season_zhu17 小时前
Skills For Real Engineers 系列之三:需求聊清楚了,怎么一步步走主流程,做到交付?
ios·ai编程
茶底世界之下18 小时前
窗边花瓶太暗?用 Awaking 看提亮室内的代价
ios
2501_9159090618 小时前
Windows 上用 VS Code 调试 iPhone 真机 App,KXBuild 断点、崩溃定位实操
ide·windows·vscode·ios·iphone·个人开发·敏捷流程
2501_916007471 天前
抓包工具功能对比,TraceEagle、Charles、Fiddler、Wireshark、mitmproxy 差别
前端·网络协议·ios·adb·https·fiddler·wireshark
青峰讲运维2 天前
OpenStack 存储深度解析|Cinder 块存储 + Swift 对象存储原理与完整实操(Yoga)
开发语言·openstack·swift
2501_915106322 天前
Windows 上开发 Unity iOS,使用 KXBuild 进行真机调试、性能采样与打包 ipa
windows·vscode·unity·ios·个人开发·swift·敏捷流程