Apple App Store : info.plist require camera and microphone features

When I submit to the App Store my App I get this following from Apple :

   We identified one or more issues with a recent delivery for your app, “Mi Corazon Corona” 0.1 (0.1). 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 NSPhotoLibraryUsageDescription 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).

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 NSMicrophoneUsageDescription 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).

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).

Though you are not required to fix the following issues, we wanted to make you aware of them:

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 NSLocationWhenInUseUsageDescription 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  

Actually my App does not use those features.

Is there something I can do to remove them from my App requirements ?

Is there somewhere a parameter that I missed ?

Thank you if someone can help me.

Add them to the plist section.  It is just a message to be displayed to the user on access.

If you don’t use them then simply add NSCalendarsUsageDescription = “Not used within app”.

Repeat for everything they are complaining about and resubmit.

Thank you very much for your answer. :) I really appreciate to have ‘one’ answer to my too many questions. Even if this answer does not come from Coronalabs. I feel less lonely today because I realize that there is other geeks working on Corona.

Have a nice week-end 

[Edit] : I just uploaded my App to the Apple App Store Connect and it was now correctly approved for TestFlight.

Thank you again

Another point related to Apple App Store :

When I build my app with command line ‘build.sh’, everything is OK now, with Apple.

When I build my App with the Corona Simulator I get the following from Apple :

“This app was built with the iOS 12.0 SDK. All iOS apps submitted to the App Store must be build with the iOS 12.1 SDK or later”.

Again, I insist, the big flaw we have with the Corona Simulator building process is that it does strange things on a Coronalabs server.

This is un-acceptable for a free software : I do not have any possibility to fix this issue that I have with Apple, myself.

Do not miss-understand me : I really do not like The Corona Simulator building Apps, because of this freedom issue.

But, still, the Corona Simulator is really convenient , and I am sure that my own users will like to build their app, using the Corona Simulator … (if it can work correctly)…

Actually the building process done by the Corona Simulator does not work!

See… now I 'm reading this and I would not normally answer a post like this.  You’re angry, you want it to be free but also “do it my way”.  

I don’t understand what you mean by the ‘freedom issue’.

The building process done by the simulator works very well (setting some plist and manifest settings can sometimes be tricky, but in 7 years of using it I’ve never not been able do do what I need). 

I think you simply want it to work differently than it does.  Specicially, it sounds like you want it to be friendly with a DIY plugin you’re working?  Just guessing here.

As far as ‘not having any way to fix this myself’  That is NOT true.  You can use the native build process.

If you’re doing native work and/or making your own custom plugins you need to use the native build process.  The simulator is not meant to handle that, nor to bundle your plugins for you.  It only has facilities to include hosted plugins in the simulator build process.

Yes, and No. I am currently using the native build process. This works fine, but I am still unable to have the Live Update feature working when I build myself the App and its native plugin. I am not sure if it is my fault or if the Live Update feature does not work without a build from the Coronalabs Server.

You need to update the simulator to a more recent daily to build with the iOS 12.1 SDK

Now that things are quieter (calmer ?) I can answer. I like trolls but I really don’t want to start one with Corona.

You are not very nice with me.

 

I agree that the Corona Simulator is a great tool, very convenient. It does not work actually with my plugin but I hopefully will understand soon why.

One of the great feature of this Corona Simulator is that it can build apps very simply  without bother with many tools and parameters.

 

But I have one question :

how do you call a software who relays on a private service on a private server on a private company, with code you do not have sources ?

A software  cannot be at the same time an Open source software and  a closed source software. I persist to say that there is a freedom issue there.

 

In the same order of things, if I continue to work on Corona, I know that I will have some days problems with the Corona dual license.

A software may not be at the same time private and Open.

The GPL license is very clear : you may not use a GPL software inside a private software.

But the Corona dual license permits that. this is a completely NON SENSE.

 

Please, if you answer, does this quietly :wink:

AFAIK, Corona is still working hard to expose their tool-chain.   While they work on this, they have every right to keep the source private.  I’m sure once they get things in a workable format they’ll release it.  They’re just super busy and it will take time.

Please note:  I don’t work for Corona (in case there was any confusion).    As far as, ‘not nice’.  Fortunately, that isn’t my job.  I’d be terrible at doing support.  However, I do try to help and answer when I can. 

I think it is OK to be frustrated / confused and to express that in the forums.  We’ve all been there.  However, I don’t think it makes a great impression to be angry, demanding, and then to dictate what should be done.   You catch more flies with honey, than vinegar.

Again, as I said in this (or another post), best of luck on your project.

This is due to Apple requirements and the fact that we don’t go back and update previous builds.

Your Xcode must match the iOS SDK that’s being targeted. Corona builds have a version of the iOS SDK included with them. Thus if build 1234 was built against iOS 12.0, you have to wait until we can build a version say 1237 that is built with the iOS 12.1 SDK. We try to keep the latest daily build set up with the latest version of the iOS SDK. Just update your simulator to a later daily build. The release notes say when we change versions.

Rob

It’s really important to understand these are community forums. If Corona Labs staff answers everything, the community will never respond and that doesn’t foster a healthy community. Since @SGS answered you there was little reason for me to repeat his answer.

Now the reason why is that camera/photo library code is part of our core. In an ideal world we would have made a lot of things like that plugins, but in 2012 (or so) when those features were added, Apple wasn’t checking those strings. We could go pull out those items and make them plugins but we would have to do the same for Android and the desktop platforms and that would create a breaking change for a lot of people. Making those core features into plugins would solve this issue, but it’s not a high priority items at this time.

