웹뷰(WebView)는 네이티브(또는 크로스 플랫폼) 앱에 내재되어 있는 웹 브라우저
(앱이 웹 컨텐츠를 표시하는 데 사용할 수 있는 내장형 브라우저)
이렇게 네이티브 앱 위에 올라가게 되어서 웹뷰가 컨텐츠를 표시해 줌
웹뷰는 크로스 플랫폼에만 있는 것이 아니고 native에도 있음.
즉, 네이티브 언어자체가 지원하고 있는
중 하나
인프콘2023 강의에서 설명한 자료를 참고해 리액트 네이티브를 사용했습니다.
ReactNative를 조금 더 프레임워크화 한 편한 툴
Expo CLI를 사용했습니다!
2-2 webview라이브러리만 설치하면 자동으로 웹뷰로 감싼 프로젝트가 생성되는 줄 알았는데, 직적 import해서 쳐야 함! 아래 코드 복사!
import { WebView } from 'react-native-webview';
export default class App extends Component {
return (
<WebView
source={{ uri: 'https://yourWebProject.com/' }}
/>
);
}
}
그래서 결국 네이티브 개발을 해야함!!!
- 네비게이션 등등
네이티브 개발을 하기 위해선 웹뷰로 감싼 웹 프로젝트와 네이티브가 통신해야 합니다!
웹뷰 속 URL로 연결되어있는 웹 프로젝트에서 앱의 기능을 어떻게 사용할까?
웹뷰 내에서 실행되는 자바스크립트는 기본 시스템 api를 호출할 수 있음
웹뷰는 자바스크립트 언어를 통해 네이티브 기능과 통합할 수 있는게 큰 장점!!
어떻게? 브릿지를 이용한 소통방법 덕분!!
프로퍼티 : 사전에 정의 되어있는 것
메서드 : 동적으로 자유롭게 구현 가능
(삽질금지) injectJavaScript만 사용하더라도, onMessage도 스크린샷과 같이 넣어줘야 받을 수 있다.
추가 설명
- postMessge가 무슨 행동을 직접 하는것이 아님!
- postMessge를 통해 window객체에 이벤트를 바인딩
- postMessge가 전달한 특정 메시지를 window 객체에서 받을 수 있음(onMessage로 받음!)
웹뷰로 앱에서 웹 프로젝트를 단순히 보여주기만 하는 것이 아니라,
이렇게 브릿지 통신방법을 이용해서 네이티브 앱이 제공하는 기능에 접근해 다양한 기능(카메라 접근, 스와이프, 푸쉬알림 등)을 사용할 수 있다.
또한, 앱스토어에 등록하기 위해서는 최소 1개 이상의 네이티브 앱의 기능을 사용해야지 심사가 통과될 수 있다.
(단순히 웹뷰를 통해 웹사이트를 보여주기만 하면 앱으로 이용할 이유가 없기 때문)
https://velog.io/@49crehbgr/IT-네이티브-앱-웹-앱-하이브리드-앱
https://startapp.kr/앱-종류-별-비교-분석-네이티브-앱-하이브리드-앱-웹/
https://velog.io/@1nthek/앱의-종류-네이티브-앱-vs-크로스-플랫폼-앱-vs-하이브리드-앱
https://uknowblog.tistory.com/9#article-1--'플랫폼-시각에서-바라본-어플리케이션-개발-방법'-입니다-