Von Algolia.
InstantSearch-Familie: InstantSearch iOS | InstantSearch Android | Reagieren Sie auf InstantSearch | InstantSearch.js | Angular InstantSearch | Vue InstantSearch.
InstantSearch iOS ist ein Framework, das Komponenten und Helfer bereitstellt, um Ihnen dabei zu helfen, mit Algolia das beste Sofortsucherlebnis auf iOS zu schaffen. Es basiert auf der Swift API Client-Bibliothek von Algolia und bietet Ihnen eine High-Level-Lösung zum schnellen Erstellen verschiedener Suchschnittstellen.
InstantSearch iOS besteht aus drei Produkten
Im Beispielprojekt können Sie InstantSearch iOS in Aktion sehen. Es enthält Suchkomponenten und Erfahrungen, die mit InstantSearch erstellt und in Swift geschrieben wurden.
Der Swift Package Manager ist ein Tool zur Verwaltung der Verteilung von Swift-Code. Es ist in das Swift-Build-System integriert, um den Prozess des Herunterladens, Kompilierens und Verknüpfens von Abhängigkeiten zu automatisieren. Seit der Veröffentlichung von Swift 5 und Xcode 11 ist SPM mit den Build-Systemen iOS, macOS und tvOS zum Erstellen von Apps kompatibel.
Um SwiftPM zu verwenden, sollten Sie Xcode 11 zum Öffnen Ihres Projekts verwenden. Klicken Sie auf File
-> Swift Packages
-> Add Package Dependency
und geben Sie die URL des InstantSearch-Repositorys ein. Wählen Sie anschließend aus der bereitgestellten Liste die Produkte aus, die Sie in Ihrem Projekt verwenden möchten.
Wenn Sie ein Framework-Autor sind und InstantSearch als Abhängigkeit verwenden, aktualisieren Sie Ihre Package.swift
Datei:
let package = Package (
// 7.26.0 ..< 8.0.0
dependencies : [
. package ( url : " https://github.com/algolia/instantsearch-ios " , from : " 7.26.0 " )
] ,
// ...
)
CocoaPods ist ein Abhängigkeitsmanager für Cocoa-Projekte.
Um InstantSearch zu installieren, fügen Sie einfach die folgende Zeile zu Ihrer Poddatei hinzu:
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
Führen Sie dann den folgenden Befehl aus:
$ pod update
Carthage ist ein einfacher, dezentraler Abhängigkeitsmanager für Cocoa.
github "algolia/instantsearch-ios" ~> 7.26
carthage update
./Carthage/Checkouts/instant-search-ios/carthage-prebuild
carthage build
HINWEIS: Derzeit bietet Carthage keine Möglichkeit, nur bestimmte Repository-Unterkomponenten (oder Äquivalente der Unterspezifikationen von CocoaPods) zu erstellen. Alle Komponenten und ihre Abhängigkeiten werden mit dem obigen Befehl erstellt. Sie müssen jedoch keine Frameworks kopieren, die Sie nicht in Ihr Projekt verwenden. Wenn Sie beispielsweise keine UI-Komponenten von
InstantSearch
verwenden, können Sie dieses Framework jederzeit aus dem Carthage Build-Verzeichnis löschen, nachdemcarthage update
abgeschlossen ist, wobei nurInstantSearchCore
übrig bleibt. Wenn Sie nur Funktionen zur Ereignisverfolgung benötigen, löschen Sie alle außer demInstantSearchInsights
Framework.
Wenn Sie Carthage zum ersten Mal in dem Projekt verwenden, müssen Sie einige zusätzliche Schritte ausführen, wie oben bei Carthage erläutert.
Sie können mit dem Leitfaden „Erste Schritte“ beginnen.
Erfahren Sie mehr über InstantSearch iOS auf der speziellen Dokumentationswebsite.
In Ihrem 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
}
}
Sie können jetzt Ihre Anwendung erstellen und ausführen, um die grundlegende Sucherfahrung in Aktion zu erleben. Sie sollten sehen, dass sich die Ergebnisse bei jedem Tastendruck ändern.
Um ein aussagekräftigeres Sucherlebnis zu erhalten, befolgen Sie bitte die Anleitung „Erste Schritte“. Wenn Sie eine SwiftUI-Anwendung erstellen, lesen Sie bitte die Anleitung „Erste Schritte mit SwiftUI“.
Wenn Sie in Ihrem Projekt nur Geschäftslogikmodule benötigen und das InstantSearchCore
-Framework verwenden, fügen Sie import InstantSearchCore
zu Ihren Quelldateien hinzu.
Die Bibliothek erstellt sieben Protokollschweregrade. Der Standardschweregrad ist .info
. Sie können die Protokollierungsstufe wie folgt konfigurieren:
Logs.logSeverityLevel = .debug
InstantSearch iOS sammelt Datenpunkte zur Laufzeit. Dies hilft dem InstantSearch-Team, zukünftige Entwicklungen zu verbessern und zu priorisieren.
Hier ist eine vollständige Liste der gesammelten Daten:
HitsSearcher
, FilterState
facets
in FacetListInteractor
eine leere Liste. Wenn Sie es mit einer Liste von Facetten instanziieren, verfolgt die Telemetrie, dass der facets
einen benutzerdefinierten Wert erhalten hat, nicht jedoch den Wert selbst.InstantSearch sammelt keine sensiblen oder persönlichen Daten. Sie können die Telemetrieerfassung jedoch weiterhin mit dem folgenden Code deaktivieren:
InstantSearchTelemetry . shared . isEnabled = false
InstantSearch iOS ist Apache 2.0-lizenziert.