웹뷰에서 다른 App호출 이슈와 성능 이슈

안녕하세요. RN 으로 앱을 개발하고 있는데요.
결제PG 적용을 하였습니다.

Webview 를 이용하여 모바일 web으로 붙였는데 app card 결제시 app 카드 앱 호출이 되지 않는 이슈가 발생하였습니다.

문의를 하였더니 android native webview를 RN webview 으로 한번 더 감싸서 intent 호출이 안될수 있다고 하는데요.
혹시 저와 같은 이슈를 해결한 분이 있다면 조언좀 부탁드리겠습니다.

그리고 일반적인 web view에서 웹을 호출하는데 웹페이지 렌더링이 5~9초 정도 걸리거나 아에 계속 로딩이 되는 폰들이 있는데요.

모바일 웹에서 1초 안되서 로딩되는 페이지 들이 webview로 호출하면 로딩 이슈가 발생되는 폰이 있는데요. 이렇게 느려진는 이슈가 있다면 RN으로 개발하기가 점점 어려워 질것 같은데요.
저와 같은 이슈를 가지고 계시거나 이슈를 해결하신분이 계실까요?

1주일째 해결하기 위해 노력하고 있는데 잘 되지 않네요.

조언부탁드립니다.
RN 버젼인 0.60 입니다

어떤 플랫폼에서 사용하시나요?

안드로이드의 경우 RN webview 내에서 onShouldStartLoadWithRequest 메소드를 이용해 url 바뀔때마다 감지해서 http, https 외의 외부 앱 호출일 경우 react-native-send-intent 등 외부 라이브러리를 이용해 인텐트 호출을 해줘야합니다.
근데 해당 라이브러리는 intent url을 이용해 intent 호출하는 기능이 없어서 저같은 경우엔 해당 라이브러리 포크 후 openAppWithUri라는 함수를 추가해서 사용했습니다. (https://github.com/harudev/react-native-send-intent)
해당하는 기능을 따로 만드셔서 사용하셔도 괜찮을 것 같습니다.
제가 onShouldStartLoadWithRequest에 붙였던 함수 참고하시라고 올려봅니다 (_ _)

private handleNav = (evt): boolean => {
  if (evt.url.startsWith('http://') || evt.url.startsWith('https://') || evt.url.startsWith('about:blank')) {
    return true;
  }

  if (Platform.OS === 'android') {
    SendIntentAndroid.openAppWithUri(evt.url)
      .then(isOpened => {
        if (!isOpened) {
          Toast.show('외부 앱 실행에 실패했습니다');
        }
      })
      .catch(err => {
        console.log(err);
      });
  } else {
    Linking.openURL(evt.url).catch(err => {
      Toast.show('앱 실행에 실패했습니다. 설치가 되어있지 않은 경우 설치하기 버튼을 눌러주세요.');
    });
  }
  return false;
};
1 Like

참고하여 앱카드 호출을 하였는데요.
다른 WebView 다른 부분에서 오류가 발생이 되어 error express를 ignore 로 처리하여
적용해서 해결하였습니다.
감사합니다.

1 Like