Siri Support: What are supported intent parameters for INPlayMediaIntent?
I created an iOS App Extension and defined a single entry INPlayMediaIntent in the extension's plist IntentsSupported array. Everything was fine. But since a few days (WWDC 2019) i have trouble submitting the app to TestFlight/App Store Connect.
I followed Apple's instructions and fixed these errors:
- ITMS-90626: Invalid Siri Support - No example phrase was provided for INPlayMediaIntent in the … language. Please refer to "https://developer.apple.com/documentation/sirikit/registering_custom_vocabulary_with_sirikit/global_vocabulary_reference/intent_phrases"
- ITMS-90626: Invalid Siri Support - No intent parameters specified for bundle … language … vocabulary policy #1
Now I'm trying to provide an intent parameter in the AppIntentVocabulary.plist here:
<dict>
<key>ParameterVocabularies</key>
<array>
<dict>
<key>ParameterNames</key>
<array>
<string>INPlayMediaIntent.mediaItems</string>
</array>
I tried it with various strings and all were wrong according to these App Store emails:
ITMS-90626: Invalid Siri Support - "INPlayMediaIntent.mediaItems" is not a supported intent parameter of the subscribed intents
ITMS-90626: Invalid Siri Support - "INPlayMediaIntent.mediaContainer" is not a supported intent parameter of the subscribed intents
ITMS-90626: Invalid Siri Support - "INPlayMediaIntent.identifier" is not a supported intent parameter of the subscribed intents
What would be a valid parameter name for an INPlayMediaIntent?
It could be so easy because Apple has an example project for INPlayMediaIntent here which i used to learn for my project:
https://developer.apple.com/documentation/sirikit/media/playing_media_through_siri_shortcuts
But: This project seems not to be up to date since it is missing the AppIntentVocabulary.plist which seems to be required recently.
Solution 1:
I want to give an answer to the actual question since the documentation is quite misleading in that regard. If it were correct then only "key path[s] for a property name from an intent class" would be allowed which doesn't make any sense for INPlayMediaIntent
s. To find the correct answer I watched Design high quality Siri media interactions and at 12:20 we can see a slide with a mapping from user vocabulary symbols (strongly typed) to the Strings to use in the AppIntentVocabulary.plist.
The general idea to check whether a key is supported is to go to INVocabularyStringType and check for the ones starting with the corresponding Siri domain (in this case media<SomeThing>
) and then use INPlayMediaIntent.someThing
for the ParameterNames
array in the plist.
In the Managing Audio with SiriKit sample code we can see an example using INPlayMediaIntent.playlistTitle
.