Table of Contents
परिचय
आधुनिक मोबाइल उपयोगकर्ता सूचना तक तत्काल पहुंच की उम्मीद करते हैं। सिस्टम-लेवल सर्च को अपने आईओएस ऐप में नाटकीय रूप से घर्षण को कम कर देता है, जिससे उपयोगकर्ता पहले अपने ऐप को खोलने के बिना सामग्री ढूंढ सकते हैं। Core Spotlight API Apple का निर्माण किया गया ढांचा है जो ऐप सामग्री को डिवाइस के वैश्विक स्पॉटलाइट खोज में अनुक्रमित करने के लिए है। जब कोई उपयोगकर्ता होम स्क्रीन से या सर्च व्यू के भीतर खोज करता है, तो आपका ऐप का अनुक्रमित आइटम मेल, संदेश और अन्य सिस्टम ऐप के परिणामों के साथ दिखाई देता है। यह लेख कोर स्पॉटलाइट को लागू करने के लिए एक व्यापक, उत्पादन-पढ़ाने वाला मार्गदर्शिका प्रदान करता है, जो बुनियादी अनुक्रमण से जुड़ा हुआ है।
कोर स्पॉटलाइट और इसके लाभों को समझना
कोर स्पॉटलाइट एक हल्का, गोपनीयता-अनुकूल अनुक्रमण प्रणाली है। यह पूरी तरह से डिवाइस पर रहता है - कोई डेटा उपयोगकर्ता के फोन को छोड़ देता है जब तक कि आप स्पष्ट रूप से क्लाउड किट का उपयोग नहीं करते हैं। इससे व्यक्तिगत सामग्री जैसे नोट्स, संपर्क, दस्तावेज़, या किसी भी उपयोगकर्ता द्वारा उत्पन्न डेटा के लिए यह आदर्श हो जाता है। प्राथमिक लाभ में शामिल हैं:
- ]Increaseed सगाई [ – उपयोगकर्ता सामग्री वे भूल गए हैं पता चलता है, दोहराने के उपयोग को बढ़ा देता है।
- Seamless नेविगेशन – एक खोज परिणाम दोहन सीधे प्रासंगिक स्क्रीन पर अपने एप्लिकेशन को खोल सकते हैं।
- ]Offline capacity – इंडेक्सेड आइटम इंटरनेट कनेक्टिविटी के बिना भी खोजे जा सकते हैं।
- कम कार्यान्वयन लागत - एपीआई छोटा, अच्छी तरह से डोक्यूमेंट किया गया है, और मौजूदा डेटा मॉडल के साथ आसानी से एकीकृत है।
कोर स्पॉटलाइट NSUserActivity अनुक्रमण के साथ काम करता है, लेकिन स्थिर या अक्सर अद्यतन सामग्री के लिए, प्रत्यक्ष CSSearchableItem अनुक्रमण आपको बेहतर नियंत्रण देता है।
पूर्वापेक्षाएँ और सेटअप
कोड लिखने से पहले, सुनिश्चित करें कि आपकी परियोजना सही ढंग से कॉन्फ़िगर की गई है:
- आपका ऐप लक्ष्य होना चाहिए iOS 9 या बाद में (API ने iOS 9 के साथ शुरुआत की)।
- सक्षम कोर स्पॉटलाइट [ Xcode में क्षमता - Signing & क्षमताओं ]"कोर स्पॉटलाइट" entitlement जोड़ें। यह अक्सर स्वचालित रूप से ढांचे को आयात करते समय शामिल किया जाता है।
- कोर स्पॉटलाइट फ्रेमवर्क और मोबाइलकोर सर्विसेज (टाइप पहचानकर्ता के लिए): ] और आयात करें।
कोई अतिरिक्त सर्वर विन्यास या उपयोगकर्ता अनुमति की आवश्यकता नहीं है। इंडेक्सिंग पृष्ठभूमि में अतुल्यकालिक रूप से होता है।
खोज योग्य आइटम बनाना और अनुक्रमण करना
कोर स्पॉटलाइट का मूल वस्तु है। प्रत्येक आइटम में निम्नलिखित शामिल हैं:
- A ] unique पहचानकर्ता (जैसे, ]) - बाद में चयन या अद्यतन को संभालने के लिए इस्तेमाल किया।
- A Objection of the Objects (FLT:0) of the Objects (FLT:0) of the Objects (e.g., ))
- An ]attribute set (]]) - ], ], ]], ], , और अधिक जैसे गुणों के साथ सामग्री का वर्णन करता है।
यहां एक पूर्ण स्विफ्ट उदाहरण है जो एक एकल नोट को अनुक्रमित करता है:
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.")
}
}
}
गुण
]] ]] से विरासत में मिली है और दर्जनों गुण प्रदान करती है। अधिकांश ऐप्स के लिए निम्नलिखित आवश्यक हैं:
- ]] - लघु, वर्णनात्मक पाठ जो प्रमुख रूप से दिखाई देता है।
- ]] - एक लंबे स्निपेट शीर्षक के नीचे दिखाया गया है।
- ]] – वैकल्पिक खोज शर्तों के लिए ] की सरणी।
- ] ]]]] ]]]] ]]] ]]]]]] ]]] ]]]]]] ]]]] ]]]]] ]]]]] ]]]]] ]]]]]] ]]]]]]]]] [[FLT[[FLT[FLT[[[FLT[[[[FLT[FLT[[]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]
- ]] – लिंक आइटम एक साथ (जैसे, माता-पिता-बच्चे नोट)।
मीडिया सामग्री के लिए, ], , या ] जैसे प्रकार-विशिष्ट गुणों का उपयोग करें।
अद्यतन और हटाने अनुक्रमित सामग्री
जब आपका ऐप का कंटेंट चेंज होता है, तो आपको सिंक में इंडेक्स रखना चाहिए। उसी का उपयोग करें तरीके:
एक आइटम अद्यतन करना
]]]] एक ही अद्वितीय पहचानकर्ता के साथ - एपीआई स्वचालित रूप से पुराने प्रविष्टि की जगह लेता है।
आइटम हटाने
] का प्रयोग करें या ]]:
CSSearchableIndex.default().deleteSearchableItems(withIdentifiers: ["com.yourapp.note.123"]) { error in
// handle
}
बैच के संचालन में कुशल हैं: पास सरणी या [[FLT::29]]]]]। एक पूर्ण रीसेट के लिए, (वास्तव में जरूरत) का उपयोग करें।
उपयोगकर्ता गतिविधि और डीप लिंकिंग को संभालने
जब कोई उपयोगकर्ता स्पॉटलाइट परिणाम को टैप करता है, तो आपका ऐप ]] को जारी रखने के माध्यम से कॉल प्राप्त करता है। अपने या में निम्नलिखित प्रतिनिधि विधि लागू करें:
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+) में, विधि ] का उपयोग करें।
NSUserActivity के साथ गहरी लिंकिंग
कोर स्पॉटलाइट भी तंत्र के साथ काम करता है। यदि आप पहले से ही [[FLT: 39]] के माध्यम से गतिविधियों को अनुक्रमित करते हैं, तो आप [[FLT: 40]]] ध्वज जोड़ सकते हैं। हालांकि, शीर्षकों और विवरणों पर ठीक-ग्रेन नियंत्रण के लिए, सीधे [[FLT: 41]]] का उपयोग करें।
प्रभावी अनुक्रमण के लिए सर्वश्रेष्ठ अभ्यास
इन दिशानिर्देशों के बाद यह सुनिश्चित करता है कि आपकी अनुक्रमित सामग्री प्रासंगिक और प्रदर्शनकारी बनी हुई है:
1. इंडेक्स केवल सार्थक सामग्री
डेटा के हर छोटे टुकड़े को अनुक्रमित न करें। उन वस्तुओं पर ध्यान केंद्रित करें जिनकी खोज की संभावना है: हाल के दस्तावेज़, उच्च मूल्य वाले पृष्ठ, या बुकमार्क की गई सामग्री।
2. उचित समाप्ति तिथियां सेट करें
डिफ़ॉल्ट रूप से, आइटम एक महीने के बाद समाप्त हो जाते हैं। स्थैतिक सामग्री के लिए, सेट । समय-संवेदनशील डेटा (जैसे, घटना अनुस्मारक) के लिए, यथार्थवादी तारीख का उपयोग करें।
3. डोमेन पहचानकर्ता वाइजली का उपयोग करें
डोमेन पहचानकर्ता आपको एक ही बार में किसी समूह से सभी वस्तुओं को हटाने की अनुमति देते हैं। उदाहरण के लिए, यदि कोई उपयोगकर्ता किसी फ़ोल्डर को हटा देता है, तो ] को कॉल करें।
4. सार्थक कीवर्ड प्रदान करें
समानार्थी शब्द, सामान्य गलतियाँ और वैकल्पिक नाम शामिल हैं। ओवरस्टफिंग से बचें; 5-10 अच्छी तरह से चुना गया कीवर्ड पर्याप्त हैं।
5. इंडेक्सिंग डुप्लिकेट सामग्री से बचें
यदि आप डुप्लिकेट आइटम (जैसे, विभिन्न डोमेन में एक ही शीर्षक) हैं, तो उपयोगकर्ता भ्रमित परिणाम देखते हैं। एप्लिकेशन स्तर पर Deduplicate।
6. बल्क अपडेट के लिए बैच ऑपरेशन
कई वस्तुओं को सिंक करते समय (जैसे, क्लाउड रिस्टोर के बाद) उन्हें मुख्य धागे को अवरुद्ध करने से बचने के लिए 50-100 की सरणी में बैच करें। एक सारणी के साथ का उपयोग करें, एकाधिक एकल कॉल नहीं।
प्रदर्शन और बैटरी विचार
कोर स्पॉटलाइट कम प्राथमिकता वाली पृष्ठभूमि प्रक्रिया को चलाता है। लेकिन खराब कार्यान्वयन बैटरी या डिग्रेड सिस्टम प्रदर्शन को निकाल सकता है:
- ]लिमिट रिटेक्स्टिंग फ़्रीक्वेंसी - केवल तभी रिटेक्स्ट करें जब डेटा वास्तव में बदल जाता है, हर एप्लिकेशन लॉन्च पर नहीं।
- ]Throttle बड़े परिचालन - परमाणु अद्यतन के लिए और ] (]]] पर उपलब्ध) ]]]]]]]]]]]] ]]]] ]]]]]]]]]]]]][[FLT:]]]]]]]]]]]]][[FLT:>
- ]Avoid भारी छवि - ] छोटे होना चाहिए (जैसे, 64 × 64 अंक, JPEG संकुचित)। बड़ी छवियाँ स्मृति दबाव बढ़ाती हैं।
- ]]]]] लगभग सभी एप्लिकेशन के लिए पर्याप्त है। कस्टम इंडेक्स बनाना शायद ही कभी आवश्यक है।
Apple's Core Spotlight प्रलेखन जोर देता है कि अनुक्रमण "फायर एंड भूल" के रूप में इलाज किया जाना चाहिए - मुख्य धागे पर पूरा होने वाली कॉलबैक के लिए तुल्यकालिक रूप से इंतजार नहीं करते हैं।
कोर स्पॉटलाइट एकीकरण का परीक्षण
डिबगिंग स्पॉटलाइट परिणाम मुश्किल हो सकता है क्योंकि वे हमेशा तुरंत दिखाई नहीं देते हैं। इस परीक्षण रणनीति का पालन करें:
- Simulator testing – iOS सिम्युलेटर का प्रयोग करें (iOS 15 या बाद में). अनुक्रमण के बाद, कुछ सेकंड का इंतजार करें, फिर खोज के लिए होम स्क्रीन को नीचे खींचें. पता रखें कि परिणाम सिम्युलेटर में लंबे समय तक ले सकते हैं।
- डिवाइस परीक्षण - हमेशा एक भौतिक उपकरण पर परीक्षण करें। स्पॉटलाइट इंडेक्सिंग वास्तविक हार्डवेयर पर अधिक आक्रामक व्यवहार करता है।
- ]]:]: सेटिंग ऐप का उपयोग करें: सामान्य → स्पॉटलाइट सर्च → अपने ऐप को बंद और चालू करें। यह सूचकांक को साफ़ करता है और एक ताजा शुरुआत को मजबूर करता है।
- ]Verify deletion[ – एक आइटम को हटाने के बाद, पुराने परिणाम को अब प्रकट नहीं होता है सुनिश्चित करें। कभी-कभी सिस्टम कैश परिणाम; इसे 30 सेकंड तक दें।
- ]डिबग कंसोल - सक्षम ]] Xcode के योजना तर्कों में पारित करके लॉगिंग करें।
एक उपयोगी संसाधन है WWDC 2015 "Introducing Core Spotlight" , जो आज भी लागू नींव की अवधारणाओं को कवर किया गया है।
निष्कर्ष
कोर स्पॉटलाइट एपीआई एक मजबूत, कम्यूटिलाइज्ड उपकरण है जो तब बदल सकता है कि उपयोगकर्ता आपके ऐप के साथ कैसे बातचीत करते हैं। सिस्टम के खोज सूचकांक में प्रासंगिक, अद्यतन करने के लिए सामग्री जोड़कर, आप खोज से सामग्री तक घर्षण-रहित पथ प्रदान करते हैं - सगाई और प्रतिधारण को बढ़ाते हैं। शुरू करें: पहले अपनी सबसे महत्वपूर्ण सामग्री को अनुक्रमित करें, पूरी तरह से परीक्षण करें और फिर माध्यमिक वस्तुओं को कवर करने के लिए विस्तार करें। अपने सूचकांक को साफ रखने के लिए याद रखें, अद्वितीय पहचानकर्ता का उपयोग करें, और उपयोगकर्ता गतिविधि कॉलबैक को सुंदर ढंग से संभाल लें। इस लेख में उल्लिखित चरणों के साथ, आप एक प्रथम श्रेणी खोज अनुभव देने के लिए तैयार हैं जो आईओएस के लिए मूल महसूस करता है।
आगे पढ़ने के लिए, आधिकारिक ]कोर्ट स्पॉटलाइट फ्रेमवर्क संदर्भ और App खोज प्रोग्रामिंग गाइड [[FLT: 3]]]]]]]]]