SiriKit INSearchForAccountsIntent not using CFBundleSpokenName for app name pronunciation - ios

I have a SiriKit extension in my iOS app that uses the INSearchForAccountsIntent to display account balances via the Siri interface. However, Siri pronounces the app name incorrectly and when given the correct pronunciation via setting the CFBundleSpokenName in the property list, Siri still uses the CFBundleDisplayName instead. I've seen this pointed out as a bug on Apple's side in a forum, but that was reported over 2 years ago and I'm wondering if anyone else has run into this and found a workaround?

Related

Siri reading CFBundleName instead of CFBundleDisplayName when using INSendPaymentIntent

We are facing some weird case when sending money via Siri, as it doesn't spell the app name defined in CFBundleDisplayName, so it does the one defined in CFBundleName on iOS > 14.0
First let me introduce the scenario to reproduce this.
Have 2+ Apps installed that offers the Send Money functionality via Siri.
Enable Siri via "Hey Siri" activation and ask to "Send Money"
When Siri asks you what app do you want to use and spells their name, is using the one defined in CFBundleName, but the name displayed in the screen is the one defined in CFBundleDisplayName
We tried the same scenario on iOS13 and iOS12 and both spells the correct CFBundleDisplayName.
We didn't find any related change to this on iOS14 or Xcode12 changelogs, so not sure if this is a bug or what.
Changing the CFBundleName (which points to $(PRODUCT_NAME) right now) solves the issue, but that's a change that we don't want to do, since could add us some extra problems we don't expect.
Does anyone experienced this issue, and is there another way to fix it that is not changing the CFBundleName?
Thanks

SiriKit iOS13 - Siri Dialog not coming

I am integrating SiriKit into my iOS 13 app.
For that I am using Apple's Sample app - Soup Chef for understanding it.
In my Custom Intent, I have selected Ask Each Time in Shortcuts App for quantity value.
But, When I run the shortcut from Hey, Siri!, it redirect me to Shortcuts App, instead of Siri asking me about quantity.
I have Siri Dialog enabled already.
How can I force Siri to ask me the question, instead of getting redirected to Shortcuts App?
This seems to be an issue in iOS13.0. Try running this on a device running iOS13.1, and it should work.
SiriKit stopped using Siri Dialog prompts (iOS13.1)
https://forums.developer.apple.com/thread/122235
Apple is in the process of integrating the new version of Siri. So it deactivates some features.

Can I force Siri to pronounce my app name differently? [duplicate]

This question already has answers here:
iOS Accessibility: Custom voice over text for bundle display name
(2 answers)
Closed 3 years ago.
I have a SiriKit extension for my iOS app and I want it to pronounce the app name differently. For the sake of this question let's say the app's name is 'POP'. While Siri pronounces it as the word 'pop', I want it to pronounce it as 'Pee Oh Pee'. Does anyone know if this is possible?
I have tried using the INAlternativeAppNames item in the plist but this seems to only affect what Siri hears and interprets as my app name.
The key you want is CFBundleSpokenName.
CFBundleSpokenName
CFBundleSpokenName (String - iOS, macOS) contains a suitable replacement for the app name when performing text-to-speech operations. Include this key in your app bundle when the spelling of your app might be mispronounced by the speech system. For example, if the name of your app is “MyApp123”, you might set the value of this key to “My app one two three”.
This key is supported in iOS 8 and later and in macOS 10.10 and later.

Location Permission Popup does not use CFBundleSpokenName

When asking the user for access to his/her location using the CLLocationManager subscribeToAuthorizationStatus method, a system alert dialog is shown with the title "Allow <'appname'> to access your location?"
When using the accessibility voiceover for such a system alertview, the appname that is pronounced seems to be the CFBundleDisplayName and not the CFBundleSpokenName.
Is there any way to get the voiceover to pronounce the appname with the CFBundleSpokenName text?
Is there any way to get the voiceover to pronounce the appname with the CFBundleSpokenName text?
That's definitely what the CFBundleSpokenName is made for: if there's a native component that doesn't abide by this rule, I strongly recommend to open a radar in order to bring a solution as soon as possible.
About this key, the Apple documentation states:
CFBundleSpokenName (String - iOS, macOS) contains a suitable replacement for the app name when performing text-to-speech operations. Include this key in your app bundle when the spelling of your app might be mispronounced by the speech system. For example, if the name of your app is “MyApp123”, you might set the value of this key to “My app one two three”.
If your appname isn't spelled out as you wish with VoiceOver, the CFBundleSpokenName should do the job wherever you are on your device: if your problem still exists in iOS 13, that's definitely a bug that should be reported.
⚠️ ⬛️◼️🔳▪️ EDIT ▪️🔳◼️⬛️ ⚠️ (2020/04/03)
I wrote a Developer Technical Support Incident (no 732724589) for this question and the Apple's answer admits that's a problem they can't provide a solution.
I submitted a bug report entitled VoiceOver: the location Permission Popup does not use CFBundleSpokenName with the reference FB7650152 in order to have a solution as soon as possible.
Now, you know why the Location Permission Popup does not use CFBundleSpokenName. 😥

Are voice shortcuts for custom SiriKit Intents supported on watchOS?

I’m trying to get a voice shortcut for a custom Siri Intent working as part of an Apple Watch app, but I’m not sure whether that’s possible. Has anyone had success with this or know if it’s supported?
There isn't much code to share in this case, since most of the code is auto-generated by Xcode, but here’s a quick overview of how I have everything set up.
I created a custom Intent with a .intentdefiniton file and separate Intents Extension targets for my iOS app and watchOS app to handle the Intent.
I set up and donate the shortcuts at the appropriate time. I included an INUIAddVoiceShortcutButton in my app so a user can easily add or edit a phrase for the shortcut.
Everything works fine on an iPhone: the shortcut shows up at relevant times throughout iOS, and the Intents Extension in my iOS app handles the shortcut when I say the invocation phrase to Siri.
Since 20% of my app’s users use the Apple Watch app, I want to provide a congruent experience on watchOS. The donated shortcut shows up on the Siri watch face, as expected. I trigger the shortcut from the Siri watch face, and is handled by the Intents Extension that's part of my watchOS app.
When I say the intent’s invocation phrase to my Apple Watch (Series 3 GPS-only), however, it doesn’t work. Siri says:
Checking with the app...
Then a few seconds later:
I do not recognize that command.
I’ve tried this with a separate Intents Extension for my watchOS app, and without. I get the same results in both situations. It works on the simulator, but not on a real device.
I’ve also made sure I have my Watch Extension and Watch App selected under Target Membership for the .intentdefinition file.
I’ve also tried going into Settings > Developer and enabling Display Recent Shortcuts then tapping Force Sync Shortcuts to Watch, but that doesn’t change the behavior.
Are voice shortcuts for these custom intents even supported on Apple Watch? I haven’t been able to tell one way or another with Apple’s documentation. The SoupChef sample project is set up with an Intents Extension for the watchOS app, which makes me think it should be supported. And, since it works on the simulator, that makes me think it should be supported.
However, this page doesn’t list custom intents as being supported on watchOS, so that makes me think they may not be supported: https://developer.apple.com/design/human-interface-guidelines/watchos/user-interaction/siri/
If anyone can help me figure out whether this is supported I’d really appreciate it. I’m not sure if I’m doing something wrong or if this just isn’t supported.
The problem was on my Apple Watch.
I was able to get it working by erasing the watch (Settings > General > Reset > Erase All Content and Settings) then restoring it from a backup.

Resources