I would suggest this is a good project for the community to take on, but because of the volume of breaking changes, I’m not sure we would want this.

Rob

For point 1. This is by design. At a point and time we depended on license fees for Corona. We had some very large shops (think 100+ seats) and they needed a custom plugin. It would be very cost prohibitive for them to buy 100 $999 Enterprise seats. So what we did for these large studios was create the “Self-hosted Plugin license”. This was included in the more expensive $2500 Enterprise version, but the other 99 developers could use the simulator and as long as they were with the same company, the company could build their plugins, host them on any place that a URL could be created for the plugin and you have one person doing native work to build the plugin and the other developers using the much more economical simulator.

If you want to do simulator builds against your own plugins, you can purchase the Priority Plus Support ($999) which includes the self-hosted plugin feature in addition to getting native support.

For point 2. When you use the simulator, you’re using a commercial license that’s free, but it’s a commercial license none-the-less. The simulator your download from our pubic or daily build sites falls under this license. You can even build native apps using Xcode or Android Studio with the downloaded version as a commercial license.

Now if you want to download our source code and change how the simulator works, then you have two choices: do it with the open source license and deal with the license. Open the source for your game or app and publish away. Or talk to us about a commercial license for the source code. If you want to tinker with the source and make pull requests, your changes will end up in the downloadable and people can use that to build under a commercial license.

Rob

 Hi, @rob. Thank you very much to have taken time for all these details responses.
 

It’s really important to understand these are community forums. If Corona Labs staff answers everything, the community will never respond and that doesn’t foster a healthy community. 

I totally agree with you. We must be able to live without reposing entirely on Corona Labs. This is how a real free community works.

Until Sunday, I was having the impression that I was the only free developer on Corona. On Sunday I realized that there are many. This is a good surprise for me.

 

…We could go pull out those items and make them plugins but we would have to do the same for Android and the desktop platforms and that would create a breaking change for a lot of people

Yes, I was just forgetting the problem of very important question of ascendant compatibility. This is something that users very often forget because they only consider their own project.

If you want to do simulator builds against your own plugins, you can purchase the Priority Plus Support ($999) which includes the self-hosted plugin feature in addition to getting native support.

This is really something that I will consider seriously. Maybe later. But $999 is much money for a poor geek like me.

But I understand that Corona Labs is a private company, with salaries who must eat , having their children going to school, and so, need to earn money each month.

Hi @roaminggamer.

Quote: “Again, as I said in this (or another post), best of luck on your project.”

I appreciate your wish. Sometimes I am discouraged and I feel as a very bad programer who is unable to code anything correctly.

When I look/read the Corona code, I am very impressed by the quality of its code. I do not know who are the programers who wrote this code, but I congratulate them.

You can also get self-hosted plugins as a standalone for half the price, right?

https://marketplace.coronalabs.com/service/self-hosted-plugins

oh! This is very good. $500 is something that I can afford to pay.

Thank you for the link.

But my plugin is very far to be finished  :smiley: . I am just beginning working on it!

What I really need now, is some support. I am <almost> ready to pay for some support.

There is no urgency, now, but I want to be absolutely sure that my native plugin will be compatible with the Live (hot) Update of Corona. This fantastic feature is absolutely mandatory.

Paying for support on a free software is OK.[I would not even thinking to pay anything for a non-GPL software].

But I have some concern with this infamous Corona dual-license.

I will probably send a post on this subject later.

The reality is a bulk of the Corona users will never open Xcode or Visual studio. They use the simulator. If they need plugins they get them from the marketplace and enjoy the simplicity of our build system. Most of the community is happy to talk about creating buttons and A* pathfinding, but when it comes to using Corona, it’s our Simulator that’s the selling point. They will never download the source and muck with it.

As such, there are plenty of people here to provide free support to supplement our support.

Now there are maybe several hundred developers that need plugins we don’t offer, and they bite the bullet and use Corona Native to add in the features we don’t support. They adapt to Xcode/Visual studio builds. In some cases, they will get the self hosted plugins option so they can do simulator builds, but they are not interested in downloading the Corona source and working with it.

This group has really stepped beyond the community’s ability to provide support and the problems that people need help with generally require engineering resources to help. When that help is needed, you might get some community response, but most likely we have to stop working on things to help. Because the impact this has on our team, having an optional paid support plan is a good compromise.

Finally there are a hand-full of developers who are likely to want to contribute to Corona to add/change behaviors that our team is unlikely to get to. In this case,the people who are looking at our C++, Objective-C and Java code are really comfortable in that environment and and likely don’t need to pay for support. Some of these people do post in the forums and help with some of the Native questions, but there is a good chance what you’re trying to do may still be out of their area of expertise. 

Rob

OK Corona :wink: You win.

You always win  :smiley:

I just paid for a “Priority Support” plan.

There is actually no urgency to have support, if I can be sure that my problem of Live (hot) reload will be fixed in several months (or maybe years) when my plugin will be finished.

but most likely we have to stop working on things to help.

Yes, I have worked enough years in computing companies to know that it is not possible to stop everything when someone has a stupid problem.

Again, I have no urgency, right now. If I am sure that my problem will be fixed when it will be necessary, I can continue to work on my plugin without worry.

I do not know what is the actual financial situation of Corona, but I wish you a long life.

I use Corona because I don’t have to deal with implementation (some little nuances for sure but generally solid these days). 

I concentrate on my code and just hope the sim compiles it.

Are there things in core I’d love to change?  Yes lots, but c++ is not my happy place.

Thank you!

Does anyone on this thread happen to have any experience with localizing these usage descriptions? I haven’t been able to figure out how to get this to work.