Table of Contents
مقدمه مقدماتی
کاربران موبایل مدرن انتظار دسترسی فوری به اطلاعات را دارند. یکپارچه سازی جستجوی سیستم به برنامه iOS شما به طور چشمگیری اصطکاک را کاهش می دهد، به کاربران اجازه می دهد تا بدون باز کردن برنامه خود، محتوای را پیدا کنند. API منبع اتصال نرم افزار و تنظیم پیام های عمیق، همه چیز را برای نمایه سازی محتوای برنامه در کنار جستجوی جهانی دستگاه ارائه می دهد.
درک Core Spotlight و مزایای آن
Core Spotlight یک سیستم نمایه سازی سبک و حریم خصوصی است.این به طور کامل بر روی دستگاه زندگی می کند - هیچ داده ای تلفن کاربر را ترک نمی کند مگر اینکه شما به طور صریح از CloudKit استفاده کنید، این امر باعث می شود آن را برای محتوای شخصی مانند یادداشت ها، مخاطبین، اسناد و یا هر گونه داده های تولید شده کاربر ایده آل است:
- افزایش مشارکت - کاربران کشف محتوا که ممکن است فراموش کرده اند، افزایش استفاده تکرار.
- ناوبری بدون درز - نتیجه جستجو می تواند برنامه شما را به طور مستقیم به صفحه نمایش مربوطه باز کند.
- قابلیت رسمی - موارد شاخص شده حتی بدون اتصال به اینترنت قابل جستجو هستند.
- هزینه پیاده سازی پایین - API کوچک، به خوبی مستند شده و به راحتی با مدل های داده موجود ادغام می شود.
Core Spotlight در کنار UserActivity indexing] کار می کند، اما برای محتوای ثابت یا اغلب به روز شده، شاخص مستقیم CSSearchableItem به شما کنترل دقیق تر می دهد.
پیش بینی ها و راه اندازی
قبل از نوشتن کد، اطمینان حاصل کنید که پروژه شما به درستی پیکربندی شده است:
- برنامه شما باید (FLT:0 [iOS 9] یا بعد از آن [FLT 1 ] ( API با iOS 9) را هدف قرار دهد.
- در این راستا، در |Core]]، ، ، ، ، را فعال کنید و این قابلیت را به صورت خودکار در هنگام وارد کردن چارچوب درج می کند.
- وارد کردن چارچوب اصلی و MobileCore Services (برای شناسه های نوع): و
هیچ پیکربندی سرور اضافی یا مجوز کاربر مورد نیاز نیست.شاخص به طور همزمان در پس زمینه اتفاق می افتد.
ایجاد و فهرست کردن آیتم های قابل جستجو
و هر چیز از آن است که هر کدام از آن ها عبارتند از:
- [در این میان] [[[[۱]] [۱] [۱]] [۳]] [[۳]]] [[۳]]] [[۳]]]] [[۳]]]] [[۳]]]] [[[۳]]]]] [[[۳]]]]]]] [[[[[[۳]]]]]]]] [[[[[[[[[[[۳]]]]]]]]]]]]]]]]]]] [[[[[[[[[[[[۳]]]]]]]]]]]]]]]]]]]]]]]]] [۳] [[[[[[[[[[[[[[[[[[[[[[[[[۳]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]] [[[[[[[[[[[[[[[[[[[[[[[[[
- [در این میان] یک حساب کاربری اختیاری (FLT:0 [FLT 1]
- [[۱] [۱۰] [[۱۰]] [[۱۰]]] [[۱۰]]] [[۱۰]]]] [[۱۰]]]] [[۱۰]]] [[۱۰]]]] [۱۰]]] [[۱۰]]]] [و [۳] [۳] [۳]] [و [و [بر [بر [بر [براى]]] [بر [بر [و [و [و [و [بر [و [و [بر [بر [براى]]]]] [بر [بر [بر [بر [بر [بر [بر [بر [بر [و [بر [بر [بر [بر [براى]]]]]]]]]]]]]]]]]]]]]]]]]] [بر [بر [بر [بر [بر [بر [بر [بر [بر [بر [بر [بر [بر [بر [بر [بر [بر [بر [بر [بر [بر [بر [بر [بر [و [بر [بر [بر [بر [بر [بر [بر [بر [بر [بر [بر [بر [بر [بر
در اینجا یک مثال کامل Swift وجود دارد که یک یادداشت واحد را فهرست می کند:
import CoreSpotlight
import MobileCoreServices
func indexNote(note: Note) {
let attributeSet = CSSearchableItemAttributeSet(itemContentType: kUTTypeText as String)
attributeSet.title = note.title
attributeSet.contentDescription = note.body
attributeSet.keywords = [note.title] + note.tags
if let imageData = note.thumbnail?.pngData() {
attributeSet.thumbnailData = imageData
}
let item = CSSearchableItem(
uniqueIdentifier: "com.yourapp.note.\(note.id)",
domainIdentifier: "com.yourapp.notes",
attributeSet: attributeSet
)
// Optionally set expiration date (default is one month)
// item.expirationDate = Date.distantFuture
CSSearchableIndex.default().indexSearchableItems([item]) { error in
if let error = error {
print("Indexing error: \(error.localizedDescription)")
} else {
print("Note indexed successfully.")
}
}
}
ویژگی های Set Properties
[در این میان] [و] [و] از ارث می برند و ده ها تن از اموال را ارائه می دهند، برای اکثر برنامه های زیر ضروری است:
- [FLT 13 ] - کوتاه، متن توصیفی که به طور برجسته ظاهر می شود.
- [در این میان]، [در این میان]، [در این میان]، [و] [در این میان]، [و] [در این میان]، [و] [در این میان]، [و] [به عنوان]، [و] [به عنوان [به عنوان] [به عنوان] [و [به عنوان] [به عنوان یک قطعه دیگر] [به نمایش در می آیند.
- - آرایه ای از [FLT16] برای شرایط جستجو جایگزین.
- [در این باره] یا [FLT17] [و یا [FLT1] پیش نمایش بصری [و نمایش] [و یا [FLT] [به صورت تصویری] [در این باره] قرار می گیرد.
- [در این میان]، [و] [به عنوان مثال]، [و] [و] [و]] [و] [و]] [و]] [به عنوان مثال،] یادداشت های والدین و فرزندان [به صورت] به یکدیگر پیوند می دهند.
برای محتوای رسانه ای، از خواص خاص مانند استفاده کنید، یا .
بالا بردن و کاهش محتوای شاخص
هنگامی که محتوای برنامه شما تغییر می کند، باید شاخص را همگام سازی کنید.از روش های مشابه استفاده کنید:
بالا بردن یک مقاله
فراخوان (FLT:24) با همان شناسه منحصر به فرد - API به طور خودکار جایگزین ورودی قدیمی است.
حذف وسایل
از [[FLT 25]] یا [[FLT 26]] استفاده کنید تا محتوای ثابت را حذف کنید.
CSSearchableIndex.default().deleteSearchableItems(withIdentifiers: ["com.yourapp.note.123"]) { error in
// handle
}
عملیات Batch کارآمد است: آرایه هایی را برای (FLT:28) یا [FLT 29] برای یک تنظیم مجدد کامل، استفاده کنید (FLT:30) (به طور گسترده ای مورد نیاز است).
مدیریت فعالیت کاربر و لینک عمیق
هنگامی که کاربر یک نتیجه را دریافت می کند، برنامه شما از طریق [FLT 31] ادامه می یابد.پی.هُد روش نمایندگی زیر در (FLT:32) یا
func application(_ application: UIApplication,
continue userActivity: NSUserActivity,
restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
if userActivity.activityType == CSSearchableItemActionType {
if let userInfo = userActivity.userInfo,
let identifier = userInfo[CSSearchableItemActivityIdentifier] as? String {
// Navigate to the item with this identifier
navigateToContent(identifier: identifier)
return true
}
}
return false
}
استراحت دولت
برای تجربه ای نرم تر، همچنین را برای نشان دادن یک حالت بارگذاری در برنامه های مبتنی بر صحنه (iOS 13+)، استفاده از روش [FLT36] .
ارتباط عمیق با NSUserActivity
همچنین در این زمینه می توانید با استفاده از طرح های [[FLT 39]] کار کنید و از آن استفاده کنید.
بهترین روش ها برای شاخص موثر
پس از این دستورالعمل ها اطمینان حاصل می کند که محتوای نمایه شده شما مرتبط و اجرا کننده است:
شاخص فقط محتوای معنی دار
هر قطعه کوچکی از داده ها را فهرست نکنید.تمرکز بر موارد کاربران احتمالاً به دنبال موارد زیر است: اسناد اخیر، صفحات با ارزش بالا یا محتوای مارک شده.
۲- تعیین تاریخ های انقضای مناسب
به طور پیش فرض، موارد پس از یک ماه منقضی می شوند، برای محتوای استاتیک، تنظیم شده (FLT:42) برای داده های حساس به زمان (به عنوان مثال یادآوری رویداد)، از یک تاریخ واقعی استفاده کنید.
استفاده از Domain Identifiers عاقلانه
شناسه های دامنه به شما اجازه می دهند تمام موارد را از یک گروه به طور مثال حذف کنید، اگر یک کاربر یک پوشه را حذف کند، تماس بگیرید (FLT 43).
۴- ارائه کلمات کلیدی معنی دار
شامل مترادف ها، اشتباهات رایج و نام های جایگزین است.از بیش از حد اجتناب کنید؛ کلمات کلیدی 5 تا 10 به خوبی کولین کافی است.
۵- اجتناب از نمایه سازی محتوای تکراری
اگر موارد تکراری (به عنوان مثال، همان عنوان در دامنه های مختلف)، کاربران نتایج گیج کننده ای را می بینند.
عملیات Batch برای به روز رسانی های فله
هنگامی که بسیاری از موارد را همگام سازی می کنید (به عنوان مثال، پس از یک بازسازی ابری)، آنها را به آرایه هایی از 50 تا 100 تقسیم می کنند تا از مسدود کردن رشته اصلی جلوگیری کنند.(FLT:44) با آرایه ای، نه چندین تماس واحد.
ویژگی های عملکردی و Battery در نظر گرفته شده
Core Spotlight یک فرآیند پس زمینه کم اولویت را اجرا می کند، اما پیاده سازی ضعیف می تواند باتری یا عملکرد سیستم را تخلیه کند:
- تکرار مجدد [FLT 1] - فقط هنگامی که داده ها در واقع تغییر می کنند، نه در هر پرتاب برنامه.
- [[۱] [۱۰] [۱۰] [۱۰] [۱۰] [۱۰]] [۱۰]] [[۳]]] [[۳]]] [[۳]]] [[۳]]]] [[۳]]]] [[۳]]] [[۳]]] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [و [براى به روز رسانی های اتمی [و [براى [براى [براى [براى [براى [براى [براى [براى [براى [براى [براى [براى [براى] [براى [براى [براى [براى [براى [براى [براى [براى] [براى [براى [براى [براى] [براى] [براى [براى [براى] [براى [براى] [براى [براى] [براى [براى] [براى [براى [براى [براى] [براى] [براى [براى] [براى] [براى [بر
- تصاویر سنگین [FLT: 48] باید کوچک باشند (به عنوان مثال 64×64 امتیاز، تصاویر فشرده JPEG فشار حافظه را افزایش می دهد.
- از شاخص پیش فرض استفاده کنید برای تقریبا تمام برنامه ها کافی است.
تست Core Spotlight Integration
نتایج ضعیف صفحه نمایش می تواند دشوار باشد زیرا همیشه بلافاصله ظاهر نمی شوند.
- تست شتاب دهنده - استفاده از iOS Simulator (iOS 15 یا بعد) پس از نمایه سازی، چند ثانیه صبر کنید، سپس صفحه اصلی را برای جستجو پایین بیاورید.
- تست - همیشه بر روی یک دستگاه فیزیکی آزمایش کنید.
- فهرست را تنظیم کنید - از برنامه تنظیمات استفاده کنید: عمومی - جستجو برای شکستن برنامه خود و در این مرحله شاخص و نیرو یک شروع تازه را روشن می کند.
- حذف - پس از حذف یک آیتم، اطمینان حاصل کنید که نتیجه قدیمی دیگر ظاهر نمی شود، گاهی اوقات سیستم نتایج را ذخیره می کند؛ آن را تا 30 ثانیه.
- [[۱] [۱۰] [[۱]] [[۱۰]]] [[۳]]] [[۳]]] [۳] [۱]] [۳]] [۳] [۱] [۳] [۳]] [۳] [۳] [۳] [۳] [۳] [۳] [۱] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [۳] [
منبع مفید (FLT:0WDC 2015 "I معرفی Core Spotlight" است که مفاهیم بنیادی را که هنوز قابل اجرا هستند، پوشش می دهد.
نتیجه گیری
Core Spotlight API یک ابزار قوی و بی رویه است که می تواند نحوه تعامل کاربران با برنامه شما را تغییر دهد.با اضافه کردن محتوای مربوطه، به روز به شاخص جستجوی سیستم، شما یک مسیر بدون اصطکاک از جستجو به محتوا - افزایش تعامل و حفظ کوچک را ارائه می دهید: مهمترین محتوای خود را ابتدا، تست کامل، و سپس گسترش موارد ثانویه برای به یاد آوردن تجربه منحصر به فرد خود را با استفاده از صفحه نمایش، و استفاده از مراحل جستجوی کاربر آماده کنید.
برای خواندن بیشتر، با مرجع رسمی چارچوب و راهنمای برنامه نویسی جستجو مشورت کنید.