SlideShare a Scribd company logo
1 of 15
Download to read offline
하이브리드 앱 프레임워크의 구성
어떻게 하이브리드 앱 프레임워크를 구성하는가?
(코르도바 시절의 이야기입니다)
네이티브 매니저
네이티브 매니저
매니저 설명
AViewStackManager 안드로이드의 액티비티, iOS의 뷰 컨트롤러 스택을 관리한다.
예) 뷰스택의 가장 위 컨트롤러를 종료, 뷰스택 전체에 콜백 함수 수행
AViewManager 각종 네이티브 뷰 관련 기능을 관리한다.
예) 토스트 메시지 띄우기, 액티비티(뷰 컨트롤러) 띄우기
AWebViewManager 웹뷰 관련 기능을 관리한다.
예) 웹 페이지 표시하기, 콜백 실행하기
ADeliveryStoreManager 안드로이드의 SQlite, iOS의 NSUserDefaults 에 데이터를 저장한 뒤 웹뷰에서 등록한 콜백이 실행한다.
예) 사진 촬영 파일의 Base64 데이터가 준비되면 웹뷰의 콜백을 호출, 웹뷰에서 사진 데이터를 표시한다.
네이티브 매니저 기능을 조합해 동작 수행
• 네이티브 동작은 각종 매니저의 기능 조합을 통해 이루어진다.
• 위의 동작은 로그아웃 동작으로
• 키체인 매니저에서 계정 관련 정보를 제거한 뒤 뷰스택에 쌓인 뷰들을 차례로 종료하고, 최종적으로 인트로 페이지로 이동하는 동작을 수
행한다.
네이티브 인터페이스
네이티브 인터페이스
• 리퀘스트의 스키마 등을 구분한다.
• 리퀘스트에 해당하는 네이티브 매니저에 파라미터를 전달한다.
• 네이티브 매니저는 해당 파라미터를 바탕으로 각종 네이티브 기능을 수행한다.
예) 토스트 표시하기
뷰 스택 매니저
뷰 컨트롤러
ABaseWebVi
ew
ABaseWeb
ViewActivit
yController
1) ABaseWebViewActivityController 는 최소 한개의 A2BaseWe
bView 와 기타 네이티브 UI 들로 이루어져 있다.
2) 해당 액티비티 컨트롤러가 새 컨트롤러를 띄우면서 앱을 구성하
게 된다.
뷰 스택
ABaseWebVi
ew
ABaseWeb
ViewActivit
yController
1) 웹뷰 컨트롤러에서 웹뷰 컨트롤러를 띄우면 다음과 같은 뷰 스
택이 생성된다.
2) 뷰 스택에서 뷰 컨트롤러가 제거될 때, 미리 지정해둔 동작이 실
행된다. 예) parent 새로 고침 하기 등ABaseWebVi
ew
ABaseWeb
ViewActivit
yController
뷰 스택 - Push
메인 피드 메인 피드
새창A (기본)
메인 피드
새창A (기본)
새창B
(옵션 : 포인트 업데이트 수행)
인트로
P
U
S
H
P
U
S
H
뷰 스택 - Pop
메인 피드
새창 (기본)
메인 피드
새창A (기본)
새창B
(옵션 : 포인트 업데이트 수행)
POP!
포인트 업데이트 수행
딜리버리 스토어
네이티브 메서드, 메시지의 결과 값을
웹뷰에 콜백 방식으로 전달한다.
내부 DB에값 저장
- 안드로이드의 SQLite, iOS의 NSUserDefaults 에 값을 저장합니다.
- CRD 가능, U는 C로 대체합니다.
- 안드로이드의 경우 웹뷰에 직접 값을 리턴할 수 있으나, iOS와 동일한 방식을
사용하기 위해 내부 DB에 값을 저장합니다.
- 웹뷰에서는 다음 처럼 값을 불러와 펑션을 실행할 수 있습니다.
- nativeUtil.deliveryStore.getStoreData(sKey, fCallback);
Order, Arrive
딜리버리 스토어의 동작은 음식점에 배달 음식을 시키는 것을 생각해보면 쉽게 알 수 있습니다.
1) 주문하면
2) 도착한다(받는다)
order 로 키와 콜백을 주문하면 앱 에서 arrive를 호출합니다.
이 때, order에 등록해둔 키와 콜백이 실행됩니다.
1) DeviceInfo 를 주문하고,
2) info() 를 실행시키면 웹뷰가 arrive 를 호출해준다.
3) 이 때, order 에 등록해둔 콜백이 실행된다.

