Can't install iOS app - ios

I'm trying to test out an .ipa file but when i install it with xCode i get the following error: Please include the kCFBundleIdentifierKey in the options dictionary when installing an app.
I've checked and re checked my bundle ID and it is matching the ad hoc profile i got so what's wrong here? if i install the app with iTunes the app icon just gets grayed out and if i press the app to open it, it just writes "installing..." and keeps saying that.
Any help is appreciated, been stuck with this for 5 hours now:(
Heres my .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>English</string>
<key>CFBundleDisplayName</key>
<string>GolfBox</string>
<key>CFBundleExecutable</key>
<string>GP Mobil</string>
<key>CFBundleIconFile</key>
<string></string>
<key>CFBundleIcons</key>
<dict>
<key>CFBundlePrimaryIcon</key>
<dict>
<key>CFBundleIconFiles</key>
<array>
<string>icon.png</string>
<string>icon#2x.png</string>
</array>
</dict>
</dict>
<key>CFBundleIdentifier</key>
<string>dk.golferportal.golfersDK</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>dk.golferportal.golfersDK</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>1.7</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1.7.0</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>NSMainNibFile</key>
<string>MainWindow</string>
<key>UIStatusBarHidden</key>
<true/>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationLandscapeRight</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
</array>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
SOLUTION: Don't use " "(space) in the file name of the .ipa file

It sounds like your app doesn't have a bundle identifier
Do this:
Right click on your .plist file,
Click open as -> Source Code
Copy and paste that code onto your post so we can take a look at your plist configuration. Chances are something is missing and that something needs to be added such as your bundle identifier key
Once youve updated your post and i've had a chance to take a look at it, I can update my post to help correct your situation
UPDATE
It turns out that the problem occurred due to a space character found in the filename which must not occur. Taking out the space character solves the problem.

Related

Invalid Image Path - No image found at the path referenced under key 'CFBundleIcons':'AppIcon20x20' [duplicate]

This question already has answers here:
App Store Validation Issue - CFBundleIcons App Icon20x20
(2 answers)
Closed 5 years ago.
REPOSTING SINCE I AM GETTING NO ANSWERS ON THIS.
I have been struggling with this issue for over a week. Whenever I try to validate a build or use application loader lately I have been getting this error:
iTunes Store operation failed.
Invalid Image Path - No image found at the path referenced under key 'CFBundleIcons':'AppIcon20x20'
Now, the problem is there is no AppIcon20x20 key in my plist.
Here's my AppIcon asset and attributes settings:
AppIcon, Attributes
Nowhere is a 20x20 asset even mentioned in my Plist, as seen by the source code version here :
<?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>CFBundleIcons</key>
<dict>
<key>CFBundlePrimaryIcon</key>
<dict>
<key>CFBundleIconFiles</key>
<array>
<string>icon603x.png</string>
<string>icon602x.png</string>
<string>icon403x.png</string>
<string>icon402x.png</string>
<string>icon293x.png</string>
<string>icon292x.png</string>
<string>icon203x.png</string>
<string>icon203x.png</string>
</array>
</dict>
</dict>
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
<key>NSExceptionDomains</key>
<dict>
<key>https://millsfitnessapparel.myshopify.com/</key>
<string></string>
</dict>
</dict>
<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>
</dict>
</plist>
And lastly, I have googled the heck out of this topic and they all say to just add CFBundleIcons to your plist, which I did, but it's still throwing the error. I have also done this in versions of this project where there are pods, no pods, workspaces, regular xcproj. files, and even with 1 view controller and just some icons [this latest build].
I have also tried to achive this build in xcode versions 8.1, 8.2, and 8.3, all receiving the same error.
Any help here would be greatly appreciated. These are apps for a client and I am currently late on delivering because of this issue. Thanks.
you can simply create your app icons asset using https://makeappicon.com/. You have to supply a 1536x1536px image for the best result. It will automatically create all the app icons for your project
Also please refer to the following:-
Check the icon file's name is exactly same as the name in your info.plist. It's fine while running debug mode though, It doesn't work while you upload/ validate the build.
Please check your app's bundle identifier is correct.

UIRequiredDeviceCapabilities is invalid for iOS application

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>

IOS Document Provider shows "Doesn't support the file type"

I am trying to implement an iOS Document Provider Extension, specifically in order to make it possible for web-pages to access files in my app "Flyskyhy" directly. I've read through the normal documentation, and have used the standard way in XCode to add a DocumentProvider Extension target to the project. I've not changed anything in that default implementation yet, but wanted to try it out first. The extension shows up and gets called correctly when accessed from Mail (through the action Add Attachment).
However, when I try to access it from a web-page in Safari, the extension does not show up in the default list of sources:
Then, when I press "More", it does show up with the text "Doesn't support the file type":
Does anybody know what might be going on, and what I can do to make this work?
EDIT:
Because the Document Provider API's are never called, it is most likely a problem with the Info.plist. For information, that is shown here:
<?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>Flyskyhy Documents</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>XPC!</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1</string>
<key>NSExtension</key>
<dict>
<key>NSExtensionAttributes</key>
<dict>
<key>UIDocumentPickerModes</key>
<array>
<string>UIDocumentPickerModeImport</string>
<string>UIDocumentPickerModeExportToService</string>
</array>
<key>UIDocumentPickerSupportedFileTypes</key>
<array>
<string>public.content</string>
</array>
</dict>
<key>NSExtensionMainStoryboard</key>
<string>MainInterface</string>
<key>NSExtensionPointIdentifier</key>
<string>com.apple.fileprovider-ui</string>
</dict>
</dict>
</plist>
The Apple documentation says that:
the public.content UTI matches all document types.
This turns out to be incorrect, according to Apple Technical Developer Support. You need to add the public.data UTI to cover all document types:
<key>UIDocumentPickerSupportedFileTypes</key>
<array>
<string>public.content</string>
<string>public.data</string>
</array>

Xcode : Submission Failed - Invalid IPA

After many hours of research, I don't know why I can't submit my application from xCode (6.1).
At the end of the submission an error is returned:
ERROR ITMS-90072: "The IPA is invalid It does not include a Payload directory."
The two responses that I've read are located in the info.plist file
Two keys must be added :
- LSRequiresIPhoneOS: YES (Boolean)
- CFBundleInfoDictionaryVersion: 6.0 (String)
The project has been cleaned.
This is the contents of my file 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>LSRequiresIPhoneOS</key>
<true/>
<key>CFBundleDevelopmentRegion</key>
<string>fr_FR</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>com.forprodis.$(PRODUCT_NAME:rfc1034identifier)</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>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1</string>
<key>UILaunchStoryboardName</key>
<string>Main</string>
<key>UIMainStoryboardFile</key>
<string>Main</string>
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>armv7</string>
</array>
<key>UIStatusBarHidden</key>
<true/>
<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>
I have generated the IPA and unzip it. The folder contains two subfolders :
- Applications
- Symbols
Only the Payload folder should appear, isn't it ? (the wrapper)
Wikipedia describes the content like this :
An IPA has a built-in structure for iTunes and AppStore to recognize,
The example below shows the structure of an IPA:
/Payload/
/Payload/Application.app
/iTunesArtwork
/iTunesMetadata.plist
I just had the very same problem. It turned out that a missing entitlement for in-app purchases was the culprit.
Select your target and go to 'Capabilities'. Xcode highlighted the missing entitlement and offered to fix it. Then it finally worked.
I hope this works for you as well. I have spent the last couple of hours tearing my hair out.
I faced the same problem on an application that I've successfully submitted many times over the past few years. To correct it, I had to edit the Info.plist file to set:
Application requires iPhone environment = YES
Mine was set to NO. This does not restrict the application from deploying to iPad or iPod.

How to make a Keyboard extension's name shorter (via info.plist keys)

I am developing a Keyboard Extension for iOS 8.
Everything is ok but when I run on device, the name of the Keyboard is "myBoard - mBoard". I would like it to just be "myBoard".
My extension info.plist is:
<?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>CFBundleDisplayName</key>
<string>Meboard</string>
<key>CFBundleExecutable</key>
<string>${EXECUTABLE_NAME}</string>
<key>CFBundleIdentifier</key>
<string>tapi.Meboard.$(PRODUCT_NAME:rfc1034identifier)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>${PRODUCT_NAME}</string>
<key>CFBundlePackageType</key>
<string>XPC!</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1</string>
<key>LSApplicationCategoryType</key>
<string></string>
<key>LSHasLocalizedDisplayName</key>
<false/>
<key>NSExtension</key>
<dict>
<key>NSExtensionAttributes</key>
<dict>
<key>IsASCIICapable</key>
<false/>
<key>PrefersRightToLeft</key>
<false/>
<key>RequestsOpenAccess</key>
<true/>
</dict>
<key>NSExtensionPointIdentifier</key>
<string>com.apple.keyboard-service</string>
<key>NSExtensionPrincipalClass</key>
<string>${PRODUCT_MODULE_NAME}.myBoard</string>
</dict>
Please help me solve this problem.
It seems like this isn't consistently possible as of iOS 8.1. We've experimented with numerous combinations of display keys and while it seems that you can in some case simply appear as "myBoard" or whatever your keyboard name is, it seems impossible to appear as simply "myBoard" and not "myBoard - myBoard" (or something similar) in all cases.
The set up we ended up with is as follows:
CFBundleName: identical on both container app and keyboard extension
CFBundleDisplayName: only present for the keyboard extension
CFBundleExecutable: the same as CFBundleDisplayName on the Keyboard extension, the normal ${EXECUTABLE_NAME} for the container app.
This is the best we've found. I'll update if I figure out anything better.
In your Contaning app, set the Bundle Display Name empty and in your Keyboard Extension set the Bundle Display Name "MyBoard".
After making this changes, it will show "MyBoard -"
To have what you want you should set the display name EXACTLY the same in both info.plist files (app and extension).

Resources