순번 | 용어 | 설명 |
---|---|---|
1 | 플랫폼화면 | HTML로구성된WEBPage |
2 | Native | Java 로 구성된 Activity 및 class |
3 | 리소스 파일 | HTML 화면을 구성하는 html, css, javascript, image 등을 통칭 |
4 | BaseActivity | 플랫폼 화면을 구성하기 위해 기준이 되는 Activity |
5 | WN | WEB–Native의약자 |
6 | WNInterface | WEB 과 Native 간의 통싞을 위한 class |
7 | Manifest.xml | 플랫폼의 기본 설정 값을 정의하는 파일 |
8 | Application.xml | IDE에서 라이브러리 상태 및 Manfiest.xml 정보를 관리하기 위한 파일 |
(주의) mcore.mobile.lic 파일은 암호화 대상이 아님
(주의) Core 라이브러리 업데이트 시, Addon, Plugin등 기타 라이브러리 업데이트 필요 addon, plugin 등은 Core를 참조하여 생성 되며, Core업데이트 시 업데이트 하지 않으면, 오류가 발생 할 수 있음.
앱 실행 시, 최초 호출은 Startup.java 이며, 라이선스 체크 및 설정 파일 로딩, start-page 호출 순으로 처리됨
페이지 이동 조건 | 설명 |
---|---|
Web –> Native | M.page.activity() 를 이용하여, Native Activity의 화면을 호출 |
Native –> Web | Controller.getInstance().actionMoveActivity() 호출 |
Native –> Native | Controller.getInstance().actionMoveActivity() 호출 |
Native –> Native Back | Controller.getInstance().actionHistoryBack() 호출 |
(참고) 일반적인 안드로이드 개발 방법을 이용해도 동작하지만, 모피어스에서 제공하는 기능을 사용하지 못함.
데이터 유형은 String
구분 | 설명 | Web API | Native API |
---|---|---|---|
파라미터 공유 | - 화면 전환간 데이터 전달 | M.data.param | Parameters |
- URL의 key=value 전달 방식 | |||
전역 데이터 공유 | - Memory 저장 (휘발성) | M.data.global | CommonLibUtil. setVariable |
- 앱 실행 중, set/get | |||
- 앱 종료 시 데이터 삭제 | |||
영속 데이터 공유 | - 스토리지(SharedPreference 저장) | M.data.storage | CommonLibUtil.setUserConfigInfomation |
- 앱 실행 중, set/get |
구분 | 설명 |
---|---|
동기 | native 함수의 return 값이 화면(js)으로 바로 전달되는 방식. |
비동기 | native 함수의 결과 값을 js함수(cb js함수)를 통하여 화면(js)로 전달되는 방식. 함수 호출 시 cb js함수의 전달 또는 prefix된 js함수로 결과 전달이 가능함. |
주의 사항: api 를 제외한 param 의 개수는 ExtendWNInterface에 만들어진 method 의 param 개수와 동일해야 함.
var data = {
name: 'mcore',
param: 'sync'
};
M.execute(“exWNCallSync”, data);
public String exWNCallSync(String params){
Logger.i(params);
try {
JSONObject obj = new JSONObject(params); obj.put("method", "exWNCallSync");
return obj.toString();
} catch (Exception e) {
// TODO: handle exception }
return "";
}
}
Native의 java 함수를 async(비동기)방식으로 호출하는 JS함수.
WEB 호출 에시
var data = {
name: 'mcore',
param: 'async'
};
var callback = M.response.on( function( result ) {
console.log( result );
}).toString()
M.execute(“exWNCallAsync”, data, callback);
public void exWNCallAsync(String params, String callback){
try {
JSONObject obj = new JSONObject(params);
StringBuffer buff = new StringBuffer();
buff.append("javascript:")
.append(callback)
.append("(")
.append(obj.toString())
.append(")");
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT){
webView.evaluateJavascript(buff.toString(), null);
}else{
webView.loadUrl(buff.toString());
}
} catch (Exception e) {
// TODO: handle exception
}
}