xamarin forms app icon text has no spaces on ios - ios

I have a cross platform Xamarin Forms app which has the same app name in both the android manifest and the ios info.plist.
On android the name appears correctly under the app icon, however on ios there are no spaces between the words, so what would appear as "My Test App" on android appears as "MyTestApp" on ios.
I have seen this before on other apps, where the name has spaces and appears multi-line, so I guess it's figuring out how to get the app name multi-line.
Is there any other place to set this rather than the plist file?
UPDATE:
Just read this post which states multi-line app names are not supported, but it's from 2012, so is this still the case?

To show spaces in your app name, you need to put   where you want the spaces to be. That will then be read as a space character by the compiler/iOS OS.
Note: You need to do this in the source of your info.plist file. It won't work if you use the project settings layout. Look for the CFBundleDisplayName tag.

Related

iOS - App description showing incorrect language in App Store

I localised my app via iTunesConnect but it does not show up in App Store. The primary language of my app is English.
When I go to Japanese App Store my app's description is still showing English while other apps show localised language.
In iTunesConnect, after I added a new version, I select Japanese on the top right, typed in Japanese app description, keywords and screenshots.
I also made sure that my phone language is Japanese.
What am I doing wrong?
This is a tricky one. It is not enough to just add localized description on AppStoreConnect. Apple shows Languages in this section according to the files localized in your app in Xcode.
Facebook example
Easy way to do this is to change "Localization native development region" field in Info.plist file:
Changing development region
IMPORTANT NOTICE: However, this solution is enough only if you don't localize any other files (solution for this is bellow, you must do some extra steps).
You need to open Xcode, select your project in files structure, select Project (not targets) and add the languages you want to be shown there (in your case Japanese). On the following image there are a couple of languages (don't check the "Use base internationalization" checkmark):
Localizations languages
IMPORTANT NOTICE: You must localize at least one file in your target in order to have this information about languages shown on the AppStore (as you are doing this on per target basis, you can have different languages shown for each target, good for white label apps). I usually localize LaunchScreen.storyboard as you usually don't have any text here.
In order to localize storyboard, you need to tap on it and in the right menu tap "Localize..." button:
Localize button
After that, just check the languages you want it to be localized to (in my example German.
Localized storyboard languages list
You may want to check again tomorrow. I found in the past that updates to international app store pages may take up to 24 hour to propagate.

iOS app not using the only localization available

Good morning,
I have an iOS app with English and Hebrew localizations and a device set on English.
I need to build the app with Hebrew only for this version (so the app will launch in Hebrew).
I tried to delete en.lproj and remove the references in Xcode, but the app just uses the base localization in the storyboard and the string I use as a parameter in NSLocalizedString, instead of the Hebrew files.
I've also tried to change the development language to Hebrew: How do I change the Development language in Xcode before internationalizing my app?
but that didn't help.
When setting NSUserDefaults-AppleLanguages key in main() it works but not on the first launch.
I would love to use a different implementation for NSLocalizedString so I could manage the localizations myself, but the problem is that English is written from left to right and Hebrew is from right to left, so updating the strings is not enough.
Do you have any idea how can I force the app to launch for every device in the localization that I choose?
Thanks!
I think that I found what was the problem, I left a single image localized in English.
It seems that when there is anything localized to a language, it adds the language to a list of supported languages. Because the device is in English and the app "supports" it, English will be used.
If anyone knows a way to modify this list of supported languages without deleting files, and making it work from the first launch, and maybe even having a different list for each target, please let me know!

How to localize an app icon?

I am comfortable with localizing strings and images within the app. But I am having a lot of difficulty trying to localize the app icon for my supported languages (english and german).
Is this even possible? According to the Apple documentation, you can:
An iOS application should be internationalized and have a
language.lproj folder for each language it supports. In addition to
providing localized versions of your application’s custom resources,
you can also localize your application icons and launch images by
placing files with the same name in your language-specific project
directories. Even if you provide localized versions, however, you
should always include a default version of these files at the
top-level of your application bundle. The default version is used in
situations where a specific localization is not available. For more
information about localized resources, see “Localized Resources in
Bundles.”
I have tried to do this with no luck. There doesn't seem to be any helpful resources?
Other things I've tried:
Localized App Icons with Retina Display for iOS
https://iphonedevsdk.vanillaforums.com/forum/iphone-sdk-development/77660-i-have-problem-localizing-application-icon.html
Has anyone successfully achieved a localized app icon?
Since iOS 4.0, this simply doesn't seem to be possible anymore. As of 2015, the documentation has been updated and now only states that Launch Images can be localized (but does not mention App Icons anymore).
The fact that this isn't working has been confirmed by an an Apple employee on the devforums (login required) in 2010:
https://devforums.apple.com/message/330960
Bugreports have been submitted for several years, but nothing has changed. I suppose Apple wants you to use the same icon for your app all over the world – or create separate apps for specific markets.
Actually, there is a way to localize the AppIcon. By using the alternative App Icon. You can change the app icon at the run time.
if Locale.current.language.languageCode?.identifier == "en" {
UIApplication.shared.setAlternateIconName("AppIcon-en") { (error) in
print(error)
}
}

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.

IOS Application Name

I have a strange problem with my application name: my project is called "something - somenumber" (with the dash).
For the submission, the App name I've chosen is without tje dash, infact, in the iTunes Store I can see the name without it.
But when I download my approved App, the name is with the dash..
Have you ever heard something similar???
Is this a problem with the new SDK and IOS version?
Now the name has to coincide with project name???
Thanks
By default, the Bundle display name in the Info.plist of iOS apps is ${PRODUCT_NAME}. ${PRODUCT_NAME}, by default, is the same as the project name, which in your case has a dash. The Bundle display name is the text that gets displayed under your app's icon in the device's home screen. This could be the reason why you can see the dash when you download the app.
You should change the CFBundleDisplayName in the apps Info plist file. This value is what the iOS spring board uses underneath each app. This can also be localised.
.bundle identifier is for the provisioning profile.

Resources