Device compabilities issue in iOS - ios

We uploaded an app where in the first version we added to device capabilities “telephony” to restrict only iPhone devices in the info plist. In the second version we forgot to add “telephony” and we submitted to the App store. Third version we are planning to upload with device capabilities as “telephony” but while submitting to the App Store it shows the warning:
This bundle is invalid. The key UIRequiredDeviceCapabilities in the
Info.plist may not contain values that would prevent this application
from running on devices that were supported by previous versions.
How can we resolve this issue, if we require the device capability “telephony” for application lifetime, but due to my mistake on the second version we forgot to add the required device capabilities? What is the solution for it?
Thanks in advance.

I have the same warning when added to device capabilities “healthkit” t in the info plist.
This bundle is invalid - The key UIRequiredDeviceCapabilities in the Info.plist may not contain values that would prevent this application from running on devices that were supported by previous versions.
delete Info.plist -> Required device capabilities -> Item -> healthkit,upload again to submit review success.

Unfortunately it doesn't seem possible to fix this error. According to Apple's Technical Q&A:
Depending on how you narrow the devices your app supports, you will
get one of two error messages from Xcode when uploading your update to
the App Store.
"This bundle is invalid. The key UIRequiredDeviceCapabilities in the
Info.plist may not contain values that would prevent this application
from running on devices that were supported by previous versions."
When you see this error message, you have added a new constraint,
under the UIRequiredDeviceCapabilities key in your app's info.plist
file.
Important: Because you can't add UIRequiredDeviceCapabilities
restrictions after an app is in the store, be sure to plan ahead by
choosing requirements you will be comfortable supporting indefinitely
going forward.

You are allowed to relax UIRequiredDeviceCapabilities restrictions, but not tighten them. Once restrictions are relaxed they cannot be tightened back again.

Related

Missing CFBundleIconName in Xcode app release

I'm trying to release an app using Xcode. Archiving and uploading the binary goes well without any issue. However the build doesn't appears in App Store Connect and I get an email
Dear Developer,
We identified one or more issues with a recent delivery for your app, >"LycCalculator" 1.2 (1). Please correct the following issues, then upload >again.
ITMS-90713: Missing Info.plist value - A value for the Info.plist key >'CFBundleIconName' is missing in the bundle 'kim.LycCalculator'. Apps >built with iOS 11 or later SDK must supply app >icons in an asset catalog >and must also provide a value for this Info.plist key.
I've tried a lot of things fix this problem. I have all the app icons, app icon source is the app icon but I can't add 'CFBundleIconName' to my Info.plist so I only added icon name.
So here some screenshots of what I have right now:
app icons and launch images , app icons in assets , info.plist
Any suggestion of help would be highly appreciated.

WatchOS and location entitlement

I've been working on adding a watchapp to a fitness tracker I already have in the app store. I've been able to load it onto my physical phone and watch without trouble in the past.
I've recently added Location tracking to the watch app, so that I can track the path the user has run/biked and show it to them on the phone when they review the workout. Since doing that, I'v been getting errors from Xcode when I try to load the app to my phone; I think these are expected errors, but I'm having trouble understanding from the docs/interface of Xcode and developer.apple.com where to make the fix.
I've added the entitlement in the watch app entitlements file:
As the error says, I've switched to manual signing and generated a new provisioning profile, but I get the same error. I don't see a place to add a location capability in the provisioning profile in developer.apple.com:
It seems like the only way for the provisioning profile to get the entitlement is from Xcode, since there's not a place to add it in developer.apple.com? That seems wrong, and isn't working in any case. I'm not finding help for my case in the Xcode docs (or I'm looking in the wrong place). Any help would be greatly appreciated.
I am using location services on iOS and watchOS, but I have nothing related to it in both entitlement files. The docs say:
Set entitlement values in order to enable iCloud, push notifications,
Apple Pay, and App Sandbox.
They don’t mention location services.
So it might be enough to delete the Location entitlement, and enable automatic signing again.
Of course, you had to set in your iOS info.plist, as required, NSLocationAlwaysAndWhenInUseUsageDescription, NSLocationAlwaysUsageDescription and NSLocationWhenInUseUsageDescription, and in your watch extension info.plist NSLocationWhenInUseUsageDescription.
Are you using latest Xcode? Did you set the entitlement in the target menus? They all have toggles now, from what I remember. Once you do that, normally Xcode can resolve signing issues for you. If you look at the signing section in Xcode, does it indicate a signing problem there? (And have you restarted Xcode at least once while trying to resolve the signing problem?)
Note that the location entitlement should be on your WatchKit Extension, not on the Watchkit App.
Have a look at the Capabilities tab (it is the one for control of Entitlements, so you do not have to edit the plist directly.)
Have you tried creating a new project as a test to see if that works? Your screenshot does not match target naming of what I see in Xcode for a WatchKit App. In Xcode 10.1, the WatchKit App plist editor will show 'app name' WatchKit App and the extension plist editor shows 'appname' WatchKit Extension. I see your screenshot showing 'blank' Watchapp Extension. Possibly you edited the project name and that is not an issue? Another thing to verify is that the plist is not corrupt.

