iOS 앱을 개발하다보면 사용자가 앱 내부의 컨텐츠를 검색할 수 있도록 지원해야 하는 경우가 많이 있습니다. CoreSpotlight 프레임워크는 iOS 앱 내부에 있는 컨텐츠를 운영체제의 검색 시스템에서 관리할 수 있도록 지원해줍니다. 이를 활용하면 사용자가 iOS의 Spotlight 검색을 통해 앱 내부의 컨텐츠를 쉽게 찾을 수 있습니다.
CoreSpotlight란?
CoreSpotlight는 iOS 9부터 도입된 프레임워크로, 사용자가 기기 상단의 검색창을 통해 앱 내부의 컨텐츠를 검색할 수 있도록 해줍니다. 앱에서 CoreSpotlight 프레임워크를 활용하면 사용자가 앱 내부의 특정 데이터나 문서를 쉽게 찾을 수 있습니다. 또한, 앱에서 CoreSpotlight를 활용하면 사용자가 앱의 특정 기능이나 기사, 뉴스 등의 내용을 검색할 수 있게 해줄 수 있습니다.
CoreSpotlight를 활용한 앱 내부 컨텐츠 검색 구현 방법
CoreSpotlight를 활용한 앱 내부의 컨텐츠 검색을 구현하는 방법은 다음과 같습니다.
-
CSSearchableItemAttributeSet 구성 CoreSpotlight로 검색될 아이템에 대한 속성을 나타내는 CSSearchableItemAttributeSet을 구성합니다. 이 속성에는 아이템의 제목, 설명, 이미지 등을 설정할 수 있습니다.
let attributeSet = CSSearchableItemAttributeSet(itemContentType: kUTTypeImage as String) attributeSet.title = "Nature" attributeSet.contentDescription = "Beautiful nature scene"
-
CSSearchableItem 생성 앞서 설정한 CSSearchableItemAttributeSet을 이용하여 CSSearchableItem을 생성합니다.
let item = CSSearchableItem(uniqueIdentifier: "natureImage", domainIdentifier: "nature", attributeSet: attributeSet) CSSearchableIndex.default().indexSearchableItems([item]) { error in if let error = error { print("Indexing error: \(error.localizedDescription)") } else { print("Content indexed successfully") } }
-
검색결과 핸들링 사용자가 iOS의 Spotlight에서 앱 내부의 컨텐츠를 검색하면,
NSUserActivity
를 이용하여 해당 아이템으로 연결되는 화면을 보여줄 수 있습니다.func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool { if userActivity.activityType == CSSearchableItemActionType { if let uniqueIdentifier = userActivity.userInfo?[CSSearchableItemActivityIdentifier] as? String { // 해당 검색 결과 화면으로 이동 } } return true }
마치며
CoreSpotlight를 활용하면 iOS 앱에서 손쉽게 앱 내부의 컨텐츠를 검색 가능하게 할 수 있습니다. 이를 통해 사용자는 iOS의 Spotlight에서 앱 내부의 특정 기능이나 컨텐츠를 쉽게 찾을 수 있게 됩니다. CoreSpotlight의 강력한 검색 기능을 활용하여 사용자 경험을 향상시키는데 도움이 될 것입니다.
관련 자료: CoreSpotlight Framework - Apple Developer Documentation