question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

Missing "Purpose" string in Info.plist

See original GitHub issue

I think we might have to update the cookiecutter Info.plist. I got the following message when recently submitting an update to an App Store app:

Dear Developer,
We identified one or more issues with a recent delivery for your app, "<APP_NAME>" <APP_VERSION> (<APP_BUILD>). Please correct the following issues, then upload again. 
ITMS-90683: Missing Purpose String in Info.plist - Your app's code references one or more APIs that access sensitive user data. The app's Info.plist file should contain a NSCameraUsageDescription key with a user-facing purpose string explaining clearly and completely why your app needs the data. Starting Spring 2019, all apps submitted to the App Store that access user data are required to include a purpose string. If you're using external libraries or SDKs, they may reference APIs that require a purpose string. While your app might not use these APIs, a purpose string is still required. You can contact the developer of the library or SDK and request they release a version of their code that doesn't contain the APIs. Learn more (https://developer.apple.com/documentation/uikit/core_app/protecting_the_user_s_privacy). 
Best regards,
The App Store Team

I honestly don’t have much idea what to do at this point, but I’ll try to fix the problem on my end (by manually editing the plist file until Apple accepts it) and append to this issue.

Issue Analytics

  • State:closed
  • Created 4 years ago
  • Comments:7 (3 by maintainers)

github_iconTop GitHub Comments

3reactions
Cheatermancommented, Feb 20, 2020

https://stackoverflow.com/a/49439492

This seems to be how to do it. If you’re as inept with XCode as I am:

  • Change the “mode” of the left navigation bar to “Project navigator” by clicking the folder icon at the top left (labelled “Show the Project navigator”).
  • Open the “Resources” folder, you should see a file named <yourapp>-Info.plist, double-click on it.
  • At the top there’s a dropdown labelled “Information Property list”. If you hover over it or select it, a circular “+” button will appear, click it.
  • In the dropdown that appears, select (or search for) “Privacy - Camera Usage Description”.
  • In the “Value” field, either type why you need the camera, or type that you don’t use it - I’m in the latter case, but Apple knows frameworks and libraries will cause false positives, I expect it to be OK.

Archive your app and submit it to the App Store again, it should work as expected. 😃

2reactions
Cheatermancommented, May 18, 2020

This IMHO is an issue anyway, even though (as with many issues…) a new feature could address it.

It’s totally an XCode issue, and Apple documentation totally sucks (because apparently you’re supposed to watch their conferences to get the information…) ; nonetheless, in my mind, kivy-ios was really meant to abstract over these nitty gritty details nobody cares about. So, one way or the other, we need to make the abstraction less leaky ; either that or we can just give up and merely document the issue.

FWIW, your arguments against including this in the template are generally unwarranted ; Apple themselves say (paraphrasing) “it is a valid reason to state some technologies/libraries you’re using require the camera even if your application doesn’t use it”.

I’m in favor of including a “generic purpose” - I’ve been maintaining a few apps on the App Store for a while, and I can tell you Apple will be careful enough to check that you’re actually not using the camera if you say you aren’t. As to getting all Kivy apps banned from the App Store, I honestly doubt it. As I said, it’s a valid reason (according to them) to say “this technology I’m using supports the camera but I don’t use it”.

EDIT: To be clear, what I’m saying here is that we should have a documented, configurable default ; and that default would say something along the lines of “kivy-ios toolchain includes the camera although I don’t use it”. People who use the camera would have to change it, but the rest of the world (vast majority of users) will not know/care about the camera-specific issues.

Read more comments on GitHub >

github_iconTop Results From Across the Web

Error Appstore connect : Missing Purpose String in Info.plist File
"Missing Purpose String in Info.plist File. Your app's code references one or more APIs that access sensitive user data.
Read more >
Dealing with "Missing Purpose String" and 3rd Party SDKs
Missing Purpose String in Info.plist File. Your app's code references one or more APIs that access sensitive user data. The app's Info.plist file...
Read more >
[Solved] ITMS-90683: Missing Purpose String in Info.plist
ITMS-90683 : Missing Purpose String in Info.plist - Your app's code references one or more APIs that access sensitive user data. The app's...
Read more >
ITMS-90683: Missing Purpose String in Info.plist - Expo Forums
ITMS-90683 : Missing Purpose String in Info.plist - Your app's code references one or more APIs that access sensitive user data.
Read more >
itms-90683: missing purpose string in info.plist - You.com
ITMS-90683 : Missing Purpose String in Info.plist - Your app's code references one or more APIs that access sensitive user data. The app's...
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found