I implemented two Custom Intents with Sirikit in my iOS app. When I was developing them I had iOS 13.3 installed in my iphone and one of my intents has a Siri Dialog prompt asking for the value of one parameter. All the app is translated to english and spanish and the custom intent worked nicely in both languages.
When I updated my iphone to iOS 13.4.1 my custom intent started to have the following issues (I saw both issues depending on the installation/test/device):
param
?" (more or less)I find this issue very strange and annoying. I tried to recreate the translation files for Intent.intentdefinition
: Intent.strings (Base)
, Intent.strings (English)
, Intent.strings (Spanish)
and I even tried to recreate the whole Custom Intent definition and I'm still having the issue.
I also tried to change the iOS language and Siri language on my phone, restart, reinstall the app, intents, etc...
This is the Info.plist of my Sirikit extension:
<?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>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleDisplayName</key>
<string>InventorySearchIntent</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>
<key>CFBundleShortVersionString</key>
<string>$(MARKETING_VERSION)</string>
<key>CFBundleVersion</key>
<string>$(CURRENT_PROJECT_VERSION)</string>
<key>NSExtension</key>
<dict>
<key>NSExtensionAttributes</key>
<dict>
<key>IntentsRestrictedWhileLocked</key>
<array/>
<key>IntentsRestrictedWhileProtectedDataUnavailable</key>
<array/>
<key>IntentsSupported</key>
<array>
<string>NumTotalItemsIntent</string>
<string>SearchItemIntent</string>
</array>
</dict>
<key>NSExtensionPointIdentifier</key>
<string>com.apple.intents-service</string>
<key>NSExtensionPrincipalClass</key>
<string>$(PRODUCT_MODULE_NAME).IntentHandler</string>
</dict>
</dict>
</plist>
Any solution for this? Is it a bug from iOS 13.4? Siri integration is very important for the app that I'm developing and this is a blocker for me.
Thanks in advance!
In my own experience, this issue is fixed in iOS 13.5 beta 4. I just tested it in an iPhone 6s Plus with Xcode 11.5 beta 2 (11N605f).
However, there are other issues still. For example, in Shortcuts, all operation strings in my test project are shown in English, not the localized language.
Also, INStringResolutionResult.confirmationRequired(with:) doesn't work as expected.
I have a function gets the words user says and looks them up in database then uses INStringResolutionResult.confirmationRequired(with:) to check with the user. SiriKit currently only uses the words the user says, not the result that I check with the user, which leads the final code crashes.
I just got the reply from Apple's bug report team. Here are the conclusions I make for now.