IMQA GUIDE
IMQA자주 묻는 질문개발자 포럼Release Note
KOR
KOR
  • Introduction
    • IMQA 바로가기
    • IMQA 알아보기
    • IMQA 문의하기
  • Installation
    • IMQA 시작하기
    • IMQA 설치 매뉴얼
    • Android
      • 지원 환경
      • 설치 전 확인 사항
      • Sample 앱 테스트
      • MPM 설치
      • MPM 설정
      • Crash 설치
      • Crash 설정
      • 릴리즈 노트
    • iOS
      • 지원 환경
      • 설치 전 확인 사항
      • Sample 앱 테스트
      • MPM 설치
      • MPM 설정
      • Crash 설치
      • Crash 설정
      • 릴리즈 노트
    • React Native
      • Android
      • iOS
      • React Native Library 설정
    • Cordova
      • Android
      • iOS
    • Morpheus
      • Android
      • iOS
    • W Hybrid
    • Web (WPM)
  • User Guide
    • MPM 사용하기
      • 프로젝트 리스트
      • 성능 대시보드
      • A/B 대시보드
      • 화면 성능 분석
      • 성능 상세 분석
      • 행동분석
      • 지역 분석
      • 통계
      • 보고서
      • 알림
      • 관리
    • Crash 사용하기
      • 프로젝트 리스트
      • 대시보드
      • 에러 상세
      • 에러 검색
      • 통계
      • 설정
    • WPM 사용하기
      • 시작하기
      • 프로젝트 리스트
      • 성능 대시보드
      • 페이지 성능 분석
      • 성능 상세 분석
      • 행동분석 역추적
      • 통계
      • 보고서
      • 알림
      • 관리
    • WCrash 사용하기
      • 시작하기
      • 프로젝트 리스트
      • 대시보드
      • 에러 상세
      • 에러 검색
      • 통계
    • IMQA 데이터 읽기
      • MPM - 1. 실시간 모니터링
      • MPM - 2. 전체 모니터링(통계)
      • MPM - 3. 웹뷰 타임라인
      • WPM 데이터 읽기
      • Crash 데이터 읽기
      • WCrash 데이터 읽기
    • IMQA 활용하기
  • FAQ
    • 자주 묻는 질문
      • IMQA 서비스 소개
      • 타 서비스와의 차이점
      • 회원 가입・관리
      • Crash・MPM 설치하기
      • 프로젝트 설정・관리
      • Crash 사용 관련
      • MPM 사용 관련
      • 알림 설정
      • 데이터 이해하기
      • 데이터 수집 / 확인 / 사용량
      • 개인 정보・보안
      • 기타 문의
Powered by GitBook
On this page
  • 1. Component 별 IMQA 설정
  • 함수형 컴포넌트 설정
  • 클래스형 컴포넌트 설정
  • 2. Network 통신 설정
  • Axios 를 사용한 Network 통신 시
  • Fetch 를 사용한 Network 통신 시
  1. Installation
  2. React Native

React Native Library 설정

IMQABridge 추가 방법은 React Native를 이용하여 개발되는 케이스마다 달라질 수 있습니다.

1. Component 별 IMQA 설정

함수형 컴포넌트 설정

React Native 앱 성능 데이터 수집을 위해 Component 화면별로 IMQA 수집 코드를 삽입해주어야 합니다. 해당 수집 코드는 함수형 컴포넌트로 작성되었으며 부모 컴포넌트/ 자식 컴포넌트의 따라 설정이 달라 집니다. 제일 우선적으로 rendering이 이루어 지는 상위 컴포넌트 ( 부모 컴포넌트 ) 해당 컴포넌트에서 import 하여 사용되는 컴포넌트 ( 자식 컴포넌트 ) 를 구분하여 아래 설정을 맞게 적용이 되어야 합니다.

  • ( 부모 컴포넌트 )

../components/MyComponent.tsx ( 부모 컴포넌트 )
// MpmAgent import
import MpmAgent from ‘imqa-react-native-agent’; 

..

const MyComponent = () => {

.. 
useLayoutEffect(() => { 
  // 해당 설정은 화면의 rendering이 이루어 지기전에 호출되어야 하는 함수이므로 
  // 꼭 useLayoutEffect Hook 에서 적용 부탁 드립니다. 
  MpmAgent?.setBehaviorData("MyComponent"); 
}, []);

useEffect(() => {
  // useEffect 함수의 최상단에 위치해야 합니다. 
  MpmAgent?.startReactNativeRender("MyComponent",true); 
  ..

  // useEffect 함수의 최하단에 위치해야 합니다. 
  MpmAgent?.endReactNativeRender("MyComponent",true);
}, []);
..
} 

  • ( 자식 컴포넌트 )

