我希望用戶在應用中使用麥克風,並將相應的密鑰添加到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