iOS 9 Core Spotlight搜索實(shí)例代碼
前言
感覺(jué) Spotlight 這個(gè)功能還是蠻有用的,能提升用戶活躍,增加應(yīng)用內(nèi)容曝光幾率。
正文
一、實(shí)現(xiàn)(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)")
}
})
一定要注意把上面代碼加到子線程里面執(zhí)行,略慢。可以在 AppDelegate 里面從服務(wù)器請(qǐng)求完數(shù)據(jù)再加索引的。
1.2 接收點(diǎn)擊事件
@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 {
// 頁(yè)面跳轉(zhuǎn)
}
}
}
return true
}
二、額外經(jīng)驗(yàn)
2.1 CSSearchableItemAttributeSet
可以不設(shè)置 thumbnailData ,這樣默認(rèn)就是當(dāng)前應(yīng)用的 LOGO;另外注意 thumbnailURL 并不是用來(lái)指定網(wǎng)絡(luò)圖片地址的 - - #,所以你要加縮略圖的話需要先把網(wǎng)上的下載到本地再設(shè)置
2.2 CSSearchableItem
默認(rèn)失效是一個(gè)月,另外發(fā)現(xiàn)無(wú)法攜帶更多數(shù)據(jù)(比如通過(guò) CSSearchableItemAttributeSet 的 setValue ,在 userActivity 那邊都接收不到)
2.3 沒(méi)有找到索引條數(shù)的限制
http://stackoverflow.com/questions/35284223/is-there-a-limit-for-number-of-items-cssearchableitem-in-core-spotlight-cssear
我發(fā)現(xiàn)添加索引還是挺慢的,另外那個(gè)批量索引沒(méi)弄懂,感覺(jué)應(yīng)該是又有刪除又有新增的話適合批量處理。
2.4 沒(méi)用找到重新索引的方法
重復(fù)調(diào)用也沒(méi)用問(wèn)題,只要 uniqueIdentifier 匹配會(huì)覆蓋老的數(shù)據(jù)
2.5 沒(méi)有找到提升排名的方法
好像系統(tǒng)會(huì)有一套算法來(lái)自動(dòng)提升排名。
總結(jié):以上就是 IOS 開(kāi)發(fā) Core Spotlight 實(shí)例應(yīng)用,以及經(jīng)驗(yàn)分享,希望能幫助開(kāi)發(fā)IOS的同學(xué)。
相關(guān)文章
iOS中謂詞(NSPredicate)的基本入門(mén)使用教程
這篇文章主要給大家介紹了關(guān)于iOS中謂詞(NSPredicate)的基本入門(mén)使用方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-01-01
總結(jié)適配IOS10開(kāi)發(fā)需要注意的問(wèn)題
本篇文章主要介紹了適配IOS10需要注意的問(wèn)題,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧。2016-12-12
ios開(kāi)發(fā) try-catch引起的野指針問(wèn)題排查
這篇文章主要為大家介紹了ios開(kāi)發(fā) try-catch引起的野指針問(wèn)題排查,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09
iOS11&iPhoneX適配&Xcode9打包注意事項(xiàng)
這篇文章主要介紹了iOS11&iPhoneX適配&Xcode9打包注意事項(xiàng),需要的朋友可以參考下2017-10-10
IOS開(kāi)發(fā)中如何設(shè)計(jì)短信驗(yàn)證碼防刷機(jī)制
給大家詳細(xì)分享一下在IOS的項(xiàng)目開(kāi)發(fā)中如何設(shè)計(jì)短信驗(yàn)證碼防刷機(jī)制,已經(jīng)步驟詳解,喜歡的朋友參考下吧。2018-02-02
iOS獲取網(wǎng)絡(luò)類(lèi)型的方法匯總
本篇文章主要給大家匯總介紹了iOS獲取網(wǎng)絡(luò)類(lèi)型的方法,主要涉及到方面的內(nèi)容,對(duì)于IOS開(kāi)發(fā)感興趣的同學(xué)可以參考一下2015-06-06