../components/MyChildComponent.tsx ( 자식 컴포넌트 )
// MpmAgent import
import MpmAgent from ‘imqa-react-native-agent’; 

..
const MyChildComponent = () =>

useEffect(() => {
  // useEffect 함수의 최상단에 위치해야 합니다. 
  MpmAgent?.startReactNativeRender("MyChildComponent", false); 

  ..

  // useEffect 함수의 최하단에 위치해야 합니다. 
  MpmAgent?.endReactNativeRender("MyChildComponent", false);
}, []);

클래스형 컴포넌트 설정

React Native 앱 성능 데이터 수집을 위해 Component 화면별로 IMQA 수집 코드를 삽입해주어야 합니다. 해당 수집 코드는 클래스형 컴포넌트로 작성되었으며 부모 컴포넌트/ 자식 컴포넌트의 따라 설정이 달라 집니다. 제일 우선적으로 rendering이 이루어 지는 상위 컴포넌트 ( 부모 컴포넌트 ) 해당 컴포넌트에서 import 하여 사용되는 컴포넌트 ( 자식 컴포넌트 ) 를 구분하여 아래 설정을 맞게 적용이 되어야 합니다.

  • ( 부모 컴포넌트 )

../components/MyComponent.tsx ( 부모 컴포넌트 )
// MpmAgent import
import MpmAgent from ‘imqa-react-native-agent’; 

..

class MyComponent extends React.Component {

..
 
 componentDidMount() {
  // componentDidMount 함수의 최상단에 위치해야 합니다. 
    MpmAgent?.setBehaviorData("MyComponent"); 
    MpmAgent?.startReactNativeRender("MyComponent", true); 
    
    ..

  // componentDidMount 함수의 최하단에 위치해야 합니다. 
    MpmAgent?.endReactNativeRender("MyComponent", true);
 }
..
} 
  • ( 자식 컴포넌트 )

../components/MyChildComponent.tsx ( 자식 컴포넌트 )
// MpmAgent import
import MpmAgent from ‘imqa-react-native-agent’; 

..

class MyChildComponent extends React.Component {

..

 componentDidMount() {
  // componentDidMount 함수의 최상단에 위치해야 합니다. 
  MpmAgent?.startReactNativeRender("MyChildComponent", false); 
  ..

  // componentDidMount 함수의 최하단에 위치해야 합니다. 
  MpmAgent?.endReactNativeRender("MyChildComponent", false);
 }

..
}

2. Network 통신 설정

Axios 를 사용한 Network 통신 시

Axios 라이브러리를 사용하여 Network 통신을 진행하시는 경우 interceptor를 구현하여 네트워크 통신 시 IMQA 수집 코드가 동작할 수 있도록 코드 삽입을 진행해주셔야 합니다.

const axiosInstance = axios.create({
      baseURL:"http://sample-api"
    });
    axiosInstance.interceptors.request.use(
      (config) => {
        Try{
         // network 통신 수집 코드 
          MpmAgent?.startReactNativeNetwork( 
            config.baseURL?.toString(),
            config.url?.toString(),
            config.method?.toString(),
            config.baseURL?.split('://')[0]
          );
        }catch(e){
          console.error(e);
        }
        return config;
      },
      error => {
       // network 통신 시 오류가 발생했을때 아래와 같은형태로 status code를 넣어주셔야 합니다. 
        MpmAgent?.endReactNativeNetwork("500");
      }
    );
    axiosInstance.interceptors.response.use( response => {
      // network 통신 완료 시 status code를 넣어주셔야 합니다. 
      MpmAgent?.endReactNativeNetwork(response.status.toString());
      return response;
    });

Fetch 를 사용한 Network 통신 시

Fetch를 사용하여 Network 통신을 진행하시는 경우네트워크 통신 시 IMQA 수집 코드가 동작할 수 있도록 아래 형태로 코드 삽입을 진행해주셔야 합니다.

let url = "http://sample-api";

// network 통신 시작 전 해당 코드가 적용 되어있어야 합니다.
  MpmAgent?.startReactNativeNetwork( 
      url,
     "/sample",
     "post",
     url?.split('://')[0]);

fetch(url)
  .then(response => {
    MpmAgent?.endReactNativeNetwork(response.status.toString());  
    return response;
  })
  .catch(error => {
    MpmAgent?.endReactNativeNetwork("500");  
  });

Last updated 1 year ago