[ios] CoreSpotlight와 사용자 검색 상황에 따른 결과 제시 방법

iOS 앱의 검색 기능을 향상시키고 사용자 경험을 향상시키기 위해 CoreSpotlight 프레임워크를 활용할 수 있습니다. 이 기술을 사용하면 iOS 장치의 시스템 검색에 컨텐츠를 도입할 수 있어 사용자가 앱 내에서 빠르고 쉽게 검색할 수 있습니다.

CoreSpotlight의 기능

CoreSpotlight는 iOS 9에서 소개된 프레임워크입니다. 이를 통해 앱 내의 콘텐츠를 시스템 검색에 추가하여 사용자가 앱을 사용하지 않을 때에도 검색 결과에 표시될 수 있습니다. 주요 기능은 아래와 같습니다:

CoreSpotlight를 활용한 검색 결과 제시 방법

  1. NSUserActivity 사용: CoreSpotlight를 사용하여 앱 내 콘텐츠와 사용자 활동에 대한 검색 가능한 활동을 정의합니다. NSUserActivity를 이용하여 앱의 활동을 색인화하고, 해당 활동이 검색 결과에 표시되도록 할 수 있습니다.

    let userActivity = NSUserActivity(activityType: "com.example.app.view")
    userActivity.title = "Example Content"
    userActivity.userInfo = ["id": "123"]
    userActivity.keywords = ["example", "content"]
    userActivity.becomeCurrent()
    
  2. CSSearchableItemAttributeSet 사용: 사용자가 검색 결과를 터치했을 때 표시될 콘텐츠에 대한 정보를 제공합니다. CSSearchableItemAttributeSet을 사용하여 콘텐츠의 메타데이터를 정의하고 사진, 비디오, 문서 등과 같은 다양한 파일 형식을 처리할 수 있습니다.

    let attributeSet = CSSearchableItemAttributeSet(itemContentType: kUTTypeImage as String)
    attributeSet.title = "Example Content"
    attributeSet.contentDescription = "This is an example content."
    attributeSet.keywords = ["example", "content"]
       
    let item = CSSearchableItem(uniqueIdentifier: "123", domainIdentifier: "com.example.app", attributeSet: attributeSet)
    
  3. 콘텐츠를 색인화: 사용자의 검색 쿼리에 응답할 수 있는 콘텐츠를 색인화하기 위해 CSSearchableIndex를 사용합니다. CSSearchableIndex는 앱 내의 콘텐츠를 시스템 검색에 추가하고 업데이트하는 데 사용됩니다.

    CSSearchableIndex.default().indexSearchableItems([item]) { error in
        if let error = error {
            print("Error indexing items: \(error.localizedDescription)")
        }
    }
    

마치며

CoreSpotlight를 활용하면 앱 사용자가 빠르게 검색할 수 있도록 도와주는 강력한 기능을 구현할 수 있습니다. 앱의 컨텐츠가 iOS 장치의 시스템 검색에 적절히 표시되도록 하는 것은 사용자 경험을 향상시키고 앱의 가시성을 향상시킬 수 있는 중요한 요소입니다.

참고 자료: Apple Developer Documentation - CoreSpotlight


본 문서는 iOS 개발자를 대상으로 작성되었습니다.