מבוא

משתמשים ניידים מודרניים מצפים לגישה מיידית למידע.חיפוש ברמת המערכת לתוך אפליקציית iOS שלך באופן דרמטי מפחית את החיכוך, ומאפשר למשתמשים למצוא תוכן ללא פתיחת האפליקציה שלך קודם.ה-FLT:0Core Spotlight APIFLT:1 הוא המסגרת הבנויה של Apple עבור אינדקס תוכן לתוך החיפוש העולמי של המכשיר.

הבנת אור הזרקורים והיתרונות שלו

תאורה הליבה היא מערכת אינדקס קל משקל וידידותי לפרטיות.It חי לחלוטין על device - שום נתונים לא משאירים את הטלפון של המשתמש אלא אם כן אתה משתמש במפורש ב-CloudKit. זה הופך אותו אידיאלי עבור תוכן אישי כגון הערות, אנשי קשר, מסמכים, או כל מידע מבוסס משתמש.

  • (ב) ,0) ,התעסקות במעורבות מופרזת (בקיצור: 1) משתמשים מגלים תוכן שהם עשויים לשכוח, להגביר את השימוש החוזר.
  • (ב) ,0) ,Seamless ניווט FLT 1 - תוצאה של חיפוש יכול לפתוח את האפליקציה ישירות למסך הרלוונטי.
  • (ב) ,0) יכולות רשמיות של ההרחבה: פריטים מקודמים נשארים ניתנים לחיפוש גם ללא קישוריות לאינטרנט.
  • (ב) ,0)ההתביעה עלות יישום של ההרחבה: ה- API הוא קטן, בעל כוונות טובות, ומשלב בקלות עם מודלים קיימים של נתונים.

אור הזרקורים של Core פועל לצד FLT:0 NSUserActivityveFLT:1, אבל עבור תוכן סטטי או מעודכנים לעתים קרובות, ישירות CSSearchableItem index נותן לך שליטה טובה יותר.

Prerequisites and Setup

לפני כתיבת קוד, ודא שהפרויקט שלך מוגדר כראוי:

  1. האפליקציה שלך חייבת למקד את המטרה (FLT:0)iOS 9 ואילךFLT:1 (הממשק הראשון עם iOS 9).
  2. (ב) ,0) ,4 ,4 ,5 ,5 , ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
  3. ייבוא מסגרת האור של קוור ו- MobileCoreservices (למזהים מסוגים): 0 ו-FLT:1.

אין צורך בתצורה נוספת של שרת או רשות למשתמש.אינדקס מתרחש באופן מסונכרן ברקע.

יצירת ואינדקס פריטים לחיפוש

מקור: The Core Spotlight הוא האובייקט של כל פריט מורכב:

  • (ב) ,0) ,[[1924]]]], [[1924]]]]]], [[1924]]]], [[1924]]]]]]
  • (ב) ,0) ,[[1924]]]], [[1924]]]]]]
  • (ב) ,5 ,5 , ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇

הנה דוגמא שלמה ל 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.")
 }
 }
}

Attribute Set Properties

(ב) ,(FLT:11 , , , , , , , , , , , , ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇

  • (ב) (בקיצור, טקסט קצר, תיאורי, המופיע בפירוש.
  • (ב) , (ב) , (ב) , ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
  • (ב) ,ב"ה, ב[[1924]], [[1924]], [[1924]]
  • (ב) , (ב) , (ב) , ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
  • (ב) , (במילים אחרות) , ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇

(ב) ב[[1924]], [[1924]], [[1924]], [[1924]], [[1924]], [[1924]]]], [[1924]], [[1924]]]], [[1924]]]], [[1924]]]], [[1924]]]]

עדכון ומחקו את התוכן

כאשר התוכן של האפליקציה משתנה, עליך לשמור את האינדקס בסנכרון. השתמש באותה שיטה (FLT:23).

העלאת כוסית

קרא ל-FLT:24 עם אותו המזהה הייחודי - ה- API מחליף באופן אוטומטי את הכניסה הישנה.

פריטים

(ב) , (ב) , (ב) , עיין בתוכן:

CSSearchableIndex.default().deleteSearchableItems(withIdentifiers: ["com.yourapp.note.123"]) { error in
 // handle
}

(ב) ,הפועלים הם יעילים: העברת מערך ל- 28 או ל-FLT:29 עבור ריצוף מלא, שימוש ב-FLT:30 (נדרש באופן טבעי).

קשר עם פעילות המשתמש וקישור עמוק

כאשר משתמש מזין תוצאה של נקודת אור, האפליקציה שלך מקבלת שיחה דרך הרצף (FLT:31) .

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
}

אחסון המדינה

לצורך חוויה חלקה יותר, יש ליישם גם את שיטת טעינה (FLT:35) באפליקציות מבוססות סצינה (iOS 13+), להשתמש בשיטה של FLT:36.

קשר עמוק עם NSUserActivity

אור הזרקורים פועל גם עם מנגנון FLT:38 אם אתה כבר פעילות אינדקס באמצעות שורת:39, אתה יכול להוסיף דגל FLT:40 עם זאת, עבור שליטה על כותרות ותיאורים, להשתמש ב- FLT:41 ישירות.

