I submitted app to App Store but it was rejected twice because they were unable to install the app on iPhone and iPad. They said the UIRequiredDeviceCapabilities key in the Info.plist is set in such a way that the app will not install on an iPhone and iPad.
They wrote that the next steps are:
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.
After first submit I removed completely UIRequiredDeviceCapabilities key, but they still weren't able to install it.
I don't have iPhone or iPad, I tested app on simulators and it worked normally.
Here is my info.plist:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleVersion</key>
<string>3</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
<key>UIMainStoryboardFile</key>
<string>Main</string>
<key>UIRequiresFullScreen</key>
<false/>
<key>UIStatusBarHidden</key>
<false/>
<key>UIStatusBarStyle</key>
<string>UIStatusBarStyleDefault</string>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
</array>
<key>UISupportedInterfaceOrientations~ipad</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationPortraitUpsideDown</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
</dict>
</plist>
Does anyone know how to modify it so that it can be installed on iPhones and iPads?
UIRequiredDeviceCapabilities must be present in your Info.plist, as per the documentation.
In all apps that I have on the App Store, this is what I have:
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>armv7</string>
</array>
so I'd suggest you try that.
Related
I just developed an iOS app which is used WebView features by Flutter framework and after several submitting to upload it into App Store, it was rejected due to Accurate Metadata which the reviewer mentioned UIRequiredDeviceCapabilities key is set in way that we could not install in on iPad running iOS 15.4.1. I wonder how can I manage to fix it!. What I have done yet is, firstly leaving out this key by removing it in Info.plist file. Secondly, Setting UIRequiredDeviceCapabilities key to armv7. Moreover I tested my app on serveral iOS and iPad simulators without any problem and my Xcode version is 13.
I am looking forward that anybody can help me to tackle this issue.
Here is the content of my Info.plist file in iOS folder.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleDisplayName</key>
<string>***</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>***</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>***</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>$(MARKETING_VERSION)</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>$(FLUTTER_BUILD_NUMBER)</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
<key>UIMainStoryboardFile</key>
<string>Main</string>
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>armv7</string>
</array>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UISupportedInterfaceOrientations~ipad</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationPortraitUpsideDown</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
</dict>
</plist>
Video not play in Flutter iOS getting error
Unhandled Exception: PlatformException(VideoError, Failed to load video: Operation Stopped, null, null). Working well in android. Please let me know if you have idea of this.
=>Using video_player plugging
=>Code link= https://drive.google.com/file/d/1amGVhtz0CrnG5ocbjWImW79-XYRlXguN/view?usp=sharing
Video=http://143.244.137.15:8000/media/event/org_event_video/None/event_video_4pnqGxk.mp4
=>Info.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleDisplayName</key>
<string>Evento Package</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>evento_package</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>$(FLUTTER_BUILD_NAME)</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>$(FLUTTER_BUILD_NUMBER)</string>
<key>FirebaseAppDelegateProxyEnabled</key>
<string>0</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>UIBackgroundModes</key>
<array>
<string>fetch</string>
<string>remote-notification</string>
</array>
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
<key>UIMainStoryboardFile</key>
<string>Main</string>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UISupportedInterfaceOrientations~ipad</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationPortraitUpsideDown</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
<key>NSAllowsArbitraryLoadsForMedia</key>
<true/>
<key>NSExceptionDomains</key>
<dict>
<key>143.244.137.15:8000</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
</dict>
</dict>
</dict>
</plist>
On iOS, I found a solution to this problem. The URL needs to be HTTPS, and the app needs to be run on the device instead of the simulator.
I found the solution as below link:
https://github.com/flutter/flutter/issues/56665#issuecomment-1235279217
And I didn't add below things to Info.plist:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
I hope it can help.
try:
The problem is in the API returning video links, it seems like on iOS it needs a header to specify the range of the bytes to be sent. by adding this header the videos will work as expected.
or
Downgrade your's plugin or flutter/ upgrade your's plugin or flutter
Edit: Add this to your ios/Runner/info.plist
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
Edit: Allow unsecure connections
go to your xcode
go to ios/runner/info.plist
on the right side pannel there will be the key, type and value tab
go to information property list/app transport security setting/exception domains/your domain
NSExceptionAllowsInsecureHTTPLoads
allow "yes"
I have the same problem. And the solution was very simple. My video didn't play on my phone. It was not encoded correctly. When I right coded, the problem was solved.
I got an error,
The data couldn’t be read because it isn’t in the correct format.
Now I am making iPhone app by swift.
I added several codes to Info.plist of my app, I deleted these codes.
But when I wanna open Info.plist of my app, this error happen.I do not know why because I deleted all codes which I added.And I think format is really fixed.
My Info.plist is like
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>UILaunchStoryboardName</key>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleVersion</key>
<string>1</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
<key>UIMainStoryboardFile</key>
<string>Main</string>
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>armv7</string>
</array>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UISupportedInterfaceOrientations~ipad</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationPortraitUpsideDown</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
</dict>
</plist>
How can I fix this?
You've duplicated key in the info.plist file, remove the following key in the beginning
<key>UILaunchStoryboardName</key>
and it will resolve the issue.
Try something below:
Right click on Info.plist -> Source Code -> Discard Change
I was Building flutter project , and the problem was missing <string> for key io.flutter.embedded_views_preview adding <string></string> fixed my issue , i didn't update the info.plist though it was as created by flutter , hope this will help someone using flutter
I have a problem with the publication app in the App Store. Support for iTunes immediately rejects the application, and "Code-Level Support" have not answered from two months.
iTunes Support reply below message to brief the rejection:
Performance - 2.3
We were unable to install the app on iPhone 6s and iPad Air. The UIRequiredDeviceCapabilities key in the Info.plist is set in such a way that the app will not install on an iPhone 6s and iPad Air.
Next Steps
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.
App works fine on iPhone 6s and iPad Air using Xcode "Build Configuration" => "Release"
info.plist file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleDisplayName</key>
<string>wHere is 24 - POI Search</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIcons</key>
<dict/>
<key>CFBundleIcons~ipad</key>
<dict/>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleVersion</key>
<string>2</string>
<key>ITSAppUsesNonExemptEncryption</key>
<false/>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>NSCameraUsageDescription</key>
<string>Zezwól, aby móc zrobić zdjęcie.</string>
<key>NSLocationAlwaysUsageDescription</key>
<string>Aplikacja wymaga dostępu do GPS, inaczej nie będzie poprawnie działać.</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>Aplikacja wymaga dostępu do GPS, inaczej nie będzie poprawnie działać.</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>Zezwól, aby móc wybrać zdjęcie z galerii zdjęć.</string>
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
<key>UIMainStoryboardFile</key>
<string>MainApp</string>
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>armv7</string>
</array>
<key>UIRequiresFullScreen</key>
<true/>
<key>UIStatusBarStyle</key>
<string>UIStatusBarStyleLightContent</string>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
</array>
<key>UISupportedInterfaceOrientations~ipad</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationPortraitUpsideDown</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>AppleLanguages</key>
<array>
<string>en</string>
</array>
</dict>
</plist>
UIRequiredDeviceCapabilities key is essentially saying to install ONLY on devices with armv7 processors. Try removing the armv7 key from the info.plist
I'm trying to upload an iOS application to iTunes Connect, however every time I attempt to upload the application I get the following message:
Performance - 2.3
We were unable to install the app. The UIRequiredDeviceCapabilities
key in the Info.plist is set in such a way that the app will not
install.
Next Steps
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.
I don't understand what I'm doing wrong with the UIRequiredDeviceCapabilities.
My application requires the device to have a camera as it involves reading a QR code.
The following is my info.plist:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>still-camera</string>
</array>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIcons</key>
<dict/>
<key>CFBundleIcons~ipad</key>
<dict/>
<key>CFBundleIdentifier</key>
<string>pw.whatsyourwifi.ios</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>1.0.1</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>5</string>
<key>ITSAppUsesNonExemptEncryption</key>
<false/>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
<key>UIMainStoryboardFile</key>
<string>Main</string>
<key>LSApplicationCategoryType</key>
<string></string>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
</array>
<key>UISupportedInterfaceOrientations~ipad</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationPortraitUpsideDown</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
</dict>
</plist>
I have looked at a number of resources provided by Apple such as:
Expected App Behaviours
List of Possible Values
Any help is appreciated, just don't know what I'm doing wrong at this point.
FYI, this was resolved for me when I simply replied to the app rejection stating that my plist file was correct per the docs (assuming yours is correct to your app and the docs). They accepted me.
The contents of UIRequiredDeviceCapabilities must be a dictionary, not an array; the capability is used as a key in the dictionary, and the value must be set to a boolean true or false to indicate whether the device must have the capability, or must not have the capability.
(The utility of prohibiting capabilities in an app is a little questionable. I'm not sure why it'd make sense to have an app that would refuse to install on a device with a camera, for instance. But that's what Apple put in there, so…)
In your case, this would look like:
<key>UIRequiredDeviceCapabilities</key>
<dict>
<key>still-camera</key>
<true/>
</dict>