当前位置: 首页 > 编程笔记 >

iOS 9 Core Spotlight搜索实例代码

朱锦
2023-03-14
本文向大家介绍iOS 9 Core Spotlight搜索实例代码,包括了iOS 9 Core Spotlight搜索实例代码的使用技巧和注意事项,需要的朋友参考一下

前言

  感觉 Spotlight 这个功能还是蛮有用的,能提升用户活跃,增加应用内容曝光几率。

正文

  一、实现(iOS 9.0)

    1.1  添加索引

 var searchableItems = [CSSearchableItem]()
              for app in apps {
                let searchableItemAttributeSet = CSSearchableItemAttributeSet(itemContentType: kUTTypeText as String)
                searchableItemAttributeSet.title = app.label
                searchableItemAttributeSet.contentDescription = "Watch \(app.label) LIVE on Shou"
                let searchableItem = CSSearchableItem(uniqueIdentifier: app.id, domainIdentifier: "youappbundlerid.apps", attributeSet: searchableItemAttributeSet)
                
                searchableItems.append(searchableItem)
              }

              CSSearchableIndex.defaultSearchableIndex().indexSearchableItems(searchableItems, completionHandler: { (error: NSError?) in
                if error == nil {
                  print("initSpotlight...completed")
                } else {
                  print("\(error)")
                }
              })

一定要注意把上面代码加到子线程里面执行,略慢。可以在 AppDelegate 里面从服务器请求完数据再加索引的。

    1.2  接收点击事件

 @available(iOS 8.0, *)
  func application(application: UIApplication, continueUserActivity userActivity: NSUserActivity, restorationHandler: ([AnyObject]?) -> Void) -> Bool {
    if #available(iOS 9.0, *) {
      if userActivity.activityType == CSSearchableItemActionType {
        if let uniqueIdentifier = userActivity.userInfo?[CSSearchableItemActivityIdentifier] as? String, let label = userActivity.title {
          // 页面跳转
        }
      }
    }
    return true
  }

二、额外经验

    2.1  CSSearchableItemAttributeSet

    可以不设置 thumbnailData ,这样默认就是当前应用的 LOGO;另外注意 thumbnailURL 并不是用来指定网络图片地址的 - - #,所以你要加缩略图的话需要先把网上的下载到本地再设置

    2.2  CSSearchableItem

    默认失效是一个月,另外发现无法携带更多数据(比如通过 CSSearchableItemAttributeSet 的 setValue ,在 userActivity 那边都接收不到)

    2.3  没有找到索引条数的限制

    http://stackoverflow.com/questions/35284223/is-there-a-limit-for-number-of-items-cssearchableitem-in-core-spotlight-cssear

    我发现添加索引还是挺慢的,另外那个批量索引没弄懂,感觉应该是又有删除又有新增的话适合批量处理。

    2.4  没用找到重新索引的方法

    重复调用也没用问题,只要 uniqueIdentifier 匹配会覆盖老的数据

    2.5  没有找到提升排名的方法

    好像系统会有一套算法来自动提升排名。

总结:以上就是 IOS 开发 Core Spotlight 实例应用,以及经验分享,希望能帮助开发IOS的同学。

 类似资料:
  • 本文向大家介绍Python实现搜索算法的实例代码,包括了Python实现搜索算法的实例代码的使用技巧和注意事项,需要的朋友参考一下 将数据存储在不同的数据结构中时,搜索是非常基本的必需条件。最简单的方法是遍历数据结构中的每个元素,并将其与您正在搜索的值进行匹配。这就是所谓的线性搜索。它效率低下,很少使用,但为它创建一个程序给出了我们如何实现一些高级搜索算法的想法。 线性搜索 在这种类型的搜索中,逐

  • 本文向大家介绍Angular6 Filter实现页面搜索的示例代码,包括了Angular6 Filter实现页面搜索的示例代码的使用技巧和注意事项,需要的朋友参考一下 前言 我们在开发过程中经常会遇到在页面上实现全局搜索的需求,例如:表格搜索,通过关键词检索整个表格,过滤出我们需要的数据。在Angular6 中我们可以通过Filter + Pipe 的方式来实现这个功能。下面我们看一下实现代码。

  • 本文向大家介绍vue搜索页开发实例代码详解(热门搜索,历史搜索,淘宝接口演示),包括了vue搜索页开发实例代码详解(热门搜索,历史搜索,淘宝接口演示)的使用技巧和注意事项,需要的朋友参考一下 完整效果演示 首先完成这个伪搜索框 src/components/search/index.vue (通用搜索框组件) src/assets/js/util.js  节流函数(防止请求数据时频率过快消耗性能)

  • 本篇将会结合实例解析宽度优先搜索(BFS)。 一、BFS概念 宽度优先搜索算法(又称广度优先搜索)是最简便的图的搜索算法之一,这一算法也是很多重要的图的算法的原型。Dijkstra单源最短路径算法和Prim最小生成树算法都采用了和宽度优先搜索类似的思想。其别名又叫BFS,属于一种盲目搜寻法,目的是系统地展开并检查图中的所有节点,以找寻结果。换句话说,它并不考虑结果的可能位置,彻底地搜索整张图,直到

  • 当你从一个顶点开始,沿着某条路往下走,一直走到底,如果走完后发现不能达到目标解,就回溯,返回到上一个节点,换条路,然后继续走到底,如此往复,直至所有可能的结果都被搜索完。通俗理解就是不撞南墙不回头这种感觉,这个就是我们这篇要讲解的内容,下面带领大家结合实例系统的学习一下。 一、什么是DFS? DFS简单讲叫深度优先搜索,就是指:优先考虑深度,换句话说就是一条路走到黑,直到无路可走的情况下,才会选择

  • 本文向大家介绍PHP ElasticSearch做搜索实例讲解,包括了PHP ElasticSearch做搜索实例讲解的使用技巧和注意事项,需要的朋友参考一下 ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的