【Swift】iOS 9 Core Spotlight

 

前言css

  感受 Spotlight 這個功能仍是蠻有用的,能提高用戶活躍,增長應用內容曝光概率。算法

 

聲明
  歡迎轉載,但請保留文章原始出處:)
  博客園:http://www.cnblogs.com
  農民伯伯: http://over140.cnblogs.com服務器

 

正文網絡

  1、實現(iOS 9.0)app

    1.1  添加索引dom

                            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 裏面從服務器請求完數據再加索引的。spa

    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、額外經驗rest

    2.1  CSSearchableItemAttributeSetcode

      能夠不設置 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  沒有找到提高排名的方法

    好像系統會有一套算法來自動提高排名。

相關文章
相關標籤/搜索