アルゴリア著。
InstantSearch ファミリー: InstantSearch iOS |インスタントサーチ Android |インスタントサーチに反応する |インスタントサーチ.js |角度インスタントサーチ | Vue インスタントサーチ。
InstantSearch iOS は、 Algolia を使用して iOS 上で最高のインスタント検索エクスペリエンスを構築するのに役立つコンポーネントとヘルパーを提供するフレームワークです。これは、Algolia の Swift API クライアント ライブラリの上に構築されており、さまざまな検索インターフェイスを迅速に構築するための高レベルのソリューションを提供します。
InstantSearch iOS は3 つの製品で構成されています
Examples プロジェクトでは、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 の詳細については、専用のドキュメント Web サイトをご覧ください。
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 ライセンスを取得しています。