16. 왜 웹앱 개발은 험난할까요
1. iOS
UIWebView 와 Safari 의 의도된 성능차
Linked In App을 만드는 과정에서의 실패담
Facebook App을 웹앱으로 만드는 것을 포기
Zynga는 JS Binding 기술을 통해 무엇을?
2. Android
Sencha의 속이 터지는 반응 속도
HTML5 스펙을 제대로 지원하지 못함 (web socket등)
16
18. 하이브리드 앱 개요
1. mobile web application
2. HTML5 + CSS3 + JavaScript
3. JS function -> ObjC method
혹은 그 반대로 지원.
4. 혹은, JS 로 짠 프로젝트가 네이티브 언어로
변환 되는 형태도 존재.
18
19. 명세서
1. HTML로 button을 만듦.
2. 1에서 만든 버튼에서 JS 함수 실행.
3. JS 함수는 같은 이름의 네이티브 메소드 실행.
4. 네이티브 메소드는 확인, 취소가 있는 알림창
을 띄움.
5. 알림창에서 사용자가 누른 버튼을 알려줌.
19
20. 명세서를 구현
1. (HTML) <button>foo</button>
2. (JS) var bar = function () {};
3. (ObjC)
- (void) bar {
UIAlertView *alert = ..
[alert show];
[alert release]
};
20
21. 지금은 구현중입니다.
var Bar = function(){
go to Native, Plz};
-(void) bar : {
Web View
Foo
[UIAlertView show]
return button index
21
26. 폰갭의 단점
1. 플러그인의 구조가 자유롭다 못해 폰갭만의 플
러그인 구조라는 것이 없다.
2. 비동기 호출 밖에 지원할 수 없다.
3. 폰갭만의 개발 구조가 있는 것이 아니므로 각
플랫폼별로 그 특성에 따라야만 한다.
4. 통합 개발 환경을 지원하지 않는다.
26
28. 앱스프레소 브릿지의 지향점
1. 표준 스펙을 정의하고, 그에 따르면 각 플랫폼
에서 동일하게 작동하도록 한다.
2. 동기 / 비동기 호출 지원 할 수 있어야 한다.
기왕이면 W3C 위젯 스펙도 지원하자.
3. 개발구조를 통일함으로써, 플랫폼이 바뀌더라
도 개발언어만 바꾸면 되는 것을 보장한다.
4. 통합 개발 환경을 지원한다.
28
41. 플러그인 프로젝트에서 작업해야 할 것
1. function을 추가하고 구현합니다.
2. (필요할 경우) 스태틱 라이브러리, 프레임웍,
jar 등을 추가합니다.
41
42. 플러그인은 다음의 클래스를 가지고 있습니다
1. AxPlugin
activate / deactivate / execute
2. AxPluginContext
실행될 메소드와 아규먼트에 대한 정보를 가짐.
3. AxRuntimeContext
현재 실행중이 앱 런타임의 정보를 가짐.
42
43. 플러그인 모듈 프로젝트에서 작업해야 할 것
1. activate / deactivate
아규먼트로 AxRuntimeContext 가 들어옴.
플러그인 생성 / 제거시에 불려짐.
43
44. 플러그인 모듈 프로젝트에서 작업해야 할 것
2. execute
아규먼트로 AxPluginContext가 들어옴.
AxPluginContext 에서 method 관련 정보를
얻음.
해당 정보를 토대로 네이티브 코드 작성.
44