麦克风权限未按预期工作

Posted

技术标签:

【中文标题】麦克风权限未按预期工作【英文标题】:Microphone permission not working as intended 【发布时间】:2015-01-08 16:49:33 【问题描述】:

我正在开发一个需要麦克风访问/录音的应用。到目前为止,我认为我的权限处理是有效的,但我的 TestFlight beta 测试人员无法使用麦克风功能,即使它在模拟器和 ios7 测试设备中工作。

这是我的许可代码:

AVAudioSession *session = [AVAudioSession sharedInstance];
    if ([session respondsToSelector:@selector(requestRecordPermission:)]) 
        [session performSelector:@selector(requestRecordPermission:) withObject:^(BOOL granted) 
            if (granted) 
                //granted
            
            else 
                //not granted
                
        
        ];
    else
        //iOS6 seems to be missing this feature -> always available
    

即使在模拟器上重置隐私和位置,我也无法重现提示,这意味着提示永远不会出现。不过,我可以在模拟器上使用麦克风,就好像获得了许可一样。

一件重要的事情是,该应用未在“隐私”下列为麦克风访问应用(显然应该如此)。

如果我打印 iOS8 标志 [AvAudioSession sharedInstance].recordPermission,它始终是 AVAudioSessionRecordPermissionUndetermined,即使在上述权限请求被授予完成后也是如此。

一小段测试代码:

[[AVAudioSession sharedInstance] requestRecordPermission:^(BOOL granted) 
        NSLog(@"GRANTED: %i", granted);
    ];
    NSLog(@"RECORD PERMISSION: %i", [AVAudioSession sharedInstance].recordPermission == AVAudioSessionRecordPermissionUndetermined?1:0);

为我生成输出:"GRANTED: 1""RECORD PERMISSION: 1" 这应该是不可能的,对吧?

这使得它目前无法在 iOS8 下使用我的应用。

【问题讨论】:

【参考方案1】:

模拟器不会提示麦克风访问权限,也不会在隐私下列出它们。它只是允许录音工作。恐怕您必须在真实设备上进行测试。

相关回答:requestRecordPermission does nothing

【讨论】:

以上是关于麦克风权限未按预期工作的主要内容,如果未能解决你的问题,请参考以下文章

在 Postgres 13 中未按预期工作的表设置默认权限

尝试请求用户在 React 应用程序中使用相机和麦克风的权限

Flash 电影不要求访问 Google Chrome 中的麦克风的权限

移植到 iOS 7 的应用程序现在请求麦克风访问权限

远程进程的 Visual Studio 2012 调试未按预期工作

iOS输入麦克风输出蓝牙设备