[ios] CoreSpotlight 사용 예시

iOS 개발에서 CoreSpotlight는 앱 내 컨텐츠를 iOS의 검색 및 Spotlight에 통합할 수 있게 해주는 프레임워크입니다. 사용자가 앱 외부에서 해당 컨텐츠를 찾을 때 흔히 사용됩니다.

이 기술을 통해 사용자가 앱 내에서만 아니라 iOS 전반에 걸쳐 중요한 내용을 쉽게 찾을 수 있으며, 앱의 사용자 경험을 향상시킬 수 있습니다.

CoreSpotlight 적용 단계

  1. iOS 앱에 CoreSpotlight 프레임워크 추가하기: Xcode 프로젝트에 import CoreSpotlight를 추가하거나, 프로젝트 설정에서 CoreSpotlight 프레임워크를 직접 추가합니다.

  2. Searchable attribute 정의하기: CoreSpotlight로 색인화할 항목의 searchable attribute를 정의해야 합니다. 예를 들어, 제목, 설명, 키워드 등이 될 수 있습니다.

  3. NSUserActivity 생성하기: 앱이 실행될 때 또는 특정 이벤트가 발생했을 때, 해당 콘텐츠에 대한 NSUserActivity를 생성합니다. 이 물체를 활용하여 컨텐츠를 색인화하고 시스템 검색에 표시합니다.

  4. CoreSpotlight에 컨텐츠 추가하기: 생성한 NSUserActivity를 사용하여 CoreSpotlight에 컨텐츠를 추가하고 색인화합니다.

코드 예시

다음은 CoreSpotlight를 통해 컨텐츠를 추가하는 간단한 코드 예시입니다. Swift 언어를 사용했습니다.

import CoreSpotlight
import MobileCoreServices

let item = CSSearchableItem(uniqueIdentifier: "article123", domainIdentifier: "articles", attributeSet: attributeSet)
item.title = "Example Article"
item.contentDescription = "This is an example of integrating CoreSpotlight in iOS."

let imageData = UIImage(named: "articleImage").pngData()
let thumbnail = CSThumbnailImage(data: imageData, uniqueIdentifier: "thumbnail")
item.thumbnailData = thumbnail

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

결론

위의 단계를 따라가면 iOS 앱에서 CoreSpotlight를 통합할 수 있으며, 사용자는 iOS 전체에서 앱의 중요한 컨텐츠를 쉽게 찾을 수 있게 됩니다.

참고 자료

Apple 개발자 문서: CoreSpotlight

iOS 개발자를 위한 CoreSpotlight 통합 가이드: https://developer.apple.com/library/archive/featuredarticles/CoreSpotlightInDepth/CoreSpotlightInDepth.pdf