How works the Apps versioning control of the App Store? - ios

I need to publish a new version (1.0.1.10) of an application that is published as version 1.0.1.
When trying to publish I am getting the following error:
ERROR ITMS-90060: "this bundle is invalid. The value for key CFBundleShortVersionString '1.0.1.10' in the info.plist file must be a period-separated list of at most three non-negative integers."
Can I only use three integers?
I did this procedure in the Google Play smoothly.

at most three non-negative integers
You can't use more, try something like 1.0.1100

Related

IOS new update versioning code error meaning?

i keep on receiving this email after sometime i upload my IOS new version IPA to ITunes. But i don't know what does it mean anymore. My build version current is been increase to "0.0.27" due to upload keep on failing me. My CFBundleShortVersionString also increase to 97 due to some mistake in previous upload numbering. But i still can't seem to upload my IOS update to Itunes. Im doing phonegap cross-platform mobile application. First version is successful on 14 February 2018, and upload by appsuploader. Any clue for what i miss will be appreciated.
Invalid Version - The build with the version “0.0.15” can’t be imported because a later version has been closed for new build submissions. Choose a different version number.
Invalid or Non-Increasing CFBundleShortVersionString - The value specified in the bundle's Info.plist file for the key CFBundleShortVersionString must be a string consisting of at most three dot-separated components, where each component is composed only of the digits 0 through 9. For example, any of the following are syntactically valid values for CFBundleShortVersionString: "1.0", "4.2.1", "3.46", "1.112.0"; whereas the following are all syntactically invalid: "1.4.0.0.0.0.5", "GX5", "3.4.2b6", "2.6GM", "1.0 (Gold)", "-3.6". Additionally, each updated version of the same application must have a CFBundleShortVersionString that increases relative to that of the previous version that was actually made available for sale on the iTunes Store. For example, if a previously-available version had a CFBundleShortVersionString of "1.4", then any of the following would be acceptable as the next update: "1.4.1", "1.4.332", "1.5"; but all of the following (though syntactically valid) would be unacceptable: "1.4", "1.3", "1.3.9", "0.9". For more information about the CFBundleShortVersionString key and the Info.plist file, see Apple's Runtime Configuration Guidelines at http://developer.apple.com/library/ios/documentation/MacOSX/Conceptual/BPRuntimeConfig/index.html
Mark this as Resolve. It just an compilation conflict when selecting android and ios together. I compile the cross platform individually then can see the adobe phonegap build version is changing to latest. After that upload to ITunes and everything go smooth.

How to Change BundleVersion to four non-negative integers in iOS

Now My BundleVersion is like 1.3.1, now I want to change it to 1.3.1.1, can someone tell me how to do it?
update: I searched the solution in the internet , and some one said adding an new key in plist 'sys-clientVersion',and set it to 1.3.1.1 . I tried that way but than the Xcode gave me an error:"ERROR ITMS-90060 : This bundle is invalid . The value of key CFBundleShortVersionString 1.3.1.1 in the info.plist file must be a period-separated list of at most three non - negative integers".'
This is my info.plist :
so , the 'Bundle versions string' equal to 'Version' in Identity, and the 'Bundle version' equal to 'Build' , and 'sys-clientVersion' is what i want show in app store , right~?
It's super easy go the iTunesConnect select your app, version and scroll down to General App Information there is a textfield under App Store Icon, it contains the version number say 1.3.1 you can change it to 1.3.1.1. Have a look at the following image.
P.S keep in mind that the version number should be incremented from previous one.
Edit:
For Xcode Error: ERROR ITMS-90060 while submitting the app check your "Bundle versions string, short" in info.plist file by right-clicking on it and open it as source-code. Search for CFBundleShortVersionString and confirm that the value shouldn't contain any space or non-integers.
I solved it by just adding sys-clientVersion key , and set your wanted version to the key (e.g 1.1.1.0). The most importent point is , just increase your current Version and Build ( in General - Identity) e.g 1.0.0->1.1.0. as normally . the sys-clientVersion now is showing in app store. and unrelated with Version or Build.

CFBundleVersion Not Matching

I'm attempting to upload an application to apple, and i keep receiving this error:
ERROR ITMS-90345: "Metadata/Info.plist Mismatch. The value for bundle_version in the metadata.xml file does not match the value for CFBundleVersion in 'App Name Here' [Payload/App Name.app]."
I can't seem to edit my CFBundleVersion in my plist so it matches, any thoughts???
You can click on your project file, then click on your target, and change in the general tab the version of your app.
What is important is that you should not have any spaces in the version, if the version that you specified in iTunesConnect is also without spaces.
I did get the same error because I had a trailing space in the version which was difficult to detect.
I just got the same problem. Looks like app store compares CFBundleVersion with the last one. The current one should be higher.
Example: current 2022.06.14 will be rejected if there is another build say 2022.07 already in the TestFlight.
If you have an app extension, make sure that the build number in the extension target is the same as in the app target.
Click on your project file(info.plist) then ensure that the MinimumOSVersion is either same as the previously submitted apps or higher. In my case, I lowered the MinimumOSVersion of my app accidentally. So after I changed it back to what it was before I was able to submit my app to Itunes Connect using application loader. You can also check for spaces in the version string if you wish and remove them.
Please check your CURRENT_PROJECT_VERSION after you change MARKETING_VERSION, or you can change CURRENT_PROJECT_VERSION to 1 (CURRENT_PROJECT_VERSION=1)

