Очевидно, что информация, содержащаяся в намерении, которое было пожертвовано, недостаточна для того, чтобы com.apple.notificationcenterui смог найти правильное приложение для ответа на намерение, которое я нахожу сбивающим с толку.Чтобы система успешно нашла приложение, файл определения намерений должен содержаться в основном комплекте приложения.Если вы не используете Cocoapods, просто установите флажок, чтобы включить файл intentdefinition в комплект приложения, как рекомендует Apple в своем Знакомстве с Siri Shortcuts WWDC video .
При использовании Cocoapodsэто проблематично, поскольку каркас и файл intentdefinition находятся в отдельном проекте в рабочей области, поэтому нельзя просто установить флажок, чтобы включить файл в комплект приложения.
Чтобы решить эту проблемупри использовании Cocoapods я добавил следующее в подфайл моего приложения:
post_install do |installer|
require 'fileutils'
# Copy Siri intentdefinition file from framework to app's resource folder, then use "Copy Bundle Resources" phase to copy it into app's main bundle
FileUtils.cp_r('Pods/FrameworkName/FrameworkName/Base.lproj/Intents.intentdefinition', 'Resources/Intents.intentdefinition', :remove_destination => true)
end
- Выполнить
pod install
- Перейдите к "Фазам сборки" вашей цели приложения / "Копировать ресурсы комплекта"
- Нажмите кнопку «+» в нижней части списка
- Нажмите «Добавить другое ...» в нижней части подсказки
- Перейдите к «Ресурсам» вашего приложения"folder
- Выберите файл Intent.intentdefinition, который уже должен находиться в папке, начиная с шага # 1
Теперь, каждый раз, когда вы pod install
или pod update
, он будетавтоматически ставитсяпоследнее определение намерения, где компилятор может включить его в комплект приложения, и Сири рада.