알골리아에서.
InstantSearch 제품군: InstantSearch iOS | 인스턴트서치 안드로이드 | 인스턴트 검색에 반응 | InstantSearch.js | 각도 인스턴트 검색 | Vue 인스턴트서치.
InstantSearch iOS는 Algolia를 사용하여 iOS에서 최고의 즉시 검색 환경을 구축하는 데 도움이 되는 구성 요소와 도우미를 제공하는 프레임워크입니다. Algolia의 Swift API 클라이언트 라이브러리를 기반으로 구축되어 다양한 검색 인터페이스를 신속하게 구축할 수 있는 높은 수준의 솔루션을 제공합니다.
InstantSearch iOS는 세 가지 제품으로 구성됩니다.
예제 프로젝트에서 InstantSearch iOS가 작동하는 모습을 볼 수 있습니다. 여기에는 InstantSearch로 구축되고 Swift로 작성된 검색 구성 요소와 경험이 포함되어 있습니다.
Swift Package Manager는 Swift 코드 배포를 관리하는 도구입니다. 이는 Swift 빌드 시스템과 통합되어 종속성 다운로드, 컴파일 및 연결 프로세스를 자동화합니다. Swift 5 및 Xcode 11 출시 이후 SPM은 앱 제작을 위한 iOS, macOS 및 tvOS 빌드 시스템과 호환됩니다.
SwiftPM을 사용하려면 Xcode 11을 사용하여 프로젝트를 열어야 합니다. File
-> Swift Packages
-> Add Package Dependency
클릭하고 InstantSearch 저장소의 URL을 입력하세요. 다음으로, 제공된 목록에서 프로젝트에 사용할 제품을 선택하세요.
프레임워크 작성자이고 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의 하위 사양과 동등한 구성 요소)만 빌드하는 방법을 제공하지 않습니다. 모든 구성 요소와 해당 종속성은 위 명령으로 빌드됩니다. 그러나 사용하지 않는 프레임워크를 프로젝트에 복사할 필요는 없습니다. 예를 들어
InstantSearch
의 UI 구성 요소를 사용하지 않는 경우carthage update
완료된 후InstantSearchCore
만 유지하면서 Carthage Build 디렉터리에서 해당 프레임워크를 삭제해도 됩니다. 이벤트 추적 기능만 필요한 경우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는 런타임에 데이터 포인트를 수집합니다. 이는 InstantSearch 팀이 향후 개발을 개선하고 우선순위를 정하는 데 도움이 됩니다.
수집된 데이터의 전체 목록은 다음과 같습니다.
HitsSearcher
, FilterState
FacetListInteractor
의 facets
값의 기본값은 빈 목록입니다. 패싯 목록으로 인스턴스화하면 원격 분석은 facets
매개변수가 사용자 지정 값을 수신했지만 값 자체는 수신하지 않았음을 추적합니다.InstantSearch는 민감한 데이터나 개인 데이터를 수집하지 않습니다. 그러나 다음 코드를 사용하여 원격 분석 수집을 옵트아웃할 수 있습니다.
InstantSearchTelemetry . shared . isEnabled = false
InstantSearch iOS는 Apache 2.0 라이센스를 받았습니다.