阿爾戈利亞.
InstantSearch 系列: InstantSearch iOS |即時搜尋 Android |反應即時搜尋 |即時搜尋.js | Angular 即時搜尋 | Vue 即時搜尋。
InstantSearch iOS是一個提供元件和幫助程式的框架,可協助您使用 Algolia 在 iOS 上建立最佳的即時搜尋體驗。它建立在 Algolia 的 Swift API 用戶端程式庫之上,為您提供快速建立各種搜尋介面的高級解決方案。
InstantSearch iOS由三個產品組成
您可以在範例專案中看到 InstantSearch iOS 的實際應用程式。它包含使用 InstantSearch 建置並用 Swift 編寫的搜尋元件和體驗。
Swift Package Manager 是一個用於管理 Swift 程式碼分發的工具。它與 Swift 建置系統集成,可自動執行下載、編譯和連結依賴項的過程。自 Swift 5 和 Xcode 11 發布以來,SPM 與用於創建應用程式的 iOS、macOS 和 tvOS 建置系統相容。
要使用 SwiftPM,您應該使用 Xcode 11 開啟您的專案。點選File
-> Swift Packages
-> Add Package Dependency
,輸入 InstantSearch 儲存庫的 URL。接下來,從提供的清單中選擇您考慮在項目中使用的產品。
如果您是框架作者並使用 InstantSearch 作為依賴項,請更新您的Package.swift
檔案:
let package = Package (
// 7.26.0 ..< 8.0.0
dependencies : [
. package ( url : " https://github.com/algolia/instantsearch-ios " , from : " 7.26.0 " )
] ,
// ...
)
CocoaPods 是 Cocoa 專案的依賴管理器。
要安裝 InstantSearch,只需將以下行新增到您的 Podfile 中:
pod 'InstantSearch' , '~> 7.26'
# pod 'InstantSearch/Insights' for access to Insights library only
# pod 'InstantSearch/Core' for access business logic without UIKit components
# pod 'InstantSearch/SwiftUI' for access to SwiftUI components
然後,執行以下命令:
$ pod update
Carthage 是 Cocoa 的一個簡單的、去中心化的依賴管理器。
github "algolia/instantsearch-ios" ~> 7.26
carthage update
./Carthage/Checkouts/instant-search-ios/carthage-prebuild
carthage build
注意:目前,Carthage 不提供僅建置特定儲存庫子元件(或 CocoaPods 子規範的等效項)的方法。所有元件及其相依性都將使用上述命令建置。但是,您不需要將不使用的框架複製到專案中。例如,如果您不使用
InstantSearch
中的 UI 元件,請在carthage update
完成後從 Carthage Build 目錄中刪除該框架,僅保留InstantSearchCore
。如果您只需要事件追蹤功能,請刪除除InstantSearchInsights
框架之外的所有框架。
如果這是您第一次在專案中使用 Carthage,您將需要執行一些額外的步驟,如 Carthage 中所述。
您可以從入門指南開始。
在專用文件網站中了解有關 instantSearch iOS 的更多資訊。
在你的ViewController.swift
中:
import InstantSearch
struct Item : Codable {
let name : String
}
class SearchResultsViewController : UITableViewController , HitsController {
var hitsSource : HitsInteractor < Item > ?
override func viewDidLoad ( ) {
super . viewDidLoad ( )
tableView . register ( UITableViewCell . self , forCellReuseIdentifier : " cell " )
}
override func tableView ( _ tableView : UITableView , numberOfRowsInSection section : Int ) -> Int {
hitsSource ? . numberOfHits ( ) ?? 0
}
override func tableView ( _ tableView : UITableView , cellForRowAt indexPath : IndexPath ) -> UITableViewCell {
let cell = tableView . dequeueReusableCell ( withIdentifier : " cell " , for : indexPath )
cell . textLabel ? . text = hitsSource ? . hit ( atIndex : indexPath . row ) ? . name
return cell
}
override func tableView ( _ tableView : UITableView , didSelectRowAt indexPath : IndexPath ) {
if let _ = hitsSource ? . hit ( atIndex : indexPath . row ) {
// Handle hit selection
}
}
}
class ViewController : UIViewController {
lazy var searchController = UISearchController ( searchResultsController : hitsViewController )
let hitsViewController = SearchResultsViewController ( )
let searcher = HitsSearcher ( appID : " latency " ,
apiKey : " 1f6fd3a6fb973cb08419fe7d288fa4db " ,
indexName : " bestbuy " )
lazy var searchConnector = SearchConnector < Item > ( searcher : searcher ,
searchController : searchController ,
hitsInteractor : . init ( ) ,
hitsController : hitsViewController )
override func viewDidLoad ( ) {
super . viewDidLoad ( )
searchConnector . connect ( )
searcher . search ( )
setupUI ( )
}
override func viewDidAppear ( _ animated : Bool ) {
super . viewDidAppear ( animated )
searchController . isActive = true
}
func setupUI ( ) {
view . backgroundColor = . white
navigationItem . searchController = searchController
searchController . hidesNavigationBarDuringPresentation = false
searchController . showsSearchResultsController = true
searchController . automaticallyShowsCancelButton = false
}
}
現在您可以建立並運行應用程式來查看基本的搜尋體驗。您應該看到每次擊鍵時結果都會改變。
為了獲得更有意義的搜尋體驗,請遵循入門指南。如果您建立 SwiftUI 應用程序,請查看 SwiftUI 入門指南
如果您的專案中只需要業務邏輯模組並使用InstantSearchCore
框架,請將import InstantSearchCore
新增至來源檔案。
庫產生的日誌嚴重性有 7 個等級。預設嚴重性等級為.info
。您可以如下設定日誌記錄等級:
Logs.logSeverityLevel = .debug
InstantSearch iOS 在運行時收集資料點。這有助於 InstantSearch 團隊改進並優先考慮未來的開發。
以下是所收集資料的詳盡清單:
HitsSearcher
、 FilterState
FacetListInteractor
中的facets
值的預設值是一個空列表。如果您使用構面清單實例化它,則遙測會追蹤facets
參數收到的自訂值,而不是該值本身。InstantSearch 不會收集任何敏感或個人資料。但是,您仍然可以使用以下程式碼選擇退出遙測收集:
InstantSearchTelemetry . shared . isEnabled = false
InstantSearch iOS 已獲得 Apache 2.0 授權。