More Related Content

What's hot

Angularjs 도입 선택 가이드
Angularjs 도입 선택 가이드Angularjs 도입 선택 가이드
Angularjs 도입 선택 가이드NAVER D2
 
안드로이드 리스트뷰 속도향상
안드로이드 리스트뷰 속도향상안드로이드 리스트뷰 속도향상
안드로이드 리스트뷰 속도향상운용 최
 
Cappuccino fundamental
Cappuccino fundamentalCappuccino fundamental
Cappuccino fundamentalJeongHun Byeon
 
[XECon+PHPFest 2014] jQuery 개발자에서 AngularJS 개발자 되기
[XECon+PHPFest 2014] jQuery 개발자에서 AngularJS 개발자 되기[XECon+PHPFest 2014] jQuery 개발자에서 AngularJS 개발자 되기
[XECon+PHPFest 2014] jQuery 개발자에서 AngularJS 개발자 되기Jeado Ko
 
Ionic으로 모바일앱 만들기 #2
Ionic으로 모바일앱 만들기 #2Ionic으로 모바일앱 만들기 #2
Ionic으로 모바일앱 만들기 #2성일 한
 

What's hot (7)

Angularjs 도입 선택 가이드
Angularjs 도입 선택 가이드Angularjs 도입 선택 가이드
Angularjs 도입 선택 가이드
 
Hacosa j query 8th
Hacosa j query 8thHacosa j query 8th
Hacosa j query 8th
 
안드로이드 리스트뷰 속도향상
안드로이드 리스트뷰 속도향상안드로이드 리스트뷰 속도향상
안드로이드 리스트뷰 속도향상
 
Web_07_Rails Advanced
Web_07_Rails AdvancedWeb_07_Rails Advanced
Web_07_Rails Advanced
 
Cappuccino fundamental
Cappuccino fundamentalCappuccino fundamental
Cappuccino fundamental
 
[XECon+PHPFest 2014] jQuery 개발자에서 AngularJS 개발자 되기
[XECon+PHPFest 2014] jQuery 개발자에서 AngularJS 개발자 되기[XECon+PHPFest 2014] jQuery 개발자에서 AngularJS 개발자 되기
[XECon+PHPFest 2014] jQuery 개발자에서 AngularJS 개발자 되기
 
Ionic으로 모바일앱 만들기 #2
Ionic으로 모바일앱 만들기 #2Ionic으로 모바일앱 만들기 #2
Ionic으로 모바일앱 만들기 #2
 

Similar to 하이브리드 앱 프레임워크의 구성

Data-binding AngularJS
Data-binding AngularJSData-binding AngularJS
Data-binding AngularJSEunYoung Kim
 
Create App Easier With SVC Pattern - DroidKnights 2019 @Seoul
Create App Easier With SVC Pattern - DroidKnights 2019 @SeoulCreate App Easier With SVC Pattern - DroidKnights 2019 @Seoul
Create App Easier With SVC Pattern - DroidKnights 2019 @SeoulBansook Nam
 
Angularjs, ionic, cordova 기반 syrup store app 개발 사례 공유
Angularjs, ionic, cordova 기반 syrup store app 개발 사례 공유Angularjs, ionic, cordova 기반 syrup store app 개발 사례 공유
Angularjs, ionic, cordova 기반 syrup store app 개발 사례 공유Sang Seok Lim
 
[NEXT] Andorid에 MVC 패턴 적용하기
[NEXT] Andorid에 MVC 패턴 적용하기[NEXT] Andorid에 MVC 패턴 적용하기
[NEXT] Andorid에 MVC 패턴 적용하기YoungSu Son
 
06 멀티뷰 애플리케이션
06 멀티뷰 애플리케이션06 멀티뷰 애플리케이션
06 멀티뷰 애플리케이션Wanbok Choi
 
HOONS닷넷 오픈소스 프로젝트 Part1.
HOONS닷넷 오픈소스 프로젝트 Part1.HOONS닷넷 오픈소스 프로젝트 Part1.
HOONS닷넷 오픈소스 프로젝트 Part1.Hojin Jun
 
