Dev:SearchBundles

From The Apple Wiki

Search bundles are bundles to provide search results for Spotlight. There is a hardcoded limit of 11 (for iOS 8 and below, unknown for iOS 9) search bundles (domains), all of which are occupied by built-in ones.

SearchLoader is a developer library for adding more search bundles.

Domains

# Name Bundle ID iOS Version
0 Top Hits (null) iOS 7+
1 Search X iOS 7+
2 Contacts/Address Book com.apple.MobileAddressBook iOS 7+
3 Mail com.apple.mobilemail iOS 7+
4 Applications com.apple.application iOS 7+
5 Notes com.apple.mobilenotes iOS 7+
6 iPod/Music com.apple.Music iOS 7+?
7 Podcasts com.apple.podcasts iOS 9
8 Videos com.apple.videos iOS 9
9 iBooks com.apple.ibooks iOS 9
10 Calendar com.apple.mobilecal iOS 7+?
12 Voice memos com.apple.VoiceMemos iOS 7+?
13 Reminders com.apple.reminders iOS 7+
15 Extended iOS 7+?
16 News, suggest websites, wikipedia, iTunes store, app store com.apple.parsec iOS 9+
18 Safari com.apple.mobilesafari iOS 9+
20 ? com.apple.psuedocontact iOS 9+
21 Nearby iOS 9+
22 Siri Suggestions (null) iOS 9+
23 Third party apps? com.apple.corespotlight iOS 9+
24 Calculations com.apple.calculations iOS 9+
25 Conversions com.apple.conversions iOS 9+
26 Messages com.apple.MobileSMS iOS 9+

Finding a Search Domain

[[%c(SPUISearchModel) sharedInstance] searchDomains] will list all the domains

[[%c(SPDomainManager) defaultManager] getBundleIdForDomainNumber:] will then give you their bundle ids

Categories

In iOS 9, search have a combination of categories, bundle id, domains, and display identifiers. For example, Top hits has a category of com.apple.spotlight.tophits domain of 0 and display identifier of DOMAIN_TOPHIT

Structure of a Search Bundle

Search bundles should have an extension of .searchBundle. The principle class should conform to the SPSearchDatastore protocol.