【发布时间】:2019-05-31 14:09:43
【问题描述】:
我有一个按钮,点击它时我必须检查麦克风权限。
出于这个原因,我这样做了:
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() 被执行,我没有看到麦克风系统警报。 是否可以重新显示系统警报?
【问题讨论】:
-
在这种情况下,用户需要转到“设置”并手动允许录制。这就是系统的工作方式。它认为,如果用户做出了一次选择,应用程序不应通过警报打扰用户
-
顺便说一句,虽然这不太可能成为问题,但作为一般规则,我不建议将
unowned与异步方法结合使用。如果self在此期间被解雇/解除分配怎么办?将[weak self]与self?.goToNextStep()和self?.denied()一起使用...
标签: ios swift avfoundation ios-permissions