尝试提交具有Siri扩展名的应用程序时,App Store中出现错误“无效的意图词汇”

时间:2018-10-29 17:56:47

标签: ios swift xcode app-store siri

我的应用程序使用具有 custom Siri意图的Siri扩展,这是Xcode 10 / iOS 12的新功能。我在.intentdefinition文件(包括)中设计了自定义Siri意图。适用于应用程序目标和扩展程序目标。

我的自定义(不是系统)Siri意图在“ Do”类别中声明。

enter image description here

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种语言进行了本地化,则该项目未使用基本本地化。

2 个答案:

答案 0 :(得分:2)

当不使用基本本地化时,我遇到了类似的问题。如Apple Docs所述:

  

将AppIntentVocabulary.plist文件放置在特定语言中   与您的基础相对应的iOS应用程序的(.lproj)目录   开发语言。

不使用基本本地化会引起这类问题,尤其是在键名方面,因为它需要一个中性名称(也使用相同的英语措词)来链接所有本地化的键。

答案 1 :(得分:1)

目前,您只能在几种特定类型的意图上定义自定义词汇表:有关列表,请参见“注册用户特定词汇表”下的here,但它涉及乘车共享,备忘,锻炼等换句话说,不是您的自定义意图(您可能想公开iOS 12的Siri快捷方式-尚不可用...)。

docs表示您需要在plist中将其中一种意图指定为Intent name。同样,参数名称仅是那些允许的意图的特定参数。因此,我猜测这就是为什么您在上传到App Store时出错—它正在检查Siri是否支持“ MyIntentName1”的自定义词汇。不知道为什么它在您本地运行,或者为什么这不是Xcode内置的检查。 ‍♀️