הפרקטיקה הטובה ביותר לאינדקס יעיל

לאחר הנחיות אלה, התוכן שלך מבוסס אינדקס נשאר רלוונטי ומבצע:

1 מדד רק תוכן משמעות

אל תמדדו כל פיסת נתונים זעירה. להתמקד בפריטים שמשתמשים עשויים לחפש: מסמכים אחרונים, דפי ערך גבוהים או תוכן מסומן.

2.קבע תאריך קונספירציה נכון

כברירת מחדל, פריטים יפוג לאחר חודש אחד. עבור תוכן סטטי, להגדיר (FLT:42 עבור נתונים רגישים לזמן (למשל, תזכורות אירוע), להשתמש בתאריך ריאלי.

3. השתמש ב- Domain Identifiers בחוכמה

מזהה דומיין מאפשר לך למחוק את כל הפריטים מקבוצה בבת אחת.לדוגמה, אם משתמש מוחק תיקיה, התקשר ל-FLT:43.

4.ספק מילות מפתח משמעות

כולל נרדפות, מפספסים נפוצים ושמות אלטרנטיביים. להימנע מעודף; 5-10 מילות מפתח טובות של הנבחרות מספיקות.

5. להימנע מאינדקס תוכן

אם אתה משכפל פריטים (למשל, אותו שם בתחומים שונים), משתמשים רואים תוצאות מבלבלות.דאפוליט ברמת האפליקציה.

10.10 פעולות בוץ' לעדכונים

כאשר מסנכרנים פריטים רבים (למשל, לאחר שחזור ענן), הם מאגדים של 50 עד 100 כדי למנוע חסימת החוט הראשי. השתמש ב-FLT:44 עם מערך, לא מספר שיחות.

ביצועים ושיקולי סוללה

תאורה הליבה היא תהליך רקע פרטיות נמוך, אבל יישום גרוע יכול לנקז סוללות או ביצועים במערכת דירוג:

  • (ב) ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
  • (ב) ויקרא י"א: ויקרא י"ד: "והיה ניתן לקדש" (בראשית כ"ד) ל"ד).
  • (ב) [ה]:0] אין תמונות כבדות של כפל 1 – (FLT:48) צריך להיות קטן (למשל 64×64 נקודות, JPEG דחוס) תמונות גדולות מגבירות את לחץ הזיכרון.
  • (ב) ,0) השתמש באינדקס ברירת המחדל של ה-FLT:1 - מספיק עבור כמעט כל היישומים.

אפל (FLT:0) מסמך של אור הזרקורים 1FIRLT: הדגשה כי יש להתייחס לאינדקס כ"אש ושכח" - לא לחכות באופן סינכרוני להגשת שיחות על חוט הראשי.

המונחים: Core Spotlightאינטגרציה

תוצאות של ספקטרום יכול להיות מסובך כי הם לא תמיד מופיעים מיד.עקוב אחר אסטרטגיית הבדיקה הזו:

  1. (FLT:0)Simulator בדיקות בדיקת בדיקת iOS FLT:1 - השתמש ב- iOS Simulator (iOS 15 ואילך) לאחר האינדקס, לחכות כמה שניות, ולאחר מכן משוך את מסך הבית כדי לחפש.
  2. (FLT:0) בדיקות חיקוי של 1:1 - תמיד לבדוק על מכשיר פיזי. Spotlight indexing מתנהג אגרסיבי יותר על חומרה אמיתית.
  3. (FLT:0) תחילת מדדי האינדקס: השתמש באפליקציית הגדרות: כללי Spotlight Search) כדי להדוף את האפליקציה שלך, ובזה מנקה את המדד ומאלץ התחלה חדשה.
  4. (ב) ,0) ,Verify deletion: 1 (לאחר מחיקת פריט, להבטיח את התוצאה הישנה כבר לא מופיעה.
  5. (ב) ,0) ,(ה) בפרשת ה-[[1924]], [[1924]], [[1924]]]], [[1924]]]], [[1924]]]]]]

מקור:0.WDC 2015 "Introducing Core Spotlight" 1Figt 1FIR LT, אשר מכסה מושגים בסיסיים עדיין חלים היום.

מסקנה

ממשק API של תאורה הליבה הוא כלי חזק, לא מוגדר שיכול לשנות את האופן שבו משתמשים מתקשרים עם האפליקציה שלך. על ידי הוספת תוכן רלוונטי, מעודכן עד עדכני לאינדקס החיפוש של המערכת, אתה מספק נתיב ללא חיכוך מחיפוש לתוכן - להגביר את המעורבות וההחזקה.התחל קטן: אינדקס התוכן החשוב ביותר שלך קודם, בדיקה ביסודיות, ולאחר מכן להרחיב כדי לשמור על האינדקס הנקי שלך, שימוש ייחודי, מזהה חיפוש באופן עקבי עם תגובה קודמת עם ניסיון של iOS.

לקריאה נוספת, עיין במדריך ה-FLT הרשמי:0 (Core Spotlight Frameworkeur Reference) 1 ו-FLT:2App Search Programming GuideFLT 3:2App).