我希望用户在应用中使用麦克风,并将相应的密钥添加到info.plist“Privacy-MicrophoneUsageDescription”, 如果用户点击麦克风按钮,许可出现。如果用户点击“允许”,该应用程序工作正常,没有一些问题。但是,如果没有,并再次按下麦克风按钮,应用程序崩溃。如何以编程方式检查NSMicrophoneUsageDescription
我想要的是,以检查NSMicrophoneUsageDescription状态,每次按下按钮时。如果被拒绝,请再次询问用户的许可。
我希望用户在应用中使用麦克风,并将相应的密钥添加到info.plist“Privacy-MicrophoneUsageDescription”, 如果用户点击麦克风按钮,许可出现。如果用户点击“允许”,该应用程序工作正常,没有一些问题。但是,如果没有,并再次按下麦克风按钮,应用程序崩溃。如何以编程方式检查NSMicrophoneUsageDescription
我想要的是,以检查NSMicrophoneUsageDescription状态,每次按下按钮时。如果被拒绝,请再次询问用户的许可。
选择的答案是行不通的requestRecordPermission方法是异步,并在返回语句的正确方法返回值之前它不会改变的PermissionCheck的价值去了解它使用的是完成处理
func askMicroPhonePermission(completion: @escaping (_ success: Bool)-> Void) {
switch AVAudioSession.sharedInstance().recordPermission() {
case AVAudioSessionRecordPermission.granted:
completion(true)
case AVAudioSessionRecordPermission.denied:
completion(false) //show alert if required
case AVAudioSessionRecordPermission.undetermined:
AVAudioSession.sharedInstance().requestRecordPermission({ (granted) in
if granted {
completion(true)
} else {
completion(false) // show alert if required
}
})
default:
completion(false)
}
}
我修改所选的答案,包括完成处理,而不是它有一个return语句
的SWIFT 3:
func askMicroPhonePermission() {
switch AVAudioSession.sharedInstance().recordPermission() {
case AVAudioSessionRecordPermission.granted:
//permissionCheck = true
case AVAudioSessionRecordPermission.denied:
// permissionCheck = false //show alert if required
case AVAudioSessionRecordPermission.undetermined:
AVAudioSession.sharedInstance().requestRecordPermission({ (granted) in
if granted {
//permissionCheck = true
} else {
//permissionCheck = false // show alert if required or completion handler
}
})
default:
break
}
}
很好,我一直在寻找NSMicrophoneUsageDescription类,谢谢:) –
requestRecordPermission方法是异步的,因此它不能用于在return语句之前改变permissionCheck的值。代替Bool返回值,你应该使用完成处理程序 – DatForis
同意,我们应该在这里使用完成处理程序。 – RMRAHUL