โดย อัลโกเลีย.
กลุ่ม InstantSearch: InstantSearch iOS | ค้นหาทันใจ Android | ตอบสนองการค้นหาทันใจ | ค้นหาทันใจ.js | ค้นหาทันทีเชิงมุม | Vue ค้นหาทันใจ
InstantSearch iOS เป็นเฟรมเวิร์กที่มีส่วนประกอบและตัวช่วยเพื่อช่วยคุณสร้างประสบการณ์การค้นหาทันทีที่ดีที่สุดบน iOS ด้วย Algolia สร้างขึ้นบนไลบรารี Swift API Client ของ Algolia เพื่อมอบโซลูชันระดับสูงสำหรับสร้างอินเทอร์เฟซการค้นหาต่างๆ อย่างรวดเร็ว
InstantSearch iOS ประกอบด้วยผลิตภัณฑ์สามรายการ
คุณสามารถดูการทำงานของ InstantSearch iOS ได้ในโครงการตัวอย่าง ประกอบด้วยองค์ประกอบการค้นหาและประสบการณ์ที่สร้างด้วย InstantSearch และเขียนด้วย Swift
Swift Package Manager เป็นเครื่องมือสำหรับจัดการการแจกจ่ายโค้ด Swift มันถูกรวมเข้ากับระบบ Swift build เพื่อทำให้กระบวนการดาวน์โหลด คอมไพล์ และลิงก์การอ้างอิงเป็นไปโดยอัตโนมัติ นับตั้งแต่เปิดตัว Swift 5 และ Xcode 11 SPM สามารถทำงานร่วมกับระบบการสร้าง iOS, macOS และ tvOS สำหรับการสร้างแอพได้
หากต้องการใช้ SwiftPM คุณควรใช้ Xcode 11 เพื่อเปิดโครงการของคุณ คลิก File
-> Swift Packages
-> Add Package Dependency
ป้อน URL ของ repo ของ InstantSearch ถัดไป เลือกผลิตภัณฑ์ที่คุณพิจารณาว่าจะใช้ในโครงการของคุณจากรายการที่ให้ไว้
หากคุณเป็นผู้เขียนเฟรมเวิร์กและใช้ InstantSearch เป็นการพึ่งพา ให้อัปเดตไฟล์ 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 เป็นผู้จัดการการพึ่งพาสำหรับโครงการ Cocoa
หากต้องการติดตั้ง InstantSearch เพียงเพิ่มบรรทัดต่อไปนี้ใน 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
จากนั้นรันคำสั่งต่อไปนี้:
$ pod update
Carthage เป็นตัวจัดการการพึ่งพาแบบกระจายอำนาจที่เรียบง่ายสำหรับ Cocoa
github "algolia/instantsearch-ios" ~> 7.26
carthage update
./Carthage/Checkouts/instant-search-ios/carthage-prebuild
carthage build
หมายเหตุ: ในขณะนี้ Carthage ไม่มีวิธีสร้างเฉพาะส่วนประกอบย่อยของพื้นที่เก็บข้อมูลเฉพาะ (หรือเทียบเท่ากับข้อกำหนดย่อยของ CocoaPods) ส่วนประกอบทั้งหมดและการพึ่งพาจะถูกสร้างขึ้นด้วยคำสั่งข้างต้น อย่างไรก็ตาม คุณไม่จำเป็นต้องคัดลอกเฟรมเวิร์กที่คุณไม่ได้ใช้ลงในโปรเจ็กต์ของคุณ ตัวอย่างเช่น หากคุณไม่ได้ใช้ส่วนประกอบ UI จาก
InstantSearch
คุณสามารถลบเฟรมเวิร์กนั้นออกจากไดเร็กทอรี Carthage Build หลังจากcarthage update
เสร็จสิ้นโดยเก็บเฉพาะInstantSearchCore
เท่านั้น หากคุณต้องการเพียงฟังก์ชันการติดตามเหตุการณ์ ให้ลบเฟรมเวิร์กInstantSearchInsights
ทั้งหมดออก
หากนี่เป็นครั้งแรกที่คุณใช้ Carthage ในโครงการ คุณจะต้องทำตามขั้นตอนเพิ่มเติมตามที่อธิบายไว้ใน Carthage
คุณสามารถเริ่มต้นด้วยคู่มือเริ่มต้นใช้งาน
เรียนรู้เพิ่มเติมเกี่ยวกับ InstantSearch iOS ในเว็บไซต์เอกสารเฉพาะ
ใน 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
}
}
ตอนนี้คุณสามารถสร้างและเรียกใช้แอปพลิเคชันของคุณเพื่อดูประสบการณ์การค้นหาขั้นพื้นฐานในการดำเนินการ คุณจะเห็นว่าผลลัพธ์มีการเปลี่ยนแปลงในแต่ละการกดแป้น
หากต้องการประสบการณ์การค้นหาที่มีความหมายมากขึ้น โปรดปฏิบัติตามคู่มือการเริ่มต้นใช้งาน หากคุณสร้างแอปพลิเคชัน SwiftUI โปรดดูคู่มือการเริ่มต้นใช้งาน SwiftUI
หากคุณต้องการเพียงโมดูลตรรกะทางธุรกิจในโปรเจ็กต์ของคุณ และใช้เฟรมเวิร์ก InstantSearchCore
ให้เพิ่ม import InstantSearchCore
ลงในไฟล์ต้นฉบับของคุณ
ความรุนแรงของบันทึกมี 7 ระดับที่ห้องสมุดสร้างขึ้น ระดับความรุนแรงเริ่มต้นคือ . .info
คุณสามารถกำหนดค่าระดับการบันทึกได้ดังต่อไปนี้:
Logs.logSeverityLevel = .debug
InstantSearch iOS รวบรวมจุดข้อมูล ณ รันไทม์ สิ่งนี้ช่วยให้ทีมค้นหาทันใจปรับปรุงและจัดลำดับความสำคัญของการพัฒนาในอนาคต
ต่อไปนี้เป็นรายการข้อมูลที่รวบรวมโดยครบถ้วน:
HitsSearcher
, FilterState
facets
ใน FacetListInteractor
จะเป็นรายการว่าง หากคุณสร้างอินสแตนซ์ด้วยรายการแง่มุม การวัดและส่งข้อมูลทางไกลจะติดตามว่าพารามิเตอร์ facets
ได้รับค่าที่กำหนดเอง แต่ไม่ใช่ค่านั้นเองค้นหาทันใจไม่รวบรวมข้อมูลที่ละเอียดอ่อนหรือข้อมูลส่วนบุคคลใดๆ อย่างไรก็ตาม คุณยังคงสามารถเลือกไม่รับการรวบรวมการวัดและส่งข้อมูลทางไกลได้โดยใช้รหัสต่อไปนี้:
InstantSearchTelemetry . shared . isEnabled = false
InstantSearch iOS ได้รับอนุญาตจาก Apache 2.0