Spring mvc
Spring mvcSpring mvc
Spring mvcksain
 
[D2 오픈세미나]3.web view hybridapp
[D2 오픈세미나]3.web view hybridapp[D2 오픈세미나]3.web view hybridapp
[D2 오픈세미나]3.web view hybridappNAVER D2
 
R.java가 사라졌어요 어떻하죠?:Aquery라이브러리와 안드로이드 개발팁
R.java가 사라졌어요 어떻하죠?:Aquery라이브러리와 안드로이드 개발팁R.java가 사라졌어요 어떻하죠?:Aquery라이브러리와 안드로이드 개발팁
R.java가 사라졌어요 어떻하죠?:Aquery라이브러리와 안드로이드 개발팁창규 김
 
V8 add on with middleware modules
V8 add on with middleware modulesV8 add on with middleware modules
V8 add on with middleware modulesJay Kim
 
Vue 뽀개기 1장 환경설정 및 spa설정
Vue 뽀개기 1장 환경설정 및 spa설정Vue 뽀개기 1장 환경설정 및 spa설정
Vue 뽀개기 1장 환경설정 및 spa설정leejungwang
 
캠프앱 개발 사례를 통해 본 하이브리드앱 어디까지 | Devon 2012
캠프앱 개발 사례를 통해 본 하이브리드앱 어디까지 | Devon 2012캠프앱 개발 사례를 통해 본 하이브리드앱 어디까지 | Devon 2012
캠프앱 개발 사례를 통해 본 하이브리드앱 어디까지 | Devon 2012Daum DNA
 
막하는 스터디 네 번째 만남 AngularJs (20151108)
막하는 스터디 네 번째 만남 AngularJs (20151108)막하는 스터디 네 번째 만남 AngularJs (20151108)
막하는 스터디 네 번째 만남 AngularJs (20151108)연웅 조
 
Amazon EC2 제대로 사용하기(김상필) - AWS 웨비나 시리즈 2015
Amazon EC2 제대로 사용하기(김상필) - AWS 웨비나 시리즈 2015Amazon EC2 제대로 사용하기(김상필) - AWS 웨비나 시리즈 2015
Amazon EC2 제대로 사용하기(김상필) - AWS 웨비나 시리즈 2015Amazon Web Services Korea
 
하이브리드앱 아키텍쳐 및 개발 사례
하이브리드앱 아키텍쳐 및 개발 사례하이브리드앱 아키텍쳐 및 개발 사례
하이브리드앱 아키텍쳐 및 개발 사례동수 장
 
H3 2011 하이브리드 앱 아키텍쳐 및 개발방법
H3 2011 하이브리드 앱 아키텍쳐 및 개발방법H3 2011 하이브리드 앱 아키텍쳐 및 개발방법
H3 2011 하이브리드 앱 아키텍쳐 및 개발방법KTH
 

Similar to 하이브리드 앱 프레임워크의 구성 (20)

iOS9 소개
iOS9 소개iOS9 소개
iOS9 소개
 
Data-binding AngularJS
Data-binding AngularJSData-binding AngularJS
Data-binding AngularJS
 
자마린 iOS 멀티화면 컨트롤러_네비게이션 컨트롤러, 루트 뷰 컨트롤러
자마린 iOS 멀티화면 컨트롤러_네비게이션 컨트롤러, 루트 뷰 컨트롤러자마린 iOS 멀티화면 컨트롤러_네비게이션 컨트롤러, 루트 뷰 컨트롤러
자마린 iOS 멀티화면 컨트롤러_네비게이션 컨트롤러, 루트 뷰 컨트롤러
 
Create App Easier With SVC Pattern - DroidKnights 2019 @Seoul
Create App Easier With SVC Pattern - DroidKnights 2019 @SeoulCreate App Easier With SVC Pattern - DroidKnights 2019 @Seoul
Create App Easier With SVC Pattern - DroidKnights 2019 @Seoul
 
Angularjs, ionic, cordova 기반 syrup store app 개발 사례 공유
Angularjs, ionic, cordova 기반 syrup store app 개발 사례 공유Angularjs, ionic, cordova 기반 syrup store app 개발 사례 공유
Angularjs, ionic, cordova 기반 syrup store app 개발 사례 공유
 
