Por Algolia.
Família InstantSearch: InstantSearch iOS | Pesquisa instantânea Android | Reaja InstantSearch | InstantSearch.js | Pesquisa instantânea angular | Vue InstantSearch.
InstantSearch iOS é uma estrutura que fornece componentes e auxiliares para ajudá-lo a construir a melhor experiência de pesquisa instantânea no iOS com Algolia. Ele é construído sobre a biblioteca Swift API Client da Algolia para fornecer uma solução de alto nível para construir rapidamente várias interfaces de pesquisa.
InstantSearch iOS consiste em três produtos
Você pode ver o InstantSearch iOS em ação no projeto Exemplos. Ele contém componentes de pesquisa e experiências construídas com InstantSearch e escritas em Swift.
O Swift Package Manager é uma ferramenta para gerenciar a distribuição de código Swift. Está integrado ao sistema de compilação Swift para automatizar o processo de download, compilação e vinculação de dependências. Desde o lançamento do Swift 5 e Xcode 11, o SPM é compatível com os sistemas de construção iOS, macOS e tvOS para criação de aplicativos.
Para usar o SwiftPM, você deve usar o Xcode 11 para abrir seu projeto. Clique em File
-> Swift Packages
-> Add Package Dependency
e insira o URL do repositório InstantSearch. A seguir, selecione os produtos que você considera usar em seu projeto na lista fornecida.
Se você é um autor de estrutura e usa InstantSearch como dependência, atualize seu arquivo 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 é um gerenciador de dependências para projetos Cocoa.
Para instalar o InstantSearch, basta adicionar a seguinte linha ao seu 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
Em seguida, execute o seguinte comando:
$ pod update
Carthage é um gerenciador de dependências simples e descentralizado para Cocoa.
github "algolia/instantsearch-ios" ~> 7.26
carthage update
./Carthage/Checkouts/instant-search-ios/carthage-prebuild
carthage build
NOTA: No momento, Carthage não fornece uma maneira de construir apenas subcomponentes específicos do repositório (ou equivalente às subespecificações do CocoaPods). Todos os componentes e suas dependências serão construídos com o comando acima. No entanto, você não precisa copiar estruturas que não está usando em seu projeto. Por exemplo, se você não estiver usando componentes de UI do
InstantSearch
, sinta-se à vontade para excluir essa estrutura do diretório Carthage Build após a conclusãocarthage update
mantendo apenasInstantSearchCore
. Se você precisar apenas de funcionalidades de rastreamento de eventos, exclua tudo, exceto a estruturaInstantSearchInsights
.
Se esta é a primeira vez que usa Carthage no projeto, você precisará seguir algumas etapas adicionais conforme explicado em Carthage.
Você pode começar com o Guia de primeiros passos.
Saiba mais sobre o instantSearch iOS no site de documentação dedicado.
No seu 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
}
}
Agora você pode criar e executar seu aplicativo para ver a experiência de pesquisa básica em ação. Você verá que os resultados mudam a cada toque de tecla.
Para obter uma experiência de pesquisa mais significativa, siga o Guia de primeiros passos. Se você criar um aplicativo SwiftUI, consulte o guia Primeiros passos com SwiftUI
Se você precisar apenas de módulos de lógica de negócios em seu projeto e usar a estrutura InstantSearchCore
, adicione import InstantSearchCore
aos seus arquivos de origem.
Existem 7 níveis de severidade de logs produzidos pela biblioteca. O nível de gravidade padrão é .info
. Você pode configurar o nível de registro da seguinte maneira:
Logs.logSeverityLevel = .debug
InstantSearch iOS coleta pontos de dados em tempo de execução. Isso ajuda a equipe do InstantSearch a melhorar e priorizar o desenvolvimento futuro.
Aqui está uma lista exaustiva dos dados coletados:
HitsSearcher
, FilterState
facets
em FacetListInteractor
é uma lista vazia. Se você instanciá-lo com uma lista de facetas, a telemetria rastreará se o parâmetro facets
recebeu um valor personalizado, mas não o valor em si.InstantSearch não coleta dados confidenciais ou pessoais. No entanto, você ainda pode cancelar a coleta de telemetria com o seguinte código:
InstantSearchTelemetry . shared . isEnabled = false
InstantSearch iOS é licenciado pelo Apache 2.0.