Programming/Mac & iOS

[iOS] Core Spotlight 구현 방법 (iOS 9 or later)

MB Brad KWON 2015. 12. 31. 16:01

Core Spotlight framework

    Spotlight는 검색 기반의 아이폰 사용의 중심에 있다. 특히 iOS9 이후로 Siri와 spotlight의 결합으로 개인 비서로서 기능이 강화됬다. iOS9 이후 Core Spotlight라는 API를 제공함으로써 개발자는 앱을 spotlight와 결합하여 Depp Link를 구현하는 등의 앱과 OS의 결속력을 높여 더 높은 차원의 UX를 제공할 수 있게 됬다. 그럼 Core Spotlight를 이용하여 앱 데이터, 서비스를 Indexing하는 방법에 대해 알아보자.



CSSearchableItemAttributeSet

    CSSearchableItemAttributeSet은 search result에 표시하기 위한 메타데이터를 저장하는 객체이다. 각 프로퍼티의 데이터는 spotlight에서 검색 시, 결과 화면에 표시된다. CSSearchableItemAttributeSet은 다중 스레드 환경에 대비 되어 있지 않다. 그리하여 property에 데이터를 setting할 때 단일 스레드를 이용해야한다.



CSSearchableItem

    CSSearchableItem은 기기에서 사용자가 검색을 통해 사용할 수 있는 아이템을 표현하기 위해 사용하는 객체이다. Core Spotlight를 사용하기 위해서 먼저 CSSearchableItemAttributeSet을 생성하여 결과 화면에 표시할 메타데이터를 setting한다. 생성된 CSSearchableItemAttributeSet을 CSSearchableItem을 초기화할 때, 초기화 변수로 사용한다. 이렇게 만들어진 CSSearchableItem 객체를 아래에서 설명할 CSSearchableIndex에 indexing하면 기기에서 spotlight를 통해 서비스를 제공하게 된다.



CSSearchableIndex

    CSSearchableIndex는 기기에 등록된 index를 표현하기 위해 사용하는 객체이다. 'defaultSearchableIndex' 메소드를 통해 객체를 반환 받은 다음, 'indexSearchableItems:completionHandler:' 메소드를 통하여 CSSearchableItem을 index에 등록해주면 된다.




<참조>

Core Spotlight API Documents

How to use Core Spotlight in Swift

How to use Core Spotlight in Objective-C