拒绝时显示麦克风许可
Show microphone permission when denied
我有一个按钮,点击它时我必须检查麦克风权限。
出于这个原因,我这样做了:
public func askMicrophoneAuthorization()
{
recordingSession = AVAudioSession.sharedInstance()
recordingSession.requestRecordPermission() { [unowned self] allowed in
DispatchQueue.main.async {
if allowed
{
self.goToNextStep()
} else
{
self.denied()
}
}
}
}
我的问题是这样的:当我点击按钮并调用 askMicrophoneAuthorization 方法时,如果这是我第一次请求许可,麦克风系统警报会显示文本插入到 plist 文件中,我可以拒绝或不是许可。如果我拒绝许可,然后我重新点击按钮方法 self.denied() 被执行,我没有看到麦克风系统警报。
是否可以重新显示系统警报?
如果用户已经拒绝,则无法显示系统警报。
您能做的最好的事情就是检查权限,如果他们被拒绝,则显示带有打开应用程序设置的按钮的警报。
func askPermissionIfNeeded() {
switch AVAudioSession.sharedInstance().recordPermission {
case undetermined:
askMicrophoneAuthorization()
case denied:
let alert = UIAlertController(title: "Error", message: "Please allow microphone usage from settings", preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "Open settings", style: .default, handler: { action in
UIApplication.shared.open(URL(string: UIApplication.openSettingsURLString)!)
}))
alert.addAction(UIAlertAction(title: "Cancel", style: .cancel, handler: nil))
present(alert, animated: true, completion: nil)
case granted:
goToNextStep()
}
}
我有一个按钮,点击它时我必须检查麦克风权限。
出于这个原因,我这样做了:
public func askMicrophoneAuthorization()
{
recordingSession = AVAudioSession.sharedInstance()
recordingSession.requestRecordPermission() { [unowned self] allowed in
DispatchQueue.main.async {
if allowed
{
self.goToNextStep()
} else
{
self.denied()
}
}
}
}
我的问题是这样的:当我点击按钮并调用 askMicrophoneAuthorization 方法时,如果这是我第一次请求许可,麦克风系统警报会显示文本插入到 plist 文件中,我可以拒绝或不是许可。如果我拒绝许可,然后我重新点击按钮方法 self.denied() 被执行,我没有看到麦克风系统警报。 是否可以重新显示系统警报?
如果用户已经拒绝,则无法显示系统警报。 您能做的最好的事情就是检查权限,如果他们被拒绝,则显示带有打开应用程序设置的按钮的警报。
func askPermissionIfNeeded() {
switch AVAudioSession.sharedInstance().recordPermission {
case undetermined:
askMicrophoneAuthorization()
case denied:
let alert = UIAlertController(title: "Error", message: "Please allow microphone usage from settings", preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "Open settings", style: .default, handler: { action in
UIApplication.shared.open(URL(string: UIApplication.openSettingsURLString)!)
}))
alert.addAction(UIAlertAction(title: "Cancel", style: .cancel, handler: nil))
present(alert, animated: true, completion: nil)
case granted:
goToNextStep()
}
}