Hey Siri, How Can I Improve the Recognition of My App's Name?
Q: How can I improve Siri's recognition of my app's name?
A: Siri uses multiple sources of information within an app to determine if a user's request to Siri refers to your app. This document provides guidance to developers to help Siri recognize when a user request refers to your app.
Provide a CFBundleDisplayName
All apps, even those not specifically using SiriKit, should provide a CFBundleDisplayName key in their Info.plist
. The string value for this key is displayed to the user throughout the system, such as below the app icon on the home screen. The presence of this key will help Siri to identify your app, even if your app does not use SiriKit.
Provide a CFBundleSpokenName
All apps, even those not specifically using SiriKit, can provide a CFBundleSpokenName key in their Info.plist
. The string value of this key represents the expected pronunciation of your app's name, such as "My app one two three" for an app with a bundle display name "MyApp123." This key is also used by VoiceOver to speak the app name.
Provide INAlternativeAppNames
Apps adopting SiriKit and linking to the iOS 11 SDK can provide a small number of alternate app names that users may use when interacting with Siri by specifying the Info.plist
for the app. As an example, if a banking app is named "Unicorn Bank" but users frequently refer to the app as "Unicorn Pay" or "Unicorn", it is helpful to specify both of these alternate app names so users can use them in their request to Siri.
Additionally, INAlternativeAppNames
contains a pronunciation hint to help Siri understand how users pronounce your app's name.
Listing 1 Sample of INAlternativeAppNames
<key>INAlternativeAppNames</key> |
<array> |
<dict> |
<key>INAlternativeAppName</key> |
<string>Unicorn Pay</string> |
<key>INAlternativeAppNamePronunciationHint</key> |
<string>you nee corn pay</string> |
</dict> |
<dict> |
<key>INAlternativeAppName</key> |
<string>Unicorn</string> |
<key>INAlternativeAppNamePronunciationHint</key> |
<string>you nee corn</string> |
</dict> |
</array> |
Provide Example Phrases
All apps adopting SiriKit, regardless of the specific SiriKit domain, should provide Siri with example phrases that demonstrate the different ways your users will use your app through Siri. This is done using the IntentPhrases
key of the global vocabulary file, named AppIntentVocabulary.plist
.
Example phrases for using an app named Cuddly Creatures that shows pet photos and implements the SiriKit photo domain might include the following:
Look for silly cat photos with Cuddly Creatures.
Can you show my album of dog photos in Cuddly Creatures?
Start a photo slide show in Cuddly Creatures.
The AppIntentVocabulary.plist
file for Cuddly Creatures with these example phrases is shown in Listing 2.
Listing 2 Sample AppIntentVocabulary.plist
<?xml version="1.0" encoding="UTF-8"?> |
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> |
<plist version="1.0"> |
<dict> |
<key>IntentPhrases</key> |
<array> |
<dict> |
<key>IntentExamples</key> |
<array> |
<string>Look for silly cat photos with Cuddly Creatures.</string> |
<string>Can you show my album of dog photos in Cuddly Creatures?</string> |
</array> |
<key>IntentName</key> |
<string>INSearchForPhotosIntent</string> |
</dict> |
<dict> |
<key>IntentExamples</key> |
<array> |
<string>Start a photo slide show in Cuddly Creatures.</string> |
</array> |
<key>IntentName</key> |
<string>INStartPhotoPlaybackIntent</string> |
</dict> |
</array> |
</dict> |
</plist> |
Example phrases are needed for every intent declared by the IntentsSupported
key in the Intents extension Info.plist
. Further, a complete AppIntentVocabulary.plist
, with example phrases for each supported intent, needs to be present for every locale the app supports. Submitting an app with a missing example phrase will result in warnings from the App Store, such as the example in Listing 3.
Listing 3 Sample warning from the App Store if an example phrase is missing
Invalid Siri Support - No example phrase was provided for INSearchForPhotosIntent in the "de" language |
See the SiriKit Programming Guide for instructions on creating the global vocabulary file and documentation for the specific keys.
Inspect Your Localizations
It is important to provide Siri with an AppIntentVocabulary.plist
file in every language your app supports. Additionally, if your app's name (including alternative app names) is localized, a localized
As an example, imagine that the app Cuddly Creatures supports English, German, Japanese, and Korean, with the app's name localized in each language. The app uses base localization, with the development language set to English. A complete set of localized files used by Siri for this app is shown in Figure 1.
In Figure 1, none of the localized files are provided for the English locale. Instead, the English files are associated with the Base locale, because the Base locale is the localization used for the app's development language. Providing an additional AppIntentVocabulary.plist
and InfoPlist.strings
specifically in the development language's locale is unnecessary.
Additional Documentation
For additional information on SiriKit, consult the following resources:
Sample Code with sample phrases in
AppIntentVocabulary.plist
: Searching for PhotosSample Code with custom app vocabulary and sample phrases in
AppIntentVocabulary.plist
: IntentHandling: Using the Intents framework to handle custom Siri request
Document Revision History
Date | Notes |
---|---|
2017-10-27 | Added information about CFBundleSpokenName and INAlternativeAppNames |
2017-04-05 | New document that describes how apps can improve Siri's recognition of the app's name |
Copyright © 2017 Apple Inc. All Rights Reserved. Terms of Use | Privacy Policy | Updated: 2017-10-27