[react][react native] 하이브리드 웹뷰 방식으로 웹앱 개발하기

밥슌·2024년 10월 29일
0

React

목록 보기
7/16
post-thumbnail

하이브리드 웹뷰 방식으로 단순 정보 제공 앱을 개발하는 방법과 웹 애플리케이션의 개념을 이해하는 것이 이 포스팅의 목표!

  1. 하이브리드 웹뷰 방식으로 앱 개발하기
    하이브리드 웹뷰 앱은 웹 애플리케이션을 웹뷰(WebView)로 감싸서 모바일 앱처럼 패키징하는 방식입니다. 이런 방식은 단순한 정보 제공 앱이나 고사양 기능이 필요 없는 앱에서 유용합니다. 예를 들어, 뉴스 앱, 블로그, 간단한 정보 조회 앱 등이 하이브리드 방식에 적합합니다.

하이브리드 웹뷰 앱 개발 과정

웹 애플리케이션 개발

React, Vue, Angular 같은 프레임워크로 웹 애플리케이션을 개발합니다.
이 웹 애플리케이션은 반응형 디자인으로 작성하여, 모바일 화면 크기에서도 자연스럽게 보이도록 해야 합니다.
API 연동이나 상태 관리를 포함한 모든 기능을 웹 애플리케이션에 구현합니다.

웹 애플리케이션을 모바일 앱으로 감싸기 (웹뷰)

Apache Cordova, Capacitor, Ionic 같은 하이브리드 프레임워크를 사용하여 웹 애플리케이션을 모바일 앱으로 패키징합니다.
이때 웹 애플리케이션은 웹뷰로 불러와지며, 사용자는 마치 앱을 사용하는 것처럼 느끼게 됩니다.
예를 들어, Cordova의 경우 cordova create 명령어로 프로젝트를 생성하고, cordova platform add android 같은 명령어를 통해 Android 플랫폼을 추가하여 앱으로 빌드할 수 있습니다.

앱스토어 배포

Cordova나 Capacitor로 패키징한 앱을 APK(Android)나 IPA(iOS) 형식으로 빌드한 후, Google Play Store나 Apple App Store에 배포할 수 있습니다.
사용자는 이 앱을 앱스토어에서 다운로드하여 설치하게 되고, 앱 아이콘을 눌러 실행하면 웹뷰에 웹 애플리케이션이 로드되어 실행됩니다.

하이브리드 웹뷰 방식의 장점과 단점

장점:

한 번 개발한 웹 애플리케이션을 웹뷰로 감싸기만 하면 모바일 앱으로 사용할 수 있어 개발 효율성이 높습니다.
앱스토어에서 다운로드 가능하므로 사용자에게는 앱처럼 보이게 할 수 있습니다.
업데이트가 필요한 경우, 웹 서버에서 애플리케이션을 수정하면 즉시 반영되어 사용자가 앱을 다시 설치할 필요가 없습니다.

단점:

네이티브 성능이 부족합니다. 복잡한 애니메이션, 고사양 그래픽 등이 포함된 경우 성능이 떨어질 수 있습니다.
카메라, GPS 같은 네이티브 기능은 제약이 있어, 필요할 경우 Cordova의 플러그인이나 Capacitor의 네이티브 API를 추가로 구현해야 합니다.
2. 웹 애플리케이션의 개념: 구글 스토어에서 다운로드되는 앱이 아닌가?
웹 애플리케이션은 기본적으로 브라우저에서 실행되는 웹 기반 소프트웨어입니다. 하지만 하이브리드 웹뷰 방식을 사용하면 앱스토어에서 다운로드할 수 있는 앱처럼 보이도록 패키징할 수 있습니다. 이를 통해 사용자 입장에서는 "앱처럼 보이는 웹 애플리케이션"이 됩니다.

웹 애플리케이션이 앱처럼 보이는 이유
하이브리드 웹뷰 앱이 앱처럼 보이는 이유는 웹 애플리케이션이 웹뷰라는 프레임 안에서 구동되기 때문입니다. 이로 인해 사용자는 브라우저가 아닌 앱 아이콘을 클릭하여 앱을 사용하는 것처럼 느낄 수 있습니다.