sticker pack iOS ipad

I am in the process of submitting a sticker pack to the App Store. I built the sticker pack using the Xcode sticker pack template. I didn't change anything in the code. I simply added the stickers and the app icons. My sticker pack was rejected with the following message. I was hoping someone could guide me in fixing this issue.
This is the message that I received:
From Apple
Guideline 2.3 - Performance
We were unable to install the app on iPad Air 2. The UIRequiredDeviceCapabilities key in the Info.plist appears to be set in such a way that the app will not install on this device .
Next Steps
To resolve this issue, please check the UIRequiredDeviceCapabilities key to verify that it contains only the attributes required for your app features or the attributes that must not be present on the device. Attributes specified by a dictionary should be set to true if they are required and false if they must not be present on the device.
Resources
Please review the Technical Q&A 1397: Understanding the UIRequiredDeviceCapabilities key for information on the UIRequiredDeviceCapabilities key.
You may also wish to review the dictionary keys table in the "Declaring the Required Device Capabilities" section of the App Programming Guide for iOS.

ITunes Test flight Issue while submitting app to app store

I received the following issues from Apple Developer while uploading my app to app store, recently updated to Xcode 7.0. Uplaoding first time after updating to Xcode 7.0. This is mail i am getting from itunes.
Dear developer,
We have discovered one or more issues with your recent delivery for
"*********". To process your delivery, the following issues must be
corrected:
Invalid Bundle - A nested bundle doesn't have the right platforms
listed in CFBundleSupportedPlatforms Info.plist key.
Once these issues have been corrected, you can then redeliver the
corrected binary.
Regards,
The App Store team
Tried to delete the CFBundleSupportedPlatforms key in the info.plist, but the same issue raising again.Help me to sort out this issue.
I solved the issue, if anyone face the same the same problem,follow the below steps might be useful to anyone,
Remove CFBundleSupportedPlatforms and other related CFBundle keys from the info.plist(ITMS-90535 issue).
Executable file key in the info.plist should not be left empty and should be as $(EXECUTABLE_NAME).
Thanks a lot.
Before uploading to the store, have you run the validate on the archive? Does it report the same problem? If so, there may be additional information in the error.
What bundles are in your app? Do you have a watch app and watch extension?
In info list add Required device capabilities—>armv7

Healthkit - entitlements file and plist file

I have downloaded sample codes which supports healthkit framework.I also read some blogs related healthkit.
What i read and found in code , to support Healthkit 2 things required.
1) set yourApp.entitlements with "com.apple.developer.healthkit"
2) in plist file add "Required device capabilities" with arm7 and healthkit.
I have done with both of above requirements and it works.
BUT , It works event i removed both..If i remove entitlement file and also remoe "Required device capabilities" it works.
So what is the need of above 2 ? it seems not mandatory then why each blogs and sample code suggests it.
The first one is definitely required but the entry within you .plist file is not. Evenmore the entry in your plist file can cause you troubles when updating an existing app. Have a look at the post http://jademind.com/blog/posts/healthkit-api-tutorial/ to get some more details and notes on this topic.
The required device capability entitlement is only necessary if you want to restrict the application to run on devices that support HealthKit. If your app requires HealthKit for its primary functionality, then you should use the required device capability entitlement to ensure that the app does not get purchased for devices that cannot support it (iPads for instance).
Both these are required when you want to run your app on device

Resources