Por Algolia.
Familia InstantSearch: InstantSearch iOS | Búsqueda instantánea Android | Reaccionar búsqueda instantánea | InstantSearch.js | Búsqueda instantánea angular | Búsqueda instantánea de Vue.
InstantSearch iOS es un marco que proporciona componentes y ayudas para ayudarle a crear la mejor experiencia de búsqueda instantánea en iOS con Algolia. Está construido sobre la biblioteca Swift API Client de Algolia para brindarle una solución de alto nivel para crear rápidamente varias interfaces de búsqueda.
InstantSearch iOS consta de tres productos
Puede ver InstantSearch iOS en acción en el proyecto Ejemplos. Contiene componentes de búsqueda y experiencias creadas con InstantSearch y escritas en Swift.
Swift Package Manager es una herramienta para gestionar la distribución de código Swift. Está integrado con el sistema de compilación Swift para automatizar el proceso de descarga, compilación y vinculación de dependencias. Desde el lanzamiento de Swift 5 y Xcode 11, SPM es compatible con los sistemas de compilación iOS, macOS y tvOS para crear aplicaciones.
Para usar SwiftPM, debe usar Xcode 11 para abrir su proyecto. Haga clic en File
-> Swift Packages
-> Add Package Dependency
, ingrese la URL del repositorio de InstantSearch. A continuación, seleccione los productos que considere utilizar en su proyecto de la lista proporcionada.
Si es autor de un marco y utiliza InstantSearch como dependencia, actualice su archivo 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 es un administrador de dependencias para proyectos Cocoa.
Para instalar InstantSearch, simplemente agregue la siguiente línea a su 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
Luego, ejecute el siguiente comando:
$ pod update
Carthage es un administrador de dependencias simple y descentralizado para Cocoa.
github "algolia/instantsearch-ios" ~> 7.26
carthage update
./Carthage/Checkouts/instant-search-ios/carthage-prebuild
carthage build
NOTA: En este momento, Carthage no proporciona una forma de crear solo subcomponentes de repositorio específicos (o equivalentes de las subespecciones de CocoaPods). Todos los componentes y sus dependencias se construirán con el comando anterior. Sin embargo, no es necesario que copie los marcos que no está utilizando en su proyecto. Por ejemplo, si no está utilizando componentes de UI de
InstantSearch
, no dude en eliminar ese marco del directorio Carthage Build después de que se completecarthage update
manteniendo soloInstantSearchCore
. Si solo necesita funcionalidades de seguimiento de eventos, elimine todo excepto el marcoInstantSearchInsights
.
Si es la primera vez que utiliza Carthage en el proyecto, deberá seguir algunos pasos adicionales como se explica en Carthage.
Puede comenzar con la Guía de introducción.
Obtenga más información sobre instantSearch iOS en el sitio web de documentación dedicado.
En tu 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
}
}
Ahora puede crear y ejecutar su aplicación para ver la experiencia de búsqueda básica en acción. Deberías ver que los resultados cambian con cada pulsación de tecla.
Para obtener una experiencia de búsqueda más significativa, siga la Guía de introducción. Si crea una aplicación SwiftUI, consulte la guía Introducción a SwiftUI.
Si solo necesita módulos de lógica empresarial en su proyecto y utiliza el marco InstantSearchCore
, agregue import InstantSearchCore
a sus archivos fuente.
Hay 7 niveles de gravedad de registros producidos por la biblioteca. El nivel de gravedad predeterminado es .info
. Puede configurar el nivel de registro de la siguiente manera:
Logs.logSeverityLevel = .debug
InstantSearch iOS recopila puntos de datos en tiempo de ejecución. Esto ayuda al equipo de InstantSearch a mejorar y priorizar el desarrollo futuro.
Aquí hay una lista exhaustiva de los datos recopilados:
HitsSearcher
, FilterState
facets
en FacetListInteractor
es una lista vacía. Si lo crea una instancia con una lista de facetas, la telemetría rastrea que el parámetro facets
recibió un valor personalizado, pero no el valor en sí.InstantSearch no recopila ningún dato personal o confidencial. Sin embargo, aún puedes optar por no participar en la recopilación de telemetría con el siguiente código:
InstantSearchTelemetry . shared . isEnabled = false
InstantSearch iOS tiene licencia Apache 2.0.