Siri reading CFBundleName instead of CFBundleDisplayName when using INSendPaymentIntent - ios14

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

Related

Intent does not appear in Supported Intents

Link to all the code I'm working with so far: https://github.com/banool/respose.
I want to make an app where it is possible for users to activate some intent it defines as an action in response to some event in the iOS shortcuts app. For example:
If I open app X.
Run intent from my app instead.
I've seen this done before in other apps, so I know it's possible.
I have an intent defined (see attached code as well as image) that seems to be correct as far as I can tell. I don't think I need an intent extension because I don't intend to handle the intent in the background or via Siri.
I notice that when I try to add an intent under My Target -> General -> Supported Intents, the dropdown doesn't show my intent, only the built in system intents.
I'm not sure what I'm doing wrong here. I got to this point just by following the official guide from Apple: https://developer.apple.com/documentation/sirikit/adding_user_interactivity_with_siri_shortcuts_and_the_shortcuts_app.
I don't think the fact that I'm using Flutter should matter so much right now (I figure that's more of a concern for when the app actually opens up from the shortcut), but perhaps I'm wrong.
I have registered the app on App Store connect and I'm using an identifier that has the sirikit capability enabled. I've also added the "Siri" capability in XCode. I've tried this on both a simulator and a real device, the results are the same.
Any help would be much appreciated, thanks!
Had the same issue.
It seems that you can just type the class name without prompt, and it should work just fine. Don't forget to select proper target though

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. 😥

App Store Connect Warns - Invalid Document Configuration

I have submitted a Single View Swift iOS application to App Store Connect. The application is not Document Based.
The application uploads successfully, but I get the following warning in an email from Apple. I can still test the application through Test Flight, but I want to eliminate the warning.
"Invalid Document Configuration - Document Based Apps should support either the Document Browser (UISupportsDocumentBrowser = YES) or implement Open In Place (LSSupportsOpeningDocumentsInPlace = YES/NO)."
I just ran into the same problem; I don't know why, since I barely change anything since the previous version of my app.
Anyway, my app doesn't support the Document Browser, so the first half of the error message doesn't apply. That left me with the second half. I looked up LSSupportsOpeningDocumentsInPlace's documentation and still wasn't clear on how it works, so I decided to try both options. My app supports it's own document type, and when a user opens an appropriate file iOS shows an action sheet with the option "Copy to Leio" (my app). After setting LSSupportsOpeningDocumentsInPlace to YES, iOS wouldn't show that action sheet anymore; it would just open my app and do nothing. So I set it to NO; now the app works as it did before and I'm not getting that error message anymore. If you don't handle any document types I suppose you could set the option either way.
Edit: There's some more information about that option here.
So there you go. If your app were to edit a document, would it edit the original document, or would it make a copy and deal with that? Set the option accordingly. If you really don't do anything like that I'd guess setting the option to NO would be the safest bet, and I think that's how my app behaved when I hadn't set that option at all.
Since your app is not Document based just set UISupportsDocumentBrowser and/or LSSupportsOpeningDocumentsInPlace (reference and documentation) to NO in your plist. This should resolve the warning.
I had the same problem with the warning from App Store Connect. After changes these two keys to NO and resubmitting the warning was gone.
Typical Requirement
If your application is not document based (which would typically be the case if you get this new warning) and if furthermore you are already opening files in your documents directory, then all you need is:
LSSupportsOpeningDocumentsInPlace = YES
This answer does not apply if you are not opening documents in place (i.e. make a copy), or of course, if you so desire to support document browser, as seen in #rivera's comment.
If you are using UIDocumentInteractionController in your app, set
UISupportsDocumentBrowser = YES
in your project's info.plist; otherwise, set
UISupportsDocumentBrowser = NO
It appears that if you have CFBundleDocumentTypes in your apps Info.plist, even if the array is empty, this warning is triggered when you submit your app. If your app doesn't support any document types remove that key and you won't get the warning.
I also faced the same issue recently while uploading the app to TestFlight, The below solution worked for me,
In your app's Info.plist file, the UISupportsDocumentBrowser key is set to YES, declaring document browser support for your app.
For more info, please refer Setting Up a Document Browser App
Here are where you find the settings in Xcode 13:

Change name of an app when purchasing the full version

I have a 2 version app with IAP implemented. My question is: is it any way to change the app name (xxxx lite) to (xxxx) without the lite?
Of course, this should be a code stuff, not changing the name on the info.plist, because this will be resolved only when I purchase the app.
Thanks.
Through code, there is no way to change the name that appears under the icon. Of course if your app name is displayed anywhere within your running app, you can change that name as needed.

Apostrophe in app name

I intend on releasing an app in the Apple store that contains an apostrophe in the title. I notice that XCode already has issues in building the code when the 'Target' name contains an apostrophe. I've managed to get around this problem (for now), by using the following character:
’
as opposed to:
'
This seems to build okay, but I'm a little concerned about what may happen later down the line, such as when I submit the final build to the store etc.
Does anyone happen to know if this little workaround is suitable, or am I just setting myself up for a world of problems?
For example, is using an abstract character like this going to mean no one can search for my app in the store?
The display name of the app as it will appear on the iOS spring board is set in the app's infoPlist and has nothing to do with build settings. The Xcode project, target and all other files can be named whatever you like.
You need to set the CFBundleDisplayName in your app's Info.plist. By default this is set to ${PRODUCT_NAME} which is the Xcode configuration variable of the target's name, but it can be what you like.
Going one step further you should use the InfoPlist.strings file to overload this value for different localisations. Setting the value in this file will make the other value in the Info.plist obsolete. These days Xcode comes with a blank one in new projects but it's easily added if it's not there.
The InfoPlist.strings file would look like this:
"CFBundleDisplayName" = "App's Name";
Note: If you've set up the app's name as above and the spring board isn't displaying the Apostrophe then it's probably taking it out deliberately.
It appears you're talking about the title of your application in The App Store, which is entered in iTunes Connect and has absolutely nothing to do with any code you write.
If you place an apostrophe in your app's name in iTunes connect it may have an effect on the users searching for your app as you suspect.but often apps have extended names that offer more context to the app's name and you should also use the keywords to your advantage.
You should check out the iTunes Connect Developer Guide
Edit your CFBundleDisplayName in info.plist to
<string>App&apos;s Name</string>
Works perfectly. I've used above in production app, with no issues.

Resources