[ios] CoreSpotlight에서 데이터 모델링과 검색 가능한 항목 구축

iOS 앱을 개발할 때, 사용자가 앱 내에서 콘텐츠를 쉽게 찾을 수 있도록 하는 기능이 중요합니다. Apple은 CoreSpotlight 프레임워크를 통해 iOS 앱에 검색 기능을 추가할 수 있도록 지원하고 있습니다. 이전 블로그 게시물에서는 CoreSpotlight 프레임워크를 사용하여 사용자가 앱 내에서 검색 결과를 보여주는 방법을 설명했습니다.

이번에는 CoreSpotlight에서 데이터를 모델링하고, 검색 가능한 항목을 구축하는 방법에 대해 알아보겠습니다.

1. 데이터 모델링

CoreSpotlight를 사용하여 검색 가능한 항목을 만들기 전에, 앱 내에서 어떤 정보를 검색할 것인지를 결정하고, 해당 정보를 어떻게 표현할지를 고려해야 합니다. 예를 들어, 사용자가 앱 내에 저장된 문서, 이미지, 오디오, 비디오 또는 기타 콘텐츠를 검색할 수 있도록 하려면, 해당 콘텐츠의 메타데이터를 식별하고 모델링해야 합니다.

2. 검색 가능한 항목 구축

CoreSpotlight 프레임워크를 사용하여 검색 가능한 항목을 만들려면 다음 단계를 따릅니다.

2.1 NSUserActivity를 사용하여 항목 식별

검색 가능한 항목을 만들기 위해, NSUserActivity 객체를 생성하고, 해당 항목을 식별하는 정보를 설정해야 합니다. 예를 들어, 문서를 검색 가능하게 만들고 싶다면 해당 문서의 정보를 NSUserActivity 객체에 설정합니다.

let userActivity = NSUserActivity(activityType: "com.example.app.document")
userActivity.title = "Example Document"
userActivity.userInfo = ["documentID": "123"]
userActivity.requiredUserInfoKeys = Set(["documentID"])
userActivity.keywords = Set(["document", "example"])
userActivity.eligibleForSearch = true
userActivity.becomeCurrent()

2.2 CSSearchableItem을 생성하여 CoreSpotlight에 추가

NSUserActivity를 사용하여 항목을 식별한 후, 해당 항목을 CSSearchableItem으로 변환하여 CoreSpotlight에 추가해야 합니다.

let attributeSet = CSSearchableItemAttributeSet(itemContentType: kUTTypeImage as String)
attributeSet.title = "Example Document"
attributeSet.contentDescription = "This is an example document"
attributeSet.keywords = ["document", "example"]

let searchableItem = CSSearchableItem(uniqueIdentifier: "123", domainIdentifier: "com.example.app", attributeSet: attributeSet)
CSSearchableIndex.default().indexSearchableItems([searchableItem]) { error in
    if let error = error {
        print("Error indexing item: \(error.localizedDescription)")
    } else {
        print("Item indexed successfully")
    }
}

마무리

CoreSpotlight를 사용하여 데이터를 모델링하고 검색 가능한 항목을 구축하는 방법에 대해 알아보았습니다. 이를 통해 사용자가 앱 내에서 콘텐츠를 쉽게 찾을 수 있도록 도울 수 있습니다. CoreSpotlight 프레임워크의 기능을 최대한 활용하여 앱의 검색 기능을 개선해보세요.

더 많은 정보를 원하신다면 Apple 개발자 문서를 참고하시기 바랍니다.

CoreSpotlight Framework - Apple Developer Documentation

NSUserActivity - Apple Developer Documentation

CSSearchableItem - Apple Developer Documentation

Apple Developer

관련 작성 글

[ios] CoreSpotlight를 사용하여 앱 내 검색 결과 보여주기