iOS 9 Core Spotlight搜索实例代码

 更新时间:2016年07月22日 09:11:44   投稿:lqh  
本文主要讲解 iOS 9 Core Spotlight,在 IOS 开发的时候有时候会用到搜索功能,这里给大家一个实例作为参考,有需要的小伙伴可以参考下

前言

  感觉 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的同学。

相关文章

  • iOS如何定义名为任意的变量详解

    iOS如何定义名为任意的变量详解

    这篇文章主要给大家介绍了关于iOS如何定义名为任意的变量的相关资料,文中通过示例代码介绍的非常详细,对各位iOS开发者们具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2018-05-05
  • iOS中谓词(NSPredicate)的基本入门使用教程

    iOS中谓词(NSPredicate)的基本入门使用教程

    这篇文章主要给大家介绍了关于iOS中谓词(NSPredicate)的基本入门使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-01-01
  • 总结适配IOS10开发需要注意的问题

    总结适配IOS10开发需要注意的问题

    本篇文章主要介绍了适配IOS10需要注意的问题,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧。
    2016-12-12
  • ios开发 try-catch引起的野指针问题排查

    ios开发 try-catch引起的野指针问题排查

    这篇文章主要为大家介绍了ios开发 try-catch引起的野指针问题排查,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-09-09
  • IOS10 相册相机闪退bug解决办法

    IOS10 相册相机闪退bug解决办法

    这篇文章主要介绍了IOS10 相册相机闪退bug解决办法的相关资料,需要的朋友可以参考下
    2016-12-12
  • iOS11&iPhoneX适配&Xcode9打包注意事项

    iOS11&iPhoneX适配&Xcode9打包注意事项

    这篇文章主要介绍了iOS11&iPhoneX适配&Xcode9打包注意事项,需要的朋友可以参考下
    2017-10-10
  • iOS 图片加载框架SDWebImage解读

    iOS 图片加载框架SDWebImage解读

    本篇文章主要介绍了iOS 图片加载框架SDWebImage解读,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-10-10
  • IOS开发中如何设计短信验证码防刷机制

    IOS开发中如何设计短信验证码防刷机制

    给大家详细分享一下在IOS的项目开发中如何设计短信验证码防刷机制,已经步骤详解,喜欢的朋友参考下吧。
    2018-02-02
  • iOS 增加右侧按钮功能实例代码

    iOS 增加右侧按钮功能实例代码

    这篇文章主要介绍了iOS 增加右侧按钮功能实例代码,需要的朋友可以参考下
    2017-07-07
  • iOS获取网络类型的方法汇总

    iOS获取网络类型的方法汇总

    本篇文章主要给大家汇总介绍了iOS获取网络类型的方法,主要涉及到方面的内容,对于IOS开发感兴趣的同学可以参考一下
    2015-06-06

最新评论