Ошибка «Invalid Intent Vocabulary» из App Store при попытке отправить приложение с расширением Siri - PullRequest
0 голосов
/ 29 октября 2018

Мое приложение использует расширение Siri с пользовательскими намерениями Siri, что является новой функцией для Xcode 10 / iOS 12. Я создаю свои собственные намерения Siri в файле .intentdefinition (входит в оба приложения и расширение цели).

Мой пользовательский (не системный). Цели 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, я получаю:

[Вывод ошибки транспортера]: ERROR ITMS-90624: «Invalid Intent Запас слов. Файл AppIntentVocabulary.plist в Папка Payload / AppName.app / en.lproj не может содержать имя намерения "MyIntentName1". "

И последующие сообщения об ошибках повторяются для каждой папки .lproj.

Если это поможет, мое приложение локализовано на 14 языков, проект не использует базовую локализацию.

Ответы [ 2 ]

0 голосов
/ 10 ноября 2018

У меня была похожая проблема, когда я не использовал базовую локализацию. Как указано в Apple Docs :

Поместите файл AppIntentVocabulary.plist на язык, соответствующий конкретному языку. (.lproj) каталог вашего iOS-приложения, соответствующий вашей базе язык разработки.

Если не использовать базовую локализацию, это может создать проблемы такого рода, особенно с именами ключей, так как для нейтральных имен (также используется та же английская формулировка) для связи со всеми локализованными ключами.

0 голосов
/ 04 ноября 2018

На данный момент вы можете определить пользовательский словарь только для нескольких определенных типов намерений: см. здесь в разделе «Регистрация пользовательского словаря» для списка, но это такие вещи, как совместная поездка, заметки, тренировки и т. д. Другими словами, не ваши собственные намерения (которые вы можете использовать для ярлыков Siri в iOS 12 - это недоступно ... пока).

И документы говорят, что вам нужно указать одно из этих намерений как Intent name в списке. Аналогично, имена параметров должны быть конкретными параметрами только тех разрешенных намерений. Поэтому я предполагаю, что именно поэтому вы получаете ошибки при загрузке в App Store - он проверяет, поддерживает ли Siri собственный словарь для «MyIntentName1». Не уверен, почему он работает локально для вас, или почему это не проверка, встроенная в XCode. ?♀️

...