[NEXT] Andorid에 MVC 패턴 적용하기
[NEXT] Andorid에 MVC 패턴 적용하기[NEXT] Andorid에 MVC 패턴 적용하기
[NEXT] Andorid에 MVC 패턴 적용하기
 
06 멀티뷰 애플리케이션
06 멀티뷰 애플리케이션06 멀티뷰 애플리케이션
06 멀티뷰 애플리케이션
 
I os 1
I os 1I os 1
I os 1
 
HOONS닷넷 오픈소스 프로젝트 Part1.
HOONS닷넷 오픈소스 프로젝트 Part1.HOONS닷넷 오픈소스 프로젝트 Part1.
HOONS닷넷 오픈소스 프로젝트 Part1.
 
Spring mvc
Spring mvcSpring mvc
Spring mvc
 
[D2 오픈세미나]3.web view hybridapp
[D2 오픈세미나]3.web view hybridapp[D2 오픈세미나]3.web view hybridapp
[D2 오픈세미나]3.web view hybridapp
 
R.java가 사라졌어요 어떻하죠?:Aquery라이브러리와 안드로이드 개발팁
R.java가 사라졌어요 어떻하죠?:Aquery라이브러리와 안드로이드 개발팁R.java가 사라졌어요 어떻하죠?:Aquery라이브러리와 안드로이드 개발팁
R.java가 사라졌어요 어떻하죠?:Aquery라이브러리와 안드로이드 개발팁
 
V8 add on with middleware modules
V8 add on with middleware modulesV8 add on with middleware modules
V8 add on with middleware modules
 
(닷넷,자마린,아이폰실습)Xamarin.iOS HelloWorld 실습_멀티화면,화면전환_Xamarin교육/Xamarin강좌
(닷넷,자마린,아이폰실습)Xamarin.iOS HelloWorld 실습_멀티화면,화면전환_Xamarin교육/Xamarin강좌(닷넷,자마린,아이폰실습)Xamarin.iOS HelloWorld 실습_멀티화면,화면전환_Xamarin교육/Xamarin강좌
(닷넷,자마린,아이폰실습)Xamarin.iOS HelloWorld 실습_멀티화면,화면전환_Xamarin교육/Xamarin강좌
 
Vue 뽀개기 1장 환경설정 및 spa설정
Vue 뽀개기 1장 환경설정 및 spa설정Vue 뽀개기 1장 환경설정 및 spa설정
Vue 뽀개기 1장 환경설정 및 spa설정
 
캠프앱 개발 사례를 통해 본 하이브리드앱 어디까지 | Devon 2012
캠프앱 개발 사례를 통해 본 하이브리드앱 어디까지 | Devon 2012캠프앱 개발 사례를 통해 본 하이브리드앱 어디까지 | Devon 2012
캠프앱 개발 사례를 통해 본 하이브리드앱 어디까지 | Devon 2012
 
막하는 스터디 네 번째 만남 AngularJs (20151108)
막하는 스터디 네 번째 만남 AngularJs (20151108)막하는 스터디 네 번째 만남 AngularJs (20151108)
막하는 스터디 네 번째 만남 AngularJs (20151108)
 
Amazon EC2 제대로 사용하기(김상필) - AWS 웨비나 시리즈 2015
Amazon EC2 제대로 사용하기(김상필) - AWS 웨비나 시리즈 2015Amazon EC2 제대로 사용하기(김상필) - AWS 웨비나 시리즈 2015
Amazon EC2 제대로 사용하기(김상필) - AWS 웨비나 시리즈 2015
 
하이브리드앱 아키텍쳐 및 개발 사례
하이브리드앱 아키텍쳐 및 개발 사례하이브리드앱 아키텍쳐 및 개발 사례
하이브리드앱 아키텍쳐 및 개발 사례
 
H3 2011 하이브리드 앱 아키텍쳐 및 개발방법
H3 2011 하이브리드 앱 아키텍쳐 및 개발방법H3 2011 하이브리드 앱 아키텍쳐 및 개발방법
H3 2011 하이브리드 앱 아키텍쳐 및 개발방법
 

