Я использую библиотеку новокаина из: https://github.com/alexbw/novocaine для воспроизведения wav файлы. Я знаю, что у iOS есть собственный API медиаплеера, однако его ограничение заключается в предустановленных эквалайзерах. Мне нужно использовать новокаин, потому что я использую NVDSP https://github.com/bartolsthoorn/NVDSP для реализации 10-полосный графический эквалайзер.
Apple отклонила мое представленное приложение, потому что оно запрашивает доступ к микрофону, но это всего лишь приложение для воспроизведения. Они сказали:
«Запрос разрешения микрофона создается с использованием категорий аудио AVAudioSessionCategoryRecord или AVAudioSessionCategoryPlayAndRecord»
В Novocaine.m модифицировал setupAudio из
UInt32 sessionCategory = kAudioSessionCategory_PlayAndRecord
к каждому из них:
UInt32 sessionCategory = kAudioSessionCategory_MediaPlayback
UInt32 sessionCategory = kAudioSessionCategory_AmbientSound
UInt32 sessionCategory = kAudioSessionCategory_SoloAmbientSound
но в каждом из вышеперечисленных случаев приложение все равно запрашивало доступ к микрофону.
Я просмотрел весь код, и это единственное место, где установлена категория аудиосессии.
Для проверки после каждой модификации вы должны сделать это на iPod:
Настройки -> Общие -> Сброс -> Сброс местоположения и конфиденциальности
в противном случае тест недействителен.
Я прошел через один шаг почти весь код новокаина с помощью отладчика XCode, но это очень сложно диагностировать, потому что всплывающее окно доступа к микрофону отображается только при отображении представления, однако проверка этого происходит намного раньше в коде.
Есть ли в коде какое-либо другое место, которое запрашивает доступ к микрофону или которое влияет на доступ к микрофону в качестве побочного эффекта?
Я использую XCode 5.0.2 (5A3005) с iOS SDK 7.0, и мое единственное тестовое устройство - iPod Touch 5-го поколения.