Recently (as in, since iOS 7 got released) when validating one of my apps in the Apple App store, validation failed with a very strange and -open to suggestion- reason;
The app references non-public selectors in Payload/Name-of-apk/Name-of-app: setObject
After disabling all kinds of pieces of code, it turns out that the app only passes validation when the Facebook SDK is removed from the project. It seems like the SDK is using a non public call which will reject the app from being submitted into the store.
I'm using the latest version of the Facebook SDK (3.8) for iPhone development. But have replicated the same problem in earlier versions (3.5 and 3.2).
Can anyone confirm that this actually is the case?
Related
I am uploading my App into AppStore. My app is displayed fine on iPhone, not on iPad. In addition, my App just works on iOS 6 or higher.
How can I determine these limitations to AppsStore review team while uploading my app? Are my limitations acceptable for the review team or not?
In your Xcode project - select the target (the one being deployed) and set its Deployment Target.
You have the ability to use older versions of iOS - just make sure you only use API included in the lowest version selected. For example, don't use any of the new iOS7 backgrounding API if you are deploying for iOS6. And if you do need to use API included only in newer versions of iOS, make sure to wrap that code in respondsToSelector logic to avoid crashes.
So yes, deploying to iOS6 is totally acceptable to the review team as long as its being compiled with the newest SDK. This also allows users to download your app who haven't made the upgrade to iOS7 yet.
Like the question says, will I be able to submit iOS5/iOS6 apps to the App Store given that iOS7 is rolled out now? Or do I have to target iOS7 for my builds?
I understand that there is a great amount of UI changes, new features, not looking good, etc involved but I just want to know if it is still possible to submit old targets
Cheers
Yes it is still possible to submit apps targeted at older versions, as long as they perform on iOS 7 as well.
There is also now an option for people using legacy versions of iOS to download app versions that are targeted for that version.
Nice article about that here: http://thenextweb.com/apple/2013/09/17/apple-begins-allowing-users-running-legacy-ios-builds-to-download-older-versions-of-apps/
Your app is built to a specific SDK version, which is different from the deployment target. Apple typically require you to submit apps that have been built to the latest public SDK version, although I believe right now you can still submit apps built to iOS 6.
So you can target iOS 5/6 as you require - however, going forward your app will have to be built with the iOS 7 SDK.
I a trying to publish a new version of an app, I started this new version from scratch and now, when I am trying to push it to apple I got an error saying to me that i must support previously supported iOS version.
I am working on an iOS 5 SDK and the previous app was for iOS 3.2+ which is really amazingly hard to support with SDK 5 (amrv6 and other crazy stuff).
So I want to publish this app for iOS 5 only : how can I handle this?
EDIT : after more searches referinf from :
http://developer.apple.com/library/ios/#qa/qa1623/_index.html
Developers who wish to issue updates, but remove device support, have two choices:
Fix their app so that it can work on the devices they originally set
out to support. See Supporting All Devices for details.
Remove their
app from the store, and upload the new app with a different bundle ID.
See Replacing Your App in the Store for details.
Don't set it in the device capabilities, just set the minimum target version in your build settings and you should be fine.
I have submitted an app to the apple store. in my app I am using NSRegularExpression, and in the deployment target I did not put ios 4.0 (I have put 3.2) will my app rejected ?
IF your app crashes often, it may get rejected. If you suspect that it will crash often as a result of your use of a newer API on an older version of iOS, I would suggest rejecting the binary and then adding the appropriate conditional code to handle your situation. It's worth not frustrating your users.
I think that's not the question.
You should reject your app by yourself, because devices with iOS < 4.0 will crash and they will rate your app with 1 star. Bad ratings will people keep off buying / downloading your app.
NSRegularExpression is not available on 3.2 so your app will be rejected , just revoke the build you submitted , and upload the version with the correct settings.
I am trying to add In App Purchase support to my app. I would like the app to still be able to support OS2.2.1, but IAP are not available unless the OS version is 3.0 or higher.
I have tried weak-linking the StoreKit framework. Basically, I have StoreKit.framework added to frameworks, but not in Link Binary With Libraries in the target, and have added weak_framework -StoreKite to the other flags line, as per the Apple instructions. Now when I run the app on OS2.2.1 it crashes in _read_images before the main function is even executed. I really need to support 2.2.1 and I know other apps do it. Thanks for any help.
I just ran into a similar issue with the iAd Framework. Well sort of. I thought it was the iAd Framework but when I completely commented out all the new code and removed the framework it was still crashing.
It worked on the Simulator just not on the device. I found posix_spawn("/var/mobile/Applications/...", ...): Permission denied in the Console logs.
This lead me to believe that it was some type of code-signing error. I deleted the app from the device and re-installed. This launched the app successfully.
It appears there was some remnants of the version installed on the device from the released version did not allow the debug version to install correctly.