3.E 优化:权限被拒绝时的 Alert 增加"去授权"跳转按钮
iOS 行为约束:用户在系统权限对话框选择"拒绝"后,再次调 requestRecordPermission 不会再弹对话框、直接返回 false。唯一恢复路径 是用户手动去「设置 → app → 麦克风」开启。 原 Alert 只有"确定"按钮(对齐 daoqi),用户被拒绝后需要自己摸索路径 去设置。优化为两按钮: - "取消":关闭 Alert - "去授权":UIApplication.open(openSettingsURLString) 直接跳本 app 的设置页 文案保留 daoqi NewRootVC.m:316 的引导语("需要访问您的麦克风,请启用 麦克风-设置/隐私/麦克风!")。 属于 UX 改进,对 H5 不可见,不影响契约(按钮属于 native 内部 UI, 原则 B 范畴)。
This commit is contained in:
@@ -338,13 +338,25 @@ public enum RemoteAudioHandler {
|
||||
|
||||
@MainActor
|
||||
private static func showMicrophonePermissionAlert(on hostVC: UIViewController?) {
|
||||
// 对齐 daoqi NewRootVC.m:316 文案("{gamehallname}需要访问您的麦克风...")
|
||||
// 用户已拒绝麦克风权限时调用。iOS 不允许再次主动弹系统权限对话框
|
||||
// (requestRecordPermission 在 .denied 状态下不再弹窗、直接返回 false),
|
||||
// 唯一恢复路径是用户手动去「设置 → app → 麦克风」开启。
|
||||
//
|
||||
// 文案保留 daoqi NewRootVC.m:316 的引导语;按钮提供「去授权」直接跳
|
||||
// app 设置页(比 daoqi 仅"确定"更易用),「取消」关闭 Alert。
|
||||
let alert = UIAlertController(
|
||||
title: nil,
|
||||
message: "需要访问您的麦克风,请启用麦克风-设置/隐私/麦克风!",
|
||||
preferredStyle: .alert
|
||||
)
|
||||
alert.addAction(UIAlertAction(title: "确定", style: .default))
|
||||
alert.addAction(UIAlertAction(title: "取消", style: .cancel))
|
||||
alert.addAction(UIAlertAction(title: "去授权", style: .default) { _ in
|
||||
// 跳转到本 app 在「设置」中的页面。用户在此页打开麦克风开关后回到
|
||||
// app,状态自动变为 .authorized,下次 prepareaudio 走正常分支。
|
||||
if let url = URL(string: UIApplication.openSettingsURLString) {
|
||||
UIApplication.shared.open(url)
|
||||
}
|
||||
})
|
||||
hostVC?.present(alert, animated: true)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user