Page 1 of 1

UIRequiredDeviceCapabilities

Posted: Thu Dec 08, 2016 5:02 pm
by Julian Morgan
I wonder if anyone can help, please.

I have just performed a rebuild of an App and have done all the stuff needed to get it on the App Store but am now seeing this error message when I submit the files for review.

The App's Info.plist can't contain values for the UIRequiredDeviceCapabilities key that would prevent this app from opening on any iOS device that was supported by previous versions.

I am using LC 9.0.0 DP 003 and Xcode 8.1. If I understand it right, the problem may be because the app was written a few years ago and was originally set to include iOS 4 devices. LC 9.0.0 doesn't seem able to set for versions before iOS 6. But there must be a get-around, I am hoping.

Does anyone know what it is, please?

Thanks

J

Re: UIRequiredDeviceCapabilities

Posted: Thu Dec 08, 2016 5:27 pm
by LiveCode_Panos
I think I know where is the problem. Apple's submission policy is to reject a new binary if it prevents the application from running on devices that were supported by previous versions.

In your case, I guess you have marked some device capabilities (e.g. "location services" or "gps" etc) in the standalone application settings as "required".

By marking "location services" and "gps" as required, you restrict the app to devices that support gps and location services.

There was a bug in older versions of LiveCode, where setting Requirements and Permissions was not taken into account, so all of them were considered as n/a (of course this did not prevent GPS and location services to work as expected in devices that supported this functionality).

So what happens in your case is:

1. You had already uploaded a version of the app using an older version of LiveCode
2. You had set e.g. GPS and Location Services as 'required', but actually they were marked as 'n/a'
3. You now try to upload a new binary of the same app (built with LiveCode 9.0.0 DP-3)
4. You have exactly the same settings (i.e. GPS and Location Services as 'required'), and this time these settings are actually taken into account. So the app's Info.plist now contains some values for the UIRequiredDeviceCapabilities key, which were not contained in previous version
5. The number of supported devices is now smaller, so Apple rejects the binary.

You can do one of the following to solve this problem:

1. Submit a brand new app, with a different app id, and mark GPS and location services as 'required'. (Not a very good solution IMO, unless you don't care losing reviews etc)

2. Re-submit the current app, but first make sure you have marked GPS and Location services as 'n/a'. Note that this will not prevent your app from working as expected in devices that support GPS and Location Services.

Hope this helps.

Warm regards,
Panos
--