Reputation: 1538
I created a framework that has a core c++ component. This framework uses third party libraries and it also can request to access the microphone. I can build this framework using different configurations that allow me to remove things such as microphone access. This is done so that I can re-use the framework in different iOS Apps some of which do need microphone access while others do not.
When I build the framework with the microphone code removed the resulting App keeps getting rejected by the Apple review process saying that I need to specify NSMicrophoneUsageDescription even though I have removed all the calls that reference the iOS Microphone APIs. There is still code in the framework that uses the word 'microphone' or 'recording' but those are methods I've defined in my own interfaces which in this case get bound to no-op implementations. I'm also using the following frameworks for various audio playback. Perhaps their simple inclusion is causing the rejection? "AudioToolbox", "AVFoundation", "CoreAudio", "CoreMedia", "CoreVideo", "OpenAL".
Unfortunately Apple does not provide me with details as to what they are finding so I'm kind of shooting in the dark here.
Based on my research people that have had this problem end up adding the NSMicrophoneUsageDescription or tweaking the description but in my case I actually want to remove it completely.
Is there anything about my setup here that could be causing a problem? Perhaps OpenAL is a red flag since they recently deprecated it? Are there any good tools out there for performing analysis on my binary to find API references that might be showing up as red flags to Apple?
Upvotes: 0
Views: 228
Reputation: 939
If you look at the Apple documentation on the information property list (https://developer.apple.com/documentation/bundleresources/information_property_list) and search on "NSMicrophoneUsageDescription", AVFoundation comes up as the framework associated with that key.
Given this, I would try removing AVFoundation and any references to AVFoundation in your code and then building your app.
Upvotes: 0