예를 들어:

네이버 앱, 카카오톡 앱 내 뉴스 화면처럼 웹뷰를 사용해 웹 콘텐츠를 표시하지만, 사용자는 앱 환경에서 이 웹 콘텐츠를 사용하는 느낌을 받습니다.
앱을 설치하고 실행했을 때, 사실은 앱 내에 있는 웹뷰에서 미리 개발된 웹 애플리케이션이 구동되고 있습니다.
요약: 하이브리드 앱과 네이티브 앱의 차이
하이브리드 앱: 웹 애플리케이션을 웹뷰로 감싸서 앱처럼 보이도록 만든 앱. 앱스토어에 배포할 수 있으며, 기본적으로 웹 기술(HTML, CSS, JavaScript)로 작동.
네이티브 앱: iOS나 Android용으로 각각 별도로 개발된 앱. 네이티브 기능(GPS, 카메라 등)을 완전히 지원하고 성능이 우수함.
하이브리드 웹뷰 앱은 기술적으로는 웹 애플리케이션이지만, 앱스토어에서 설치하여 앱처럼 사용할 수 있도록 만든 것이라고 이해하면 됩니다.

결론

하이브리드 웹뷰 앱: 웹 애플리케이션을 Cordova, Capacitor, Ionic 같은 도구를 사용하여 웹뷰로 감싸고 앱스토어에 배포할 수 있습니다. 이 방식은 단순 정보 제공 앱에 적합하며, 성능이 고사양을 요구하지 않는 경우에 효율적입니다.

웹 애플리케이션과 앱의 차이: 웹 애플리케이션은 기본적으로 웹 브라우저에서 작동하지만, 하이브리드 방식으로 웹뷰를 통해 앱처럼 보이게 만들 수도 있습니다. 앱스토어에서 다운로드할 수 있는 하이브리드 웹뷰 앱은 외형상 앱처럼 보일 수 있지만, 내부적으로는 웹 애플리케이션이 동작하는 것입니다.

따라서, 단순 정보 제공 앱을 하이브리드 웹뷰 방식으로 개발한다면 웹 애플리케이션을 만들어 웹뷰로 감싸 앱처럼 배포하는 방식이 적합합니다.


[react][react native]를 이용한 하이브리드 웹뷰 개발은?

React Native를 이용해 상단/하단 네비게이션과 플로팅 버튼 같은 일부 네이티브 UI 요소를 구현하고, 그 외의 메인 콘텐츠는 React로 개발한 웹 애플리케이션을 웹뷰로 불러오는 방식은 하이브리드 웹뷰 앱이라고 할 수 있습니다.

이 방법은 특히 네이티브 기능이 필요한 부분과 웹 애플리케이션 기능을 혼합할 수 있어, 일부 기능은 네이티브로 구현하면서 나머지 화면을 웹 콘텐츠로 표시하는 방식으로 효율적으로 개발할 수 있습니다.

이 방식의 구조와 특징

React Native로 네이티브 UI를 구현

네비게이션 바, 하단 플로팅 버튼, 탭 네비게이션 등 모바일 앱 특유의 네이티브 UI 요소를 React Native로 구현합니다.
React Native는 네이티브 모듈을 사용할 수 있으므로 카메라, GPS, 푸시 알림 같은 기능도 필요한 경우 쉽게 추가할 수 있습니다.

웹뷰로 React 웹 애플리케이션을 불러오기

react-native-webview 라이브러리를 사용하여, React로 개발된 웹 애플리케이션을 모바일 앱의 메인 콘텐츠로 불러옵니다.
웹 애플리케이션은 서버에 배포해두고, React Native 앱에서 웹뷰를 통해 해당 URL을 로드하여 보여줍니다.

하이브리드 앱처럼 작동

