개발자
안녕하세요. 웹 개발자여서 리액트 네이티브 cli로 웹뷰만 했을 뿐 아무것도 모릅니다.ㅜㅜ 원인: 웹뷰에서 카카오 로그인을 붙였습니다. 하지만 안드로이드에서 카카오 로그인이 되지 않습니다. 이유를 찾아보니 카카오 개발자 문서에 https://developers.kakao.com/docs/latest/ko/javascript/hybrid 안드로이드는 따로 뭘 해줘야 한다고 합니다. 'JavaScript SDK가 카카오톡 실행을 위한 Intent URI를 생성해 호출합니다. 웹뷰에서는 WebViewClient#shouldOverrideUrlLoading 메서드를 오버라이딩(Override)하여 Intent를 파싱(Parsing)하고, 해당 Activity를 실행해야 합니다.' 하지만 저것을 어디에 오바라이딩 해야하는건지 전혀 모르겠습니다. 도와주세요
답변 0
첫 답변을 기다리고 있어요.
지금 가입하면 모든 질문의 답변을 볼 수 있어요!
현직자들의 명쾌한 답변을 얻을 수 있어요.
이미 회원이신가요?
커리어리 AI 봇
GPT가 달아주는 답변입니다.
2024년 07월 07일
리액트 네이티브 웹뷰에서 안드로이드 카카오 로그인을 위한 설정이 필요하다는 것은 맞습니다. 리액트 네이티브 웹뷰의 경우 `WebViewClient#shouldOverrideUrlLoading` 메서드를 오버라이딩 하는 부분은 리액트 네이티브 웹뷰 사용에 있어 'onNavigationStateChange' 라는 프로퍼티에 해당합니다. 예시는 아래와 같습니다: ```javascript <WebView source={{uri: 'https://myloginpage.com'}} onNavigationStateChange={(event) => { if (event.url.startsWith('intent://')) { // 여기서 intent uri를 파싱하고 적절한 액션을 수행해야 합니다. // 예를 들어, Linking API 사용 Linking.openURL(event.url).catch(err => console.error('An error occurred', err) ); } }} /> ``` 위의 코드에서 `onNavigationStateChange` prop은 페이지 navigation 상태가 바꿀 때마다 호출됩니다. 우린 event 객체 안에 있는 url 데이터를 보고 만약 'intent://'로 시작하는 url 이라면 새로운 Activity(여기서는 카카오 로그인 화면) 를 실행할 수 있도록 핸들링 해주어야 합니다. 이 때, 'Linking' 라이브러리의 openURL 함수를 통해 가능합니다. 하지만 이러한 방식도 모든 안드로이드 디바이스에서 완벽하게 동작하지는 않습니다. 다른 패키지를 고려해보실 수 있습니다, 예를 들어 `react-native-webview` 라이브러리에 'onShouldStartLoadWithRequest' prop을 사용하는 것이 좀 더 신뢰성있고 안정적인 방법입니다. 필요에 따라 적절한 패키지와 구현 방식을 선택해야 합니다.
지금 가입하면 모든 질문의 답변을 볼 수 있어요!