Oleh Algolia.
Keluarga Pencarian Instan: Pencarian Instan iOS | Pencarian Instan Android | Bereaksi Pencarian Instan | Pencarian Instan.js | Pencarian Instan Sudut | Vue Pencarian Instan.
InstantSearch iOS adalah kerangka kerja yang menyediakan komponen dan pembantu untuk membantu Anda membangun pengalaman pencarian instan terbaik di iOS dengan Algolia. Itu dibangun di atas pustaka Klien API Swift Algolia untuk memberi Anda solusi tingkat tinggi untuk membangun berbagai antarmuka pencarian dengan cepat.
InstantSearch iOS terdiri dari tiga produk
Anda dapat melihat InstantSearch iOS beraksi di proyek Contoh. Ini berisi komponen pencarian dan pengalaman yang dibangun dengan InstantSearch dan ditulis dalam Swift.
Swift Package Manager adalah alat untuk mengelola distribusi kode Swift. Ini terintegrasi dengan sistem build Swift untuk mengotomatiskan proses pengunduhan, kompilasi, dan menghubungkan dependensi. Sejak rilis Swift 5 dan Xcode 11, SPM kompatibel dengan sistem build iOS, macOS, dan tvOS untuk membuat aplikasi.
Untuk menggunakan SwiftPM, Anda harus menggunakan Xcode 11 untuk membuka proyek Anda. Klik File
-> Swift Packages
-> Add Package Dependency
, masukkan URL repo InstantSearch. Selanjutnya, pilih produk yang Anda pertimbangkan untuk digunakan dalam proyek Anda dari daftar yang tersedia.
Jika Anda adalah pembuat kerangka kerja dan menggunakan InstantSearch sebagai dependensi, perbarui file Package.swift
Anda:
let package = Package (
// 7.26.0 ..< 8.0.0
dependencies : [
. package ( url : " https://github.com/algolia/instantsearch-ios " , from : " 7.26.0 " )
] ,
// ...
)
CocoaPods adalah manajer ketergantungan untuk proyek Kakao.
Untuk menginstal InstantSearch, cukup tambahkan baris berikut ke Podfile Anda:
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
Kemudian, jalankan perintah berikut:
$ pod update
Carthage adalah manajer ketergantungan yang sederhana dan terdesentralisasi untuk Kakao.
github "algolia/instantsearch-ios" ~> 7.26
carthage update
./Carthage/Checkouts/instant-search-ios/carthage-prebuild
carthage build
CATATAN: Saat ini, Carthage tidak menyediakan cara untuk membangun subkomponen repositori tertentu saja (atau setara dengan subspesifikasi CocoaPods). Semua komponen dan dependensinya akan dibangun dengan perintah di atas. Namun, Anda tidak perlu menyalin kerangka kerja yang tidak Anda gunakan ke dalam proyek Anda. Misalnya, jika Anda tidak menggunakan komponen UI dari
InstantSearch
, silakan hapus kerangka kerja tersebut dari direktori Carthage Build setelahcarthage update
selesai dan hanya menyimpanInstantSearchCore
. Jika Anda hanya memerlukan fungsi pelacakan peristiwa, hapus semua kecuali kerangkaInstantSearchInsights
.
Jika ini adalah pertama kalinya Anda menggunakan Carthage dalam proyek ini, Anda harus melalui beberapa langkah tambahan seperti yang dijelaskan di Carthage.
Anda dapat memulai dengan Panduan Memulai.
Pelajari lebih lanjut tentang InstantSearch iOS di situs web dokumentasi khusus.
Di ViewController.swift
Anda:
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
}
}
Anda kini dapat membuat dan menjalankan aplikasi untuk melihat pengalaman penelusuran dasar beraksi. Anda akan melihat bahwa hasilnya berubah pada setiap penekanan tombol.
Untuk mendapatkan pengalaman pencarian yang lebih bermakna, silakan ikuti Panduan Memulai. Jika Anda membuat aplikasi SwiftUI, silakan lihat panduan Memulai SwiftUI
Jika Anda hanya memerlukan modul logika bisnis dalam proyek Anda dan menggunakan kerangka InstantSearchCore
, tambahkan import InstantSearchCore
ke file sumber Anda.
Ada 7 tingkat keparahan log yang dihasilkan oleh perpustakaan. Tingkat keparahan default adalah .info
. Anda dapat mengonfigurasi tingkat logging sebagai berikut:
Logs.logSeverityLevel = .debug
InstantSearch iOS mengumpulkan titik data saat runtime. Hal ini membantu tim InstantSearch meningkatkan dan memprioritaskan pengembangan di masa depan.
Berikut daftar lengkap data yang dikumpulkan:
HitsSearcher
, FilterState
facets
default di FacetListInteractor
adalah daftar kosong. Jika Anda membuat instance dengan daftar faset, maka telemetri melacak bahwa parameter facets
menerima nilai khusus, namun bukan nilai itu sendiri.InstantSearch tidak mengumpulkan data sensitif atau pribadi apa pun. Namun, Anda masih dapat memilih untuk tidak ikut pengumpulan telemetri dengan kode berikut:
InstantSearchTelemetry . shared . isEnabled = false
InstantSearch iOS berlisensi Apache 2.0.