I have a chat app, and that has an upload function in which the user can upload photos and videos from the gallery or capture one. On iOS, to record video, one needs microphone permission separately (why? - isn't it obvious?). Now whenever I'm trying to submit to App Store, my binary is being rejected because they say:
We noticed that your app requests the user’s consent to access their microphone but does not clarify the use of the microphone in the permission modal alert.
My current permission modal alert text (after several changes) is
Enable microphone access so that you can be heard in the video
And even this latest one was rejected. Is there a better text that I can provide which may be perceived as clearer and my app may pass the review?
Try an easy statement like :
"This app requires the access to Microphone to record your voice memo."
I have this statement in one of my app and it was accepted.
You can use either of these:
1. "We need access to your microphone for adding sounds and uploading them".
2. "We need access to your microphone so that you can add sounds and upload them after choosing".
3. " 'Your ProductName/AppName' uses your microphone to capture audio which is shared with other participants".
4. "We need access to your microphone so that you can record/hear voice messages".
Just simply define the reason why your app is using microphone, i think Fourth one might help you.
Related
I am having trouble understanding the description from apple to access/use the camera in Ios devices.
They wrote
iOS requires that your app provide static messages to display to the
user when the system asks for camera or microphone permission: If your
app uses device camera [...]
(Source)
So do I always need to display a symbol when using the camera? Like a recording flashing?
Or does the "static message" refers the first request for accessing the camera?
Any help appreciated.
The documentation you are referencing is referring to the key/values that you add to your Info.plist that get shown to users when requesting permission to access the calendar or microphone. This presentation is done automatically by the system when you ask for permission to access those devices (via requestAccess for example -- https://developer.apple.com/documentation/avfoundation/avcapturedevice/1624584-requestaccess). The alert gets displayed when the app asks the user for permission and then does not get shown again.
You don't need to "display a symbol when using the camera" in any version of iOS. However, in iOS 14, you will see indicator dots in the status bar (https://support.apple.com/en-us/HT211876) that the system adds when these resources are being used.
I just tried submitting my app and I got an email saying:
This app attempts to access privacy-sensitive data without a usage
description. The app's Info.plist must contain an
NSMicrophoneUsageDescription key with a string value explaining to the
user how the app uses this data.
I am using The Amazing Audio Engine, but I am not using the microphone at all anywhere in my code. So I am assuming Apple is seeing my binary includes TAAE and that has methods involving the microphone, even though they are not being used.
So my question is, is there a way to get around this? Should I remove the headers for the audio recorder files? Or am I forced to have my app give an alert that it needs to use the microphone even though it never will (bleah!!!) ?
Apple can see that there is code that accesses the microphone. There is no way that Apple can tell that during the run of your app, that code isn't actually accessed.
So you have two choices:
Keep using TAAE (which includes code that does access the microphone even if your app doesn't use it), and provide the NSMicrophoneUsageDescription key in Info.plist. The user will never see this as long as your app doesn't ever trigger the use of the microphone.
Eliminate the use of TAAE from your app.
I am writing an app that records an audio file from the user. I noticed that when other apps that do something similar are installed, a window is displayed, warning the user that the app wants to access the microphone, and the user has to explicit give permission to the app to do so.
Does Qt have any API that tells iOS about the intention of the app to access certain devices, which would cause that warning window to be displayed?
Thanks!
You don't have to handle it manually. iOS will automatically ask for permission if the user didn't accept it before.
The very first time your app will need microphone, an alert will be displayed. If the user allows it, he will never see the alert again. If he refuses, he will have to turn it ON manually in iOS settings. Nevertheless, there's maybe a way to handle a previous refusing in-app.
According to AVAudioSession documentation, it seems that I no longer need to request permission. The information below states that the system automatically prompts the user for permission. But I've come across different answers while searching online.
Documentation:
The first time your app’s audio session attempts to use an audio input route while using a category that enables recording, the system automatically prompts the user for permission. In iOS 7.0 and earlier, call requestRecordPermission: to prompt the user at a time of your choosing (see “Audio Session Categories”).
In iOS 8.0 and later, the user will not be asked to grant permission until the application attempt to use audio input.
After the user grants or denies permission, the system remembers the choice for future use in the same app. If the user has denied your app recoding permission or has not yet responded to the permission prompt, any audio recording sessions record only silence.
You still need to have the user grant permission to the microphone, but only when you attempt to use it rather than when the app is first launched. This is great for a plethora of reasons; the most valuable being that you can explain to your user why you need to use the microphone rather than blitzing them with permissions at launch!
I'm trying out this code: http://github.com/akpw/AssetLibraryPhotosViewer to access photos on my iPhone.
However when I run the application, I get an alert that says the application is trying to access my photos - and then I can allow this or decline.
Can I disable this when using the AssetLibrary, or does this message always appear?
If I can't turn this off, and I press "Don't Allow", can I still make the app access my photos?
Following on from answer above. This will appear once. If you allow access then it will not show again and you will have access to the photo's. If you disallow it then you will not be allowed to access this and the alert dialog will not appear again.
This permission can be changed at any time by the user in the settings app (Under Location and Privacy, or a variation of that.) This has been around since iOS 6 I believe.
You are never able to programtically state that access has been granted, the system handles the permissions which are shown to the user.
This is a security feature of the OS that cannot be disabled. If a user does not give your app permission to access the photo library your app will not be able to access any photos. Given this ability your app should be able to handle the situation gracefully from a UI/UX perspective.
For more information take a look at this guide from Apple about iOS security guidelines (page 47 takes about accessing personal data) iOS Security