checkAuthorizationStatus 및 RequestAuthorization 약속 방법 추가
묘사
은 checkAuthorizationStatus promise 방법을 추가하여 응용 프로그램이 마이크를 사용할 수 있는 권한을 부여받았는지 확인합니다.확인되지 않음, 부여됨 또는 거부됨이 있는 문자열을 반환합니다.마이크 사용 권한을 요청하는 Request Authorization promise 메서드가 추가되었습니다.허용하면true로 돌아가고, 거부하면false로 돌아갑니다.
다음은 코드를 사용하는 방법의 예입니다.
// checkAuthorizationStatus
AudioRecorder.checkAuthorizationStatus()
.then((result) => {
switch(result) {
case "undetermined":
// Recording permission has not been requested
break;
case "denied":
// Recording permission has been denied. Explain to user that they
// need to go to settings and enable microphone access
break;
case "granted":
// Recording permission has been granted.
break;
}
})
.catch((err) => {
console.error(err.message);
});
// requestAuthorization
AudioRecorder.requestAuthorization()
.then((granted) => {
if(granted) {
// User granted permission to use the microphone
} else {
// User did not give permission to use the microphone
}
});
토론 #1
:+1:토론 #2
녹화를 어떻게 사용하는지 예시를 보여 주시겠어요?나는 녹음을 시뮬레이터에서 작동시킬 수 있지만, 그것은 설비에서 작동하지 않는다.어떻게 권한 수여를 요구합니까?토론 #셋
@Fatxx 예제 코드:https://github.com/jsierles/react-native-audio/tree/master/AudioExample토론 #4
@wootwoot1234, 나와 @Fatxx는 같은 문제가 있습니다. 이 예를 보았지만,토론 #5
@wootwoot1234를 어디서 요청했는지 발견하지 못했습니다. 답변해 주셔서 감사합니다. 그러나 그 안에는 권한 수여 논리가 없는 것 같습니다.토론 #6
약속을 해결하려던 중 오류가 발생했습니다.ExceptionsManager.js:76 Exception 'The RCTPromiseResolveBlock must be the second to last parameter in -[AudioRecorderManager requestAuthorization:(RCTPromiseResolveBlock)resolve]' was thrown while invoking requestAuthorization on target AudioRecorderManager with params (
4,
5
)
토론 #7
@squerozmello, 다음 코드가 유용합니까?@Fatxx, 당신의 코드를 발표할 수 있습니까?
이것이 바로 내가 코드에서 사용한 내용이다.
AudioRecorder.checkAuthorizationStatus()
.then((result) => {
switch(result) {
case "undetermined":
// Recording permission has not been requested
AudioRecorder.requestAuthorization()
.then((granted) => {
if(granted) {
// User granted permission to use the microphone
this.setState({
hasPermission: false
});
var title = "Need Access to Microphone";
var message = 'To enable access click the Settings button below and enable the microphone.';
this.openPrompt(
title,
message,
()=>{
this.closePrompt();
this.goToSettings();
},
this.closePrompt.bind(this),
"Settings",
);
} else {
// User did not give permission to use the microphone
this.setState({
hasPermission: true
});
// Ok, permission was granted, set hasPermission and call record audio again.
this.recordAudio();
}
});
break;
case "denied":
// Recording permission has been denied. Explain to user that they
// need to go to settings and enable microphone access
this.setState({
hasPermission: false
});
var title = "Need Access to Microphone";
var message = 'To enable access click the Settings button below and enable the microphone.';
this.openPrompt(
title,
message,
()=>{
this.closePrompt();
this.goToSettings();
},
this.closePrompt.bind(this),
"Settings",
);
break;
case "granted":
// Recording permission has been granted.
this.setState({
hasPermission: true
});
// Ok, permission was granted, set hasPermission and call record audio again.
this.recordAudio();
break;
}
})
.catch((err) => {
console.error(err.message);
});
토론 #8
@Fatxx 에뮬레이터에서 작동하지만 장치에서 작동하지 않으면 장치의 설정 응용 프로그램에서 마이크가 응용 프로그램에 활성화되었는지 확인하십시오.토론 #9
내 프로그램 '설정' 에는 '이동 데이터' 옵션만 있습니다.plist에 키를 추가해야 합니까?토론 #10
마이크 사용 허가를 요청하면 설정에 나타날 것 같습니다. (제가 틀렸을 수도 있습니다.)보아하니 너는 아직 허가를 신청하지 않은 것 같다.너의 코드를 발표해라, 그러면 나는 네가 무엇을 하는지 볼 수 있을 것이다.토론 #11
class Jam extends Component {
constructor(props) {
super(props);
shouldCreateJamDir();
console.log('before')
AudioRecorder.checkAuthorizationStatus()
.then((result) => {
console.log('result', result)
debugger;
switch(result) {
case "undetermined":
AudioRecorder.requestAuthorization()
.then((granted) => {
debugger;
if (granted) {
// User granted permission to use the microphone
} else {
// User did not give permission to use the microphone
}
});
// Recording permission has not been requested
break;
case "denied":
// Recording permission has been denied. Explain to user that they
// need to go to settings and enable microphone access
break;
case "granted":
// Recording permission has been granted.
break;
}
})
.catch((err) => {
console.error(err.message);
});
this._handleSendTo = this._handleSendTo.bind(this);
this._handleJamButtonPress = this._handleJamButtonPress.bind(this);
}
componentDidMount() {
var record_audio_path = AudioUtils.LibraryDirectoryPath + '/test.caf';
AudioRecorder.prepareRecordingAtPath(record_audio_path);
AudioRecorder.onProgress = (audio) => {
this.props.setJamState({duration: audio.currentTime.toFixed(2)});
};
AudioPlayer.onProgress = (audio) => {
let currentTime = audio.currentTime;
console.log('currentTime', currentTime);
console.log('this.props.jam.duration', this.props.jam.duration);
};
AudioRecorder.onFinished = (data) => {
this.props.setJamState({
jam_file: record_audio_path,
isReadyToShare: true,
recording: false,
playing: false
});
};
}```
토론 #12
@wootwot1234 문제는 제가 설정 중에 설정하지 않았기 때문에 결과적으로 장치에서'거부'로 되돌아왔습니다.토론 #13
은 어떻게 권한을 신청합니까?2016년 4월 13일 수요일,[email protected]쓰기:
I think it will show up in settings when you request permission to use the microphone (I might be wrong). Looks like you haven't requested permission. Post your code so I can see what you're doing.
— You are receiving this because you were mentioned. Reply to this email directly or view it on GitHub https://github.com/jsierles/react-native-audio/pull/47#issuecomment-209155379
카무프레만토스,
André Fatia
토론 #14
죄송합니다. 코드에 무슨 문제가 생겼는지 잘 모르겠습니다.이 코드를 componentDidMount() 메서드에 추가해 보셨습니까?너는 모든 다른 방법으로 모든 다른 물건을 주석해 버릴 것을 확보해라.// requestAuthorization
AudioRecorder.requestAuthorization()
.then((granted) => {
if(granted) {
// User granted permission to use the microphone
} else {
// User did not give permission to use the microphone
}
});
토론 #15
네, 있습니다. 실수를 던졌습니다.당신은 당신의 알림 구성 요소를 제공할 수 있습니까?토론 #16
당신의 코드가 어떻게 된 것인지 확실하지 않지만, 테스트 중인 코드와 당신이 얻은 오류를 발표해야 합니다. 그렇지 않으면 당신을 돕기 어려울 것입니다.당신은 다른 테스트할 수 있는 설비가 있습니까?설비가 아니라 시뮬레이터에서 일한다고요?토론 #17
프로그램이 위의 코드로 초기화되었을 때 이 오류가 발생했습니다:Exception 'The RCTPromiseResolveBlock must be the second to last parameter in -[AudioRecorderManager requestAuthorization:(RCTPromiseResolveBlock)resolve]' was thrown while invoking requestAuthorization on target AudioRecorderManager with params (
6,
7
)
설정을 터치하는 방법만 알면 됩니다...토론 #18
@wootwot1234 어떻게 생각하세요?토론 #19
이것은 개원 프로젝트라는 것을 기억하세요. 제가 당신을 도와준 것은나는 원하지 않는다. 왜냐하면 나는 필요하기 때문이다.저는 지금 제 일로 바빠요.
오직 네가 나의 모든 문제에 대답해야만 너를 도울 수 있다.
2016년 4월 13일 오전 10시 45분, 안드레 루즈 파티아 [email protected] amp#106;amp#97;amp#118;amp#97;amp#115;amp#99;amp#114;amp#105;amp#112;amp#116;amp#58;amp#95;amp#101;amp#40;amp#37;amp#55;amp#66;amp#37;amp#55;amp#68;amp#44;amp#39;amp#99;amp#118;amp#109;amp#108;amp#39;amp#44;amp#39;amp#110;amp#111;amp#116;amp#105;amp#102;amp#105;amp#99;amp#97;amp#116;amp#105;amp#111;amp#110;amp#115;amp#64;amp#103;amp#105;amp#116;amp#104;amp#117;amp#98;amp#46;amp#99;amp#111;amp#109;amp#39;amp#41;amp#59;:
@wootwoot1234https://github.com/wootwoot1234무슨 생각 있어요?
—
네가 이 편지를 받은 것은 누군가가 너를 언급했기 때문이다.
이 e-메일에 직접 회신하거나 GitHub에서 보기
https://github.com/jsierles/react-native-audio/pull/47#issuecomment-209518647
토론 #20
죄송합니다. 저는 5s와 6s l토론 #21
에서 테스트를 진행했습니다. iOS 개발자 두 명과 연락을 했습니다. 우리는 팝업 경보를 받을 수 없습니다. 권한 수여 변수는false토론 #22
으로 돌아가 새로운react 본체 프로젝트를 만들고 이 모듈을 추가한 다음에componentDidMount 메서드, 녹화를 시작합니다.하면, 만약, 만약...
프로젝트의 일부분을 새 프로젝트에 넣으면 프로젝트가 중단될 때까지 알 수 있습니다
뭐가 문제야?너는 방문을 요청할 필요가 없다. 너는 할 수 있다
녹음을 시작하면 프로그램이 스스로 접근을 요청할 것입니다.
새 프로젝트를 만드는 것이 작동하지 않으면 오류 및
너의 색인.네트워크 운영 체제.js 파일, 이렇게 하면 코드를 볼 수 있습니다.
2016년 4월 13일 수요일, 안드레 루즈 파티아[email protected]
쓰기:
I was already in touch with 2 iOS developers and we can't get the alert to pop up, granted variable always return false
— You are receiving this because you were mentioned. Reply to this email directly or view it on GitHub https://github.com/jsierles/react-native-audio/pull/47#issuecomment-209645819
토론 #23
감사합니다 톰, 우리는 이미 새로운 프로젝트를 창설했습니다. 당신의 모듈은 정상적으로 작동합니다.그래서아마도 우리의 의존 관계나 설정이 뭔가를 파괴했을 것이다.
어쨌든 고맙습니다
2016년 4월 13일 수요일,[email protected]쓰기:
Try creating a new react native project, add this module and then in the componentDidMount method, try to start a recording. If that works, add in parts of your project into the new project until it breaks and you'll know where your problem is. You shouldn't need to request access, you can just start a recording and the app will request access on it's own.
If creating a new project doesn't work, post the error and the contents of your index.ios.js file so I can see the code.
On Wednesday, April 13, 2016, André Luz Fatia [email protected] amp#106;amp#97;amp#118;amp#97;amp#115;amp#99;amp#114;amp#105;amp#112;amp#116;amp#58;amp#95;amp#101;amp#40;amp#37;amp#55;amp#66;amp#37;amp#55;amp#68;amp#44;amp#39;amp#99;amp#118;amp#109;amp#108;amp#39;amp#44;amp#39;amp#110;amp#111;amp#116;amp#105;amp#102;amp#105;amp#99;amp#97;amp#116;amp#105;amp#111;amp#110;amp#115;amp#64;amp#103;amp#105;amp#116;amp#104;amp#117;amp#98;amp#46;amp#99;amp#111;amp#109;amp#39;amp#41;amp#59; wrote:
I was already in touch with 2 iOS developers and we can't get the alert to pop up, granted variable always return false
— You are receiving this because you were mentioned. Reply to this email directly or view it on GitHub < https://github.com/jsierles/react-native-audio/pull/47#issuecomment-209645819
—
당신이 이 소식을 받은 것은 당신이 평론을 발표했기 때문입니다.
이 e-메일에 직접 회신하거나 GitHub에서 보기
https://github.com/jsierles/react-native-audio/pull/47#issuecomment-209674373
카무프레만토스,
André Fatia토론 #24
에서 문제점을 발견하면 해결 방안을 이 게시물에 올리면 다른 사람들을 도울 수 있습니다.행운을 빕니다!On Apr 13, 2016, at 3:33 PM, André Luz Fatia [email protected] wrote:
Thank you Tom we already created a new project and your module worked. So it's probably our dependencies or settings that are breaking something. Thanks anyway
On Wednesday, 13 April 2016, Tom [email protected] wrote:
Try creating a new react native project, add this module and then in the componentDidMount method, try to start a recording. If that works, add in parts of your project into the new project until it breaks and you'll know where your problem is. You shouldn't need to request access, you can just start a recording and the app will request access on it's own.
If creating a new project doesn't work, post the error and the contents of your index.ios.js file so I can see the code.
On Wednesday, April 13, 2016, André Luz Fatia [email protected] amp#106;amp#97;amp#118;amp#97;amp#115;amp#99;amp#114;amp#105;amp#112;amp#116;amp#58;amp#95;amp#101;amp#40;amp#37;amp#55;amp#66;amp#37;amp#55;amp#68;amp#44;amp#39;amp#99;amp#118;amp#109;amp#108;amp#39;amp#44;amp#39;amp#110;amp#111;amp#116;amp#105;amp#102;amp#105;amp#99;amp#97;amp#116;amp#105;amp#111;amp#110;amp#115;amp#64;amp#103;amp#105;amp#116;amp#104;amp#117;amp#98;amp#46;amp#99;amp#111;amp#109;amp#39;amp#41;amp#59; wrote:
I was already in touch with 2 iOS developers and we can't get the alert to pop up, granted variable always return false
— You are receiving this because you were mentioned. Reply to this email directly or view it on GitHub < https://github.com/jsierles/react-native-audio/pull/47#issuecomment-209645819
—
당신이 이 소식을 받은 것은 당신이 평론을 발표했기 때문입니다.
이 e-메일에 직접 회신하거나 GitHub에서 보기
https://github.com/jsierles/react-native-audio/pull/47#issuecomment-209674373
카무프레만토스,
안드레 파티아
—
네가 이 편지를 받은 것은 누군가가 너를 언급했기 때문이다.
이 e-메일에 직접 회신하거나 GitHub에서 보기토론 #25
@wootwot1234 도와 주셔서 감사합니다!그 비밀번호가 많이 도와줬어요!제일 좋은토론 #26
은 아마 이거일 거예요.https://github.com/zmxv/react-native-sound이거 깨진 도서관.따라서 같은 문제가 있으면 이것을 삭제해 보세요.
Reference
이 문제에 관하여(checkAuthorizationStatus 및 RequestAuthorization 약속 방법 추가), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://github.com/jsierles/react-native-audio/issues/47텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)