AIR在iOS7上的Microphone权限问题解决

近期提交到AppStore上的应用被拒,原因如下:

2.3 In addition, during review we were prompted to provide consent to use the microphone, however, we were not able to find any features or functionality that use the microphone for audio recording. Please see the attached screenshot's for more information. The microphone consent request is generated by the use of either AVAudioSessionCategoryRecord or AVAudioSessionCategoryPlayAndRecord audio categories. If you do not intend to record audio with your application, it would be appropriate to choose the AVAudioSession session category that fits your application's needs or modify your app to include audio-recording features. ......

大概的意思是说我的应用有请求Microphone权限,但没有使用这个权限。Apple同时发来一张截图:

microphonenedded

但是我清楚的知道,我的应用绝对是没有使用麦克风的。只有某卫士某地图才会无耻地跑去请求发短信权限麦克风权限银行帐号权限……

我错了,那是Android。

下面是调试过程:

  1. 开始怀疑刚刚接入的Facebook SDK,去掉之,无效。
  2. 再怀疑AppleIAP代码,去掉之,无效。
  3. 去掉所有的外部ANE,重新打包,无效。
  4. 安装目前正在AppStore上下载的包,在iOS 7上也会出现这个权限请求。
  5. 看来,是AIR的问题没错了。
  6. 重新制作了一个空的AIR项目,这下正常了,没有再出现这个出现这个权限请求对话框。

花费了半天的时间调试,终于让我明白了原因所在。

原来AIR3.8(和AIR3.8以前)的SDK打包的IPA,只要使用了 Sound.play() 命令,就会出现 Microphone 权限请求。

这是多么蛋疼的一个BUG啊啊啊啊!!!

好在AIR 3.9 beta解决了这个问题,看来只有硬着头皮用Beta了。

我发现的更多Adobe Bug,请看这里: AdobeBug