하이브리드 앱 프레임워크의 구성

  • 1. 하이브리드 앱 프레임워크의 구성 어떻게 하이브리드 앱 프레임워크를 구성하는가? (코르도바 시절의 이야기입니다)
  • 3. 네이티브 매니저 매니저 설명 AViewStackManager 안드로이드의 액티비티, iOS의 뷰 컨트롤러 스택을 관리한다. 예) 뷰스택의 가장 위 컨트롤러를 종료, 뷰스택 전체에 콜백 함수 수행 AViewManager 각종 네이티브 뷰 관련 기능을 관리한다. 예) 토스트 메시지 띄우기, 액티비티(뷰 컨트롤러) 띄우기 AWebViewManager 웹뷰 관련 기능을 관리한다. 예) 웹 페이지 표시하기, 콜백 실행하기 ADeliveryStoreManager 안드로이드의 SQlite, iOS의 NSUserDefaults 에 데이터를 저장한 뒤 웹뷰에서 등록한 콜백이 실행한다. 예) 사진 촬영 파일의 Base64 데이터가 준비되면 웹뷰의 콜백을 호출, 웹뷰에서 사진 데이터를 표시한다.
  • 4. 네이티브 매니저 기능을 조합해 동작 수행 • 네이티브 동작은 각종 매니저의 기능 조합을 통해 이루어진다. • 위의 동작은 로그아웃 동작으로 • 키체인 매니저에서 계정 관련 정보를 제거한 뒤 뷰스택에 쌓인 뷰들을 차례로 종료하고, 최종적으로 인트로 페이지로 이동하는 동작을 수 행한다.
  • 6. 네이티브 인터페이스 • 리퀘스트의 스키마 등을 구분한다. • 리퀘스트에 해당하는 네이티브 매니저에 파라미터를 전달한다. • 네이티브 매니저는 해당 파라미터를 바탕으로 각종 네이티브 기능을 수행한다.
  • 9. 뷰 컨트롤러 ABaseWebVi ew ABaseWeb ViewActivit yController 1) ABaseWebViewActivityController 는 최소 한개의 A2BaseWe bView 와 기타 네이티브 UI 들로 이루어져 있다. 2) 해당 액티비티 컨트롤러가 새 컨트롤러를 띄우면서 앱을 구성하 게 된다.
  • 10. 뷰 스택 ABaseWebVi ew ABaseWeb ViewActivit yController 1) 웹뷰 컨트롤러에서 웹뷰 컨트롤러를 띄우면 다음과 같은 뷰 스 택이 생성된다. 2) 뷰 스택에서 뷰 컨트롤러가 제거될 때, 미리 지정해둔 동작이 실 행된다. 예) parent 새로 고침 하기 등ABaseWebVi ew ABaseWeb ViewActivit yController
  • 11. 뷰 스택 - Push 메인 피드 메인 피드 새창A (기본) 메인 피드 새창A (기본) 새창B (옵션 : 포인트 업데이트 수행) 인트로 P U S H P U S H
  • 12. 뷰 스택 - Pop 메인 피드 새창 (기본) 메인 피드 새창A (기본) 새창B (옵션 : 포인트 업데이트 수행) POP! 포인트 업데이트 수행
  • 13. 딜리버리 스토어 네이티브 메서드, 메시지의 결과 값을 웹뷰에 콜백 방식으로 전달한다.
  • 14. 내부 DB에값 저장 - 안드로이드의 SQLite, iOS의 NSUserDefaults 에 값을 저장합니다. - CRD 가능, U는 C로 대체합니다. - 안드로이드의 경우 웹뷰에 직접 값을 리턴할 수 있으나, iOS와 동일한 방식을 사용하기 위해 내부 DB에 값을 저장합니다. - 웹뷰에서는 다음 처럼 값을 불러와 펑션을 실행할 수 있습니다. - nativeUtil.deliveryStore.getStoreData(sKey, fCallback);
  • 15. Order, Arrive 딜리버리 스토어의 동작은 음식점에 배달 음식을 시키는 것을 생각해보면 쉽게 알 수 있습니다. 1) 주문하면 2) 도착한다(받는다) order 로 키와 콜백을 주문하면 앱 에서 arrive를 호출합니다. 이 때, order에 등록해둔 키와 콜백이 실행됩니다. 1) DeviceInfo 를 주문하고, 2) info() 를 실행시키면 웹뷰가 arrive 를 호출해준다. 3) 이 때, order 에 등록해둔 콜백이 실행된다.