我的应用程序使用具有 custom Siri意图的Siri扩展,这是Xcode 10 / iOS 12的新功能。我在.intentdefinition
文件(包括)中设计了自定义Siri意图。适用于应用程序目标和扩展程序目标。
我的自定义(不是系统)Siri意图在“ Do”类别中声明。
Siri意图还需要一个AppIntentVocabulary.plist
文件,其中包含示例短语https://developer.apple.com/documentation/sirikit/registering_custom_vocabulary_with_sirikit
我的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>IntentName</key>
<string>MyIntentName1</string>
<key>IntentExamples</key>
<array>
<string>Do stuff with foo</string>
<string>Do stuff with fu</string>
</array>
</dict>
<dict>
<key>IntentName</key>
<string>MyIntentName2</string>
<key>IntentExamples</key>
<array>
<string>Do other stuff</string>
</array>
</dict>
</array>
<key>ParameterVocabularies</key>
<array>
<dict>
<key>ParameterNames</key>
<array>
<string>MyIntentName1.someParam</string>
</array>
<key>ParameterVocabulary</key>
<array>
<dict>
<key>VocabularyItemIdentifier</key>
<string>paramName</string>
<key>VocabularyItemSynonyms</key>
<array>
<dict>
<key>VocabularyItemPhrase</key>
<string>foo</string>
<key>VocabularyItemPronunciation</key>
<string>fu</string>
<key>VocabularyItemExamples</key>
<array>
<string>Do stuff with foo</string>
</array>
</dict>
<dict>
<key>VocabularyItemPhrase</key>
<string>bar</string>
<key>VocabularyItemPronunciation</key>
<string>bur</string>
<key>VocabularyItemExamples</key>
<array>
<string>Do stuff with bar</string>
</array>
</dict>
</array>
</dict>
</array>
</dict>
</array>
</dict>
</plist>
它可以很好地工作并且也可以。但是,当我尝试将其提交到App Store时,我得到了:
[运输器错误输出]:错误ITMS-90624:“无效的意图 词汇。该应用程序中的AppIntentVocabulary.plist文件 Payload / AppName.app / en.lproj文件夹不能包含意图名称 “ MyIntentName1”。”
每个.lproj
文件夹都会重复出现随后的错误消息。
如果有帮助,我的应用程序已针对14种语言进行了本地化,则该项目未使用基本本地化。
答案 0 :(得分:2)
当不使用基本本地化时,我遇到了类似的问题。如Apple Docs所述:
将AppIntentVocabulary.plist文件放置在特定语言中 与您的基础相对应的iOS应用程序的(.lproj)目录 开发语言。
不使用基本本地化会引起这类问题,尤其是在键名方面,因为它需要一个中性名称(也使用相同的英语措词)来链接所有本地化的键。
答案 1 :(得分:1)