네이티브 UI와 웹 애플리케이션이 혼합된 형태로 작동하게 됩니다.
사용자는 웹 애플리케이션이 웹뷰 안에서 동작하는지 모를 수 있고, 일반 네이티브 앱처럼 느끼게 됩니다.

구현 예시
React Native 프로젝트 생성 및 기본 설정:

bash
코드 복사
npx react-native init HybridApp
cd HybridApp
react-native-webview 설치:

bash

npm install react-native-webview

React Native로 네이티브 UI와 웹뷰 구성:

javascript

import React from 'react';
import { View, Text, TouchableOpacity } from 'react-native';
import { WebView } from 'react-native-webview';

const App = () => {
  return (
    <View style={{ flex: 1 }}>
      {/* 상단 네이티브 네비게이션 */}
      <View style={{ height: 50, backgroundColor: '#0066FF', justifyContent: 'center', alignItems: 'center' }}>
        <Text style={{ color: '#fff', fontSize: 18 }}>My Hybrid App</Text>
      </View>

      {/* 웹뷰로 웹 애플리케이션 로드 */}
      <WebView 
        source={{ uri: 'https://your-web-application-url.com' }} 
        style={{ flex: 1 }}
      />

      {/* 하단 플로팅 버튼 */}
      <TouchableOpacity
        style={{
          position: 'absolute',
          bottom: 20,
          right: 20,
          width: 60,
          height: 60,
          borderRadius: 30,
          backgroundColor: '#0066FF',
          justifyContent: 'center',
          alignItems: 'center',
        }}
        onPress={() => alert('플로팅 버튼 클릭!')}
      >
        <Text style={{ color: '#fff', fontSize: 24 }}>+</Text>
      </TouchableOpacity>
    </View>
  );
};

export default App;
위의 코드는 React Native로 상단 네비게이션과 하단 플로팅 버튼을 구현하고, 웹 애플리케이션은 react-native-webview를 통해 불러오는 방식을 보여줍니다.

이 방식의 장점과 단점
장점
코드 재사용성: 이미 개발된 웹 애플리케이션을 그대로 사용할 수 있어 개발 시간과 비용을 절감할 수 있습니다.
네이티브 기능 활용 가능: React Native로 구현한 네이티브 UI 요소나 네이티브 기능을 쉽게 추가할 수 있습니다.
앱스토어 배포 가능: 패키징한 후 앱스토어에 배포하여 사용자가 앱처럼 설치하고 사용할 수 있습니다.
단점
성능 문제: 웹 애플리케이션이 웹뷰로 로드되기 때문에 웹 뷰의 성능에 의존하게 됩니다. 특히, 네트워크 상태가 좋지 않으면 웹 애플리케이션 로딩이 느려질 수 있습니다.
UI 일관성 문제: 네이티브 UI 요소와 웹뷰 내부의 UI 요소 간에 스타일이나 사용자 경험이 일관되지 않을 수 있습니다.
네이티브와 웹 간의 데이터 통신: 네이티브 UI와 웹 애플리케이션이 데이터를 주고받아야 할 경우, 추가적인 통신 로직을 구현해야 할 수 있습니다. 예를 들어, 웹 애플리케이션의 이벤트를 네이티브 UI와 동기화해야 할 때 웹뷰의 postMessage나 injectJavaScript를 통해 통신을 해야 합니다.
결론
React Native로 일부 네이티브 UI와 기능을 구현하고, 나머지 화면을 웹뷰로 불러와서 웹 애플리케이션을 사용하는 방식도 하이브리드 웹뷰 앱의 한 형태입니다. 특히 네비게이션과 플로팅 버튼 등 UI의 일부를 네이티브로 구현하면서, 웹 애플리케이션을 재사용할 수 있어 개발 효율성이 높아집니다.

이 방식은 단순 정보 제공 앱이나 기본적인 네이티브 기능만 필요한 앱에서 효과적이며, 앱처럼 보이지만 웹의 코드도 활용할 수 있어 효율적으로 개발할 수 있는 방법입니다.

profile
마트 시식코너같은 저의 벨로그에 어서오세요.

0개의 댓글