How to specify a different bundle display name on iPad (universal app)? - ios

I have tried this in info plist which does not work:
CFBundleDisplayName~ipad = "Full app name"
The iPad still displays only the CFBundleDisplayName which is abbreviated for iPhone.
Is there another approach to get a different bundle display name for iPad in a universal app?

It can be done as stated in the apple document link
In iOS 3.2 and later, apps can designate keys in the Info.plist file as being applicable only to specific types of devices. To create a device-specific key, you combine the key name with some special qualifiers using the following pattern:
key_root-platform~device
In this pattern, the key_root portion represents the original name of the key. The and portions are both optional endings that you can use to apply keys to specific platforms or devices. For the platform key, you can specify a value of iphoneos or macos depending on the platform you are targeting.
I think what you have done is right. Just try to delete the app from the device and build and run again.

As #LebRon suggested I solved it by setting a separate key for iPad and iPhone,
here is a screenshot which solved it for me,

No, there is not a way to do it. In order to understand from a code whether the device is iPhone or iPad, you need runtime. And Bundle Display Name cannot be changed at the runtime.
It was explained here: Dynamically set iOS Bundle Display Name in Xcode 4 on Build

Related

App Store Connect issue ITMS-90129 keeps blocking upload

App Store Connect keeps blocking App upload by issuing
ITMS-90129: The bundle uses a bundle name or display name that is already taken.
So far I tried:
Changing the Display Name, Bundle Identifier (even with generated Hashcodes to make sure that the names really are not taken already)
Created alternative Profiles, Identifier and App in App Store Connect (also using the same mentioned hashcode)
Tried these changes in the Xcode input fields (under 'General') and also directly modifiyng the Info.Plist
Re-Exporting the project from Unity to XCode with the new naming (to make sure Unity is not writing some bundle id somewhere which is not visible in XCode)
(Update) Tried to Clean the build folder based on
minchaej suggestion
Additional information: The XCode project is exported from Unity and we're using Firebase which is installed via Pods.
I'm grateful for any hint where to continue looking - because I'm really running out of ideas. Thanks a lot for taking the time.
Cheers
vik
The solution for this (probably very Unity-to-XCode specific) issue was localization related:
I had to remove all but the English localization entry in the Localization section.
I'm not sure why there were other loca resources before (since we didn't set them up) but I assume these included an alternative app name which was causing the ITMS-90129 to pop up.
My salvation for ITMS-90129 is the next:
Remove definitions for
CFBundleName
CFBundleDisplayName
CFBundleSpokenName
for base(en) localisation InfoPlist.strings.
Setup this variables with single value $(PRODUCT_NAME) directly in Info.plist
Variable $(PRODUCT_NAME) define via root project Build Settings/Packaging/Product Name
Setup variable LSHasLocalizedDisplayName in YES value in Info.plist
Setup Russian (or other) localisation for variables
CFBundleName
CFBundleDisplayName
CFBundleSpokenName
via InfoPlist.strings
As I am personally assume, setup this variables via base localisation is the key of problems in which I am faced with

Invalid binary - missing 568h file

I am trying to submit my app to Apple Store but I am receiving the "invalid binary" message, informing that is missing the launch image for -568h modifier. But the file is in the package. I checked. Some details:
The launch image are localized but not for all languages. They are present for English and some other languages.
In the simulator and in the testing devices the launch image is displayed correctly.
I checked the sizes and are correct
I am using XCode 4.6.3
I recently installed XCode 5 preview but I am using 4.6.3 command line tools.
There is no UILaunchImageFile entry in the plist file (I am using the Default name).
The images do not appear in the Launch Images panel (after I localized them).
What is going on? I don't have any clue.
Check your file names are like above displayed image.
Found the reason. If the launch image is localized it is necessary to provide the set of images for all languages the app supports. I tried that and Apple accepted my binary.
Looks like you have to ensure there are also default startup images in Base.lproj. I'm guessing they are used if you are running on a device that has a language not directly supported by the app in the other *.lproj folders.
Can anyone clarify this.
Works for me now anyway.

iOS - Entry in Info.plist for only iOS 6 and above?

I have an entry in my app's Info.plist (a Dictionary), and I only want it to be used in iOS 6 and above. It involves font replacement, using FontReplacer, and I don't want to replace fonts for a device running iOS 5. You can see the example on GitHub for a better explanation.
Basically, is there a way for me to only use that Info.plist entry if the user's device is running iOS 6 or later?
Thanks.
No.
There isn't a way to tell the system to only have a specific entry available if >iOS 6.
There is, however, a way to tell whether you're on an OS > 6 in code, though:
#ifdef IPHONE_6_0
//...
#endif

Localization of CFBundleDisplayName doesn't work on device

I tried to make the localization of the app name using CFBundleDisplayName.
I made the localized InfoPlist.strings according two different language.
In one strings file wrote:
CFBundleDisplayName="x11111"
and in another:
CFBundleDisplayName="y22222"
And in file info.plist, I added "Application requires iPhone environment" property, and set the boolean value to YES.
And in info.plist,the "Bundle display name" I used "x11111".
The localization worked ok on the simulator, but when tested on the device , it did not work.
On device, the name I used for 'Bundle display name' in info.plist can only be showed.
By the way, I use cocos2d for the project.
Anything I missed or did wrong?
If your localisation files were supplied to you, and you need to add them, be sure to add them correctly on per file basis. In Xcode, while you are adding files, pay attention how you add them. This is how they should look in Xcode Project Navigator.
I have added them by selecting all folders which didn't add them correctly to project.

Supported Platforms for iPad app?

I'm creating an app for iPad (my first), and I was about to submit a binary until I noticed something peculiar in the target build settings. Under the "Supported Platforms" key, it say "iphonesimulator iphoneos". Additionally, it says "build/appname.build/AppStore-iphoneos" under Per-configuration Intermediate Build File Paths. However, the app is supposed to be built for iPad. In the summary, the iOS Application Target Devices specifies "iPad". Note that I originally created the app to be universal, but would now only like to release it as an iPad app.
SOLVED: A note to anyone who might have the same question. I did not initially change the Build Variants from "iphonesimulator iphoneos", but I ultimately had to because I had a code sign problem, in which the Build Variants must be set to "normal" in order to compile. See this post for further info, it helped me:
Code Sign Failed - Exit Code: 1
Is this a question? Once you submit to the store, you'll mark the app as being available for iPad only.
The SUPPORTED_PLATFORMS conditional is meant for libraries that can be compiled for both MacOS and iOS (a.k.a. iPhoneOS... there is no such thing as iPadOS). It can also be used for libraries that build to work on only the device (such as things that utilize hardware connectors) and not the simulator.
Hope this makes sense.

Resources