Алголия.
Семейство InstantSearch: InstantSearch iOS | Мгновенный поиск Android | Реагировать на мгновенный поиск | InstantSearch.js | Угловой мгновенный поиск | Вю Мгновенный поиск.
InstantSearch iOS — это платформа, предоставляющая компоненты и помощники, которые помогут вам создать лучший способ мгновенного поиска на iOS с помощью Algolia. Он построен на основе клиентской библиотеки Swift API Algolia и предоставляет вам высокоуровневое решение для быстрого создания различных поисковых интерфейсов.
InstantSearch iOS состоит из трёх продуктов
Вы можете увидеть InstantSearch iOS в действии в проекте «Примеры». Он содержит компоненты поиска и возможности, созданные с помощью InstantSearch и написанные на Swift.
Менеджер пакетов Swift — это инструмент для управления распространением кода Swift. Он интегрирован с системой сборки Swift для автоматизации процесса загрузки, компиляции и связывания зависимостей. С момента выпуска Swift 5 и Xcode 11 SPM совместим с системами сборки iOS, macOS и tvOS для создания приложений.
Чтобы использовать SwiftPM, вам следует использовать Xcode 11 для открытия своего проекта. Нажмите File
-> Swift Packages
-> Add Package Dependency
, введите URL-адрес репозитория InstantSearch. Далее выберите продукты, которые вы планируете использовать в своем проекте, из предоставленного списка.
Если вы являетесь автором платформы и используете 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, просто добавьте следующую строку в свой подфайл:
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
, смело удаляйте эту платформу из каталога Carthage Build после завершенияcarthage update
оставив только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
facets
в FacetListInteractor
по умолчанию представляет собой пустой список. Если вы создаете его экземпляр со списком фасетов, телеметрия отслеживает, что параметр facets
получил пользовательское значение, но не само значение.InstantSearch не собирает никаких конфиденциальных или личных данных. Однако вы все равно можете отказаться от сбора телеметрии с помощью следующего кода:
InstantSearchTelemetry . shared . isEnabled = false
InstantSearch iOS имеет лицензию Apache 2.0.