Dev:VoiceServicesPlugIns

VoiceServices plug-ins are plugins to the iOS voice dial feature. They provide possible results within plists and receive recognized results.

There is currently no plugin loader available. Developers have to "hard-code" their plugins by writing them in /System/Library/VoiceServices/PlugIns.

Currently, there is little known about the internals of VoiceServices plugins and their state of usability, especially on recent iOS versions.

iOS 6
In iOS 6 VoiceServices plugins can easily be loaded by creating an appropriate folder in /System/Library/VoiceServices/PlugIns. Plugins are slightly extended bundles and always have the suffix .vsplugin.

Info.plist
The bundle contains an Info.plist and its typical elements, like CFBundleIdentifier.

Additional keys are:

which contains a string. Most probably an internal version identifier. The Base plugin currently has 4.0 as value.

which contains an array of dictionaries.

VSRecognitionModels
Every dictionary can contain the following keys:

VSRecognitionModelFileName plist files
These files are stored directly in the base directory of the bundle and are localized with "-lang-code" suffixes. They have the following base structure: This is just the very basic structure, there are other keys, objects and identifiers. Most of them can be obtained from the existing voice plugins, they are quite self-explanatory.

The executable
The executable should implement all of the classes specified in the VSRecognitionResultHandler keys. These classes should conform to the VSRecognitionResultHandler protocol, which can be found in class-dumps of SpringBoard. It is being linked to the VoiceServices private framework.