Par Algolia.
Famille InstantSearch : InstantSearch iOS | Recherche instantanée Android | Réagissez à la recherche instantanée | InstantSearch.js | Recherche instantanée angulaire | Vue InstantSearch.
InstantSearch iOS est un framework fournissant des composants et des aides pour vous aider à créer la meilleure expérience de recherche instantanée sur iOS avec Algolia. Il est construit sur la bibliothèque client Swift API d'Algolia pour vous fournir une solution de haut niveau pour créer rapidement diverses interfaces de recherche.
InstantSearch iOS se compose de trois produits
Vous pouvez voir InstantSearch iOS en action dans le projet Exemples. Il contient des composants de recherche et des expériences construits avec InstantSearch et écrits en Swift.
Le Swift Package Manager est un outil de gestion de la distribution du code Swift. Il est intégré au système de build Swift pour automatiser le processus de téléchargement, de compilation et de liaison des dépendances. Depuis la sortie de Swift 5 et Xcode 11, SPM est compatible avec les systèmes de build iOS, macOS et tvOS pour créer des applications.
Pour utiliser SwiftPM, vous devez utiliser Xcode 11 pour ouvrir votre projet. Cliquez sur File
-> Swift Packages
-> Add Package Dependency
, entrez l'URL du dépôt InstantSearch. Ensuite, sélectionnez les produits que vous envisagez d'utiliser dans votre projet dans la liste fournie.
Si vous êtes un auteur de framework et utilisez InstantSearch comme dépendance, mettez à jour votre fichier 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 est un gestionnaire de dépendances pour les projets Cocoa.
Pour installer InstantSearch, ajoutez simplement la ligne suivante à votre 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
Ensuite, exécutez la commande suivante :
$ pod update
Carthage est un gestionnaire de dépendances simple et décentralisé pour Cocoa.
github "algolia/instantsearch-ios" ~> 7.26
carthage update
./Carthage/Checkouts/instant-search-ios/carthage-prebuild
carthage build
REMARQUE : à l'heure actuelle, Carthage ne propose pas de moyen de créer uniquement des sous-composants de référentiel spécifiques (ou l'équivalent des sous-spécifications de CocoaPods). Tous les composants et leurs dépendances seront construits avec la commande ci-dessus. Cependant, vous n'avez pas besoin de copier les frameworks que vous n'utilisez pas dans votre projet. Par exemple, si vous n'utilisez pas les composants d'interface utilisateur d'
InstantSearch
, n'hésitez pas à supprimer ce framework du répertoire Carthage Build une foiscarthage update
terminée, en conservant uniquementInstantSearchCore
. Si vous n’avez besoin que de fonctionnalités de suivi des événements, supprimez tout sauf le frameworkInstantSearchInsights
.
Si c'est la première fois que vous utilisez Carthage dans le projet, vous devrez suivre quelques étapes supplémentaires comme expliqué à Carthage.
Vous pouvez commencer avec le Guide de démarrage.
Apprenez-en plus sur instantSearch iOS sur le site de documentation dédié.
Dans votre 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
}
}
Vous pouvez désormais créer et exécuter votre application pour voir l'expérience de recherche de base en action. Vous devriez voir que les résultats changent à chaque frappe de touche.
Pour bénéficier d'une expérience de recherche plus significative, veuillez suivre le Guide de démarrage. Si vous créez une application SwiftUI, veuillez consulter le guide Premiers pas avec SwiftUI
Si vous n'avez besoin que de modules de logique métier dans votre projet et utilisez le framework InstantSearchCore
, ajoutez import InstantSearchCore
à vos fichiers source.
Il existe 7 niveaux de gravité des journaux produits par la bibliothèque. Le niveau de gravité par défaut est .info
. Vous pouvez configurer le niveau de journalisation comme suit :
Logs.logSeverityLevel = .debug
InstantSearch iOS collecte des points de données au moment de l'exécution. Cela aide l’équipe InstantSearch à améliorer et à prioriser les développements futurs.
Voici une liste exhaustive des données collectées :
HitsSearcher
, FilterState
facets
dans FacetListInteractor
est une liste vide. Si vous l'instanciez avec une liste de facettes, la télémétrie indique que le paramètre facets
a reçu une valeur personnalisée, mais pas la valeur elle-même.InstantSearch ne collecte aucune donnée sensible ou personnelle. Cependant, vous pouvez toujours vous désinscrire de la collecte de télémétrie avec le code suivant :
InstantSearchTelemetry . shared . isEnabled = false
InstantSearch iOS est sous licence Apache 2.0.