بواسطة ألجوليا.
عائلة البحث الفوري: InstantSearch iOS | البحث الفوري أندرويد | رد فعل البحث الفوري | InstantSearch.js | البحث الفوري الزاوي | فيو البحث الفوري.
InstantSearch iOS هو إطار عمل يوفر المكونات والمساعدين لمساعدتك في بناء أفضل تجربة بحث فوري على iOS باستخدام Algolia. إنه مبني على مكتبة Algolia's Swift API Client لتوفر لك حلاً عالي المستوى لبناء واجهات بحث متنوعة بسرعة.
يتكون 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
، وأدخل عنوان URL الخاص بمستودع 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 هو مدير التبعية لمشاريع الكاكاو.
لتثبيت 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
قرطاج هو مدير تبعية بسيط ولامركزي للكاكاو.
github "algolia/instantsearch-ios" ~> 7.26
carthage update
./Carthage/Checkouts/instant-search-ios/carthage-prebuild
carthage build
ملحوظة: في الوقت الحالي، لا توفر Carthage طريقة لبناء مكونات فرعية محددة فقط للمستودع (أو ما يعادل المواصفات الفرعية لـ CocoaPods). سيتم إنشاء جميع المكونات وتبعياتها باستخدام الأمر أعلاه. ومع ذلك، لا تحتاج إلى نسخ الإطارات التي لا تستخدمها في مشروعك. على سبيل المثال، إذا كنت لا تستخدم مكونات واجهة المستخدم من
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 مرخص.