So we have a lightly customized version of Moodle Mobile that we've been using for about 6 months without issue. But we must have gotten a particularly grumpy reviewer for our latest update, since they're rejecting our app based on parts of it that are the same as stock Moodle Mobile.
First, they didn't like the string Moodle Mobile uses when requesting to use the camera. I've got the same string as stock Moodle Mobile: "We'd like to access your camera to let you take a photo". Personally I think it's pretty obvious what we want the camera for if the user clicks the "edit" button next to their blank profile picture and then selects "Camera" from the "New Picture" dropdown, but apparently Apple disagrees, because they said
Regarding your app’s permission modal alert, the purpose of accessing the user’s camera must be stated within the modal alert.
To resolve this issue, it would be appropriate to revise the permission modal alert to specify why the app is requesting access to the user's camera.
So I updated the string to say "We'd like to access your camera to let you take a photo to use as your profile picture". This works for us because the only time our customized app accesses the camera is when uploading a profile picture, since we got rid of the "My Files" section that allowed you to use the camera to upload photos to your private files. I have no idea what we'll do if we re-enable that feature.
Next, Apple had an issue with the app's use of background audio. I think this comes from the plugin nl.kingsquare.cordova.background-audio which stock Moodle Mobile includes by default. The plugin's description says:
Support an iOS application playing audio in the background.When included within a cordova build then the application will support background audio for iOS out of the box. No further action is necessary.
Anyway, Apple had this to say about it:
We have started the review of your app, but we are not able to continue because we need access to a video that demonstrates the current version of your app in use on a physical iOS device.
Specifically, since your app declares support for audioin the UIBackgroundModes key in your Info.plist, please demonstrate the background audio feature(s) while the app is running in the background.
Please ensure the video you provide shows a physical iOS device (not a simulator).
...which seems pretty excessive to me. But what can you do?
Just thought I'd give a heads up to the Moodle team and anyone else who wants a speedy review.
Actually, I had some trouble getting audio to play in the background in the app. I thought it was supposed to work when I embedded it in HTML (using the "add media" button), but that always faded out on iOS when the app was minimized. The only way I could do it was by adding the MP3 as a file resource and then downloading it fully by clicking the cloud button.
We uploaded the video, but they've rejected us again.
We found that your app records or detects audible content for an indefinite or extended period of time while your app is running in the background.
The audio key is intended for use by apps that provide audible content to the user while in the background, such as music player or streaming audio apps. Please revise your app to provide audible content to the user while the app is in the background or remove the "audio" setting from the UIBackgroundModes key.
Exactly what part of the app is causing them to say it's recording or detecting audio in the background? We've only made minor cosmetic customizations, and have changed nothing related to the recording or playing of audio.
In the end we removed the plugin nl.kingsquare.cordova.background-audio
Any devs have insight into why Apple might have taken issue with an app using this for background audio?
sorry for the delay in answering, it's been some crazy months lately.
I think we've never had issues with Apple because of those things, but it's true that some reviews are more strict than others depending on the reviewer. Sometimes they complain about things that've been published for months!
That plugin was added because some institutions use audios as lectures and they need them to be played while the app is in background. If that's not your case then you can just remove the plugin as you did. If you need the feature, then you should tell Apple why do you need it and add at least one embedded audio to your course so they can test it.