[ios] CoreSpotlight를 활용한 앱 내부 컨텐츠 검색

iOS 앱을 개발하다보면 사용자가 앱 내부의 컨텐츠를 검색할 수 있도록 지원해야 하는 경우가 많이 있습니다. CoreSpotlight 프레임워크는 iOS 앱 내부에 있는 컨텐츠를 운영체제의 검색 시스템에서 관리할 수 있도록 지원해줍니다. 이를 활용하면 사용자가 iOS의 Spotlight 검색을 통해 앱 내부의 컨텐츠를 쉽게 찾을 수 있습니다.

CoreSpotlight란?

CoreSpotlight는 iOS 9부터 도입된 프레임워크로, 사용자가 기기 상단의 검색창을 통해 앱 내부의 컨텐츠를 검색할 수 있도록 해줍니다. 앱에서 CoreSpotlight 프레임워크를 활용하면 사용자가 앱 내부의 특정 데이터나 문서를 쉽게 찾을 수 있습니다. 또한, 앱에서 CoreSpotlight를 활용하면 사용자가 앱의 특정 기능이나 기사, 뉴스 등의 내용을 검색할 수 있게 해줄 수 있습니다.

CoreSpotlight를 활용한 앱 내부 컨텐츠 검색 구현 방법

CoreSpotlight를 활용한 앱 내부의 컨텐츠 검색을 구현하는 방법은 다음과 같습니다.

  1. CSSearchableItemAttributeSet 구성 CoreSpotlight로 검색될 아이템에 대한 속성을 나타내는 CSSearchableItemAttributeSet을 구성합니다. 이 속성에는 아이템의 제목, 설명, 이미지 등을 설정할 수 있습니다.

    let attributeSet = CSSearchableItemAttributeSet(itemContentType: kUTTypeImage as String)
    attributeSet.title = "Nature"
    attributeSet.contentDescription = "Beautiful nature scene"
    
  2. 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")
        }
    }
    
  3. 검색결과 핸들링 사용자가 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