iOS App Upload is getting CFBundleShortVersionString error message

So I am trying to upload my app to the App store, and I am getting this error message.
ERROR ITMS-90060: "This bundle is invalid. The value for key CFBundleShortVersionString 'HEAD based on 1.0' in the Info.plist file must be a period-separated list of at most three non-negative integers."
If I open the log it gives me, you can clearly see the version short string is correct.
<software_assets apple_id="456805313"
bundle_short_version_string="27.1.1"
bundle_version="3221"
....
</software_assets>
What am I missing?!?
I have used pods in my project, In the info.plist of pod SVWebViewController CFBundleShortVersion was not in standard way.
You need to find non-standard CFBundleShortVersionString in info.plist file. I searched through all of them and found this in one of the repo
Before
Bundle versions string, short => Head is 0.1.2
After
Bundle versions string, short => 0.1.2
After correcting CFBundleShortVersion everything worked fine.
Check any 3rd party frameworks you've used. There are reports floating around of xcode tripping over bundle_short_version_string included in 3rd party resources pulled into the main project. For example:
CFBundleVersion must be a period separated list of at most three non-negative integers (WARNING ITMS-9000)
https://forums.developer.apple.com/thread/23581

Is it correct that different versions of a submitted app are compared using CFBundleVersion

According to bullet point 3 of the accepted answer here:
CFBundleVersion in the Info.plist Upload Error
Apple is supposed to be comparing the "CFBundleVersion" (i.e. "Bundle
version" not the "Bundle versions string, short")
However in this posting:
Difference between Xcode version (CFBundleShortVersionString) and build (CFBundleVersion)
It says Version maps to CFBundleShortVersionString and Build maps to CFBundleVersion.
Therefore that means when you submit a new version of an app to the app store, the comparison is being done on the build and not on the version that you see in the XCode summary page.
This seems the wrong way round to me - especially given the quote from the Apple documentation:
CFBundleShortVersionString represents a release version, whereas
CFBundleVersion represents any build, released or not.
This means when submitting a new version of an app you need to be concerned with the build number, not the release number, which to me seems odd. Its more odd because according to this:
What's the difference between "version number" in itunes connect, "bundle version", "bundle version string" in xcode?
The CFBundleShortVersionString MUST be the same as in iTunesConnect. Then why are Apple checking the CFBundleVersion and not the CFBundleVersionShortVersionString?
I have submitted an app where both the version and build were 1.0, now I want to submit a new version and have bumped both to 1.0.1, will this cause any issues when submitted?
The reports from users seem to be inconsistent. Also, the SO answers are more than 2 years old.
The section about "configuring your app" in Apple's App Distribution Guide says this:
Setting the Version Number and Build String
The version number is a two-period-separated list of positive integers, as in 4.5.2. The first
integer represents a major revision, the second a minor revision, and
the third a maintenance release. The version number is shown in the
store and that version should match the version number you enter later
in iTunes Connect. For details on possible values, see
“CFBundleShortVersionString” in Information Property List Key
Reference.
The build string represents an iteration (released or unreleased) of
the bundle and can contain a mix of characters and numbers, as in
12E123. For Mac apps, the user can click the version number in the
About window to toggle between the version number and the build
string. For details on possible values, see “CFBundleVersion” in
Information Property List Key Reference.
For iOS apps, update the build string whenever you distribute a new
build of your app for testing. iTunes will recognize that the build
string changed and properly sync the new iOS App Store Package to the
device. For how to configure your app for testing, read “Beta Testing
Your iOS App.”
This indicates that for the App Store what matters is CFBundleShortVersionString and it should match the value in iTunes connect. And that changes to CFBundleVersion are considered when differentiating between builds for testing.
However, this somehow contradicts what "Information Property List Key Reference" says about CFBundleVersion
CFBundleVersion (String - iOS, OS X) specifies the build version
number of the bundle, which identifies an iteration (released or
unreleased) of the bundle. The build version number should be a string
comprised of three non-negative, period-separated integers with the
first integer being greater than zero. The string should only contain
numeric (0-9) and period (.) characters. Leading zeros are truncated
from each integer and will be ignored (that is, 1.02.3 is equivalent
to 1.2.3). This key is not localizable.
It isn't the first time or the last that Apple's docs have contradicting information.
Personally, I'd go with the App Distribution Guide guidelines but setting the same version number for both values seem to comply with both documentations, so you should be ok.
For my Mac OSX app, I am using a dotted version in CFBundleShortVersionString and a running integer (that corresponds to my SCM revision number) in CFBundleVersion. Submitting updates like that for years and never had a problem

Resources