Core Spotlight APIsという機能を使ってアプリの検索結果にコンテンツを表示してみようと思います。
まずはCoreSpotlight.frameworkをプロジェクトに追加します。
次はどこか適当なタイミングでCSSearchableIndexへインデックスを追加します。
MobileCoreServices
をimportするのを忘れるとkUTTypeText
が使えないので気をつけて下さい。
import UIKit import CoreSpotlight import MobileCoreServices class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() if #available(iOS 9.0, *) { let attributeSet = CSSearchableItemAttributeSet(itemContentType: kUTTypeText as String) attributeSet.title = "タイトル" attributeSet.contentDescription = "説明" attributeSet.thumbnailData = UIImagePNGRepresentation(UIImage(named: "icon")!) let item = CSSearchableItem(uniqueIdentifier: "UniqID", domainIdentifier: nil, attributeSet: attributeSet) CSSearchableIndex.defaultSearchableIndex().indexSearchableItems([item]) { _ in } } } }
検索した時に引っかかるようになりました。
contentDescriptionの値も引っかかります。
検索結果を押下するとapplication:continueUserActivity:restorationHandler
メソッドが呼ばれます。
@UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? func application(application: UIApplication, continueUserActivity userActivity: NSUserActivity, restorationHandler: ([AnyObject]?) -> Void) -> Bool { return true } }