====== Core ====== Core Library 를 MCore 라고 부른다. ------ MCore ------ MCore Framework 에 대한 필수 API 를 정의 Common Event ============= * 화면 Page 의 생성,이동,제거 시 WebView의 Native 상태에 따라서 Event 함수들이 자동으로 호출 * 각 Event 함수들은 중복으로 여러개 등록이 가능하며, 사용하려고 하는 함수들만 등록 하여 사용 .. js:function:: M.onReady( handler ) .. versionchanged:: 2.1.0 :param Function handler: Event Handler .. js:function:: handler( event ) :param event: 이벤트 객체 :type event: :ref:`PageEventObject` * 화면 로딩이 최종 완료시 한번만 호출 * 데이타 초기화, 서버로의 데이타 요청 등에 사용 * iframe 등 으로 외부 페이지 오픈시 iframe 내 페이지까지 모두 완료되야 호출됨 * DOM Content Loaded 와는 별개로 동작함 Example: .. code-block:: javascript M.onReady( function(e) { // TODO : ready event handle code here }); .. js:function:: M.onHide( handler ) .. versionchanged:: 2.1.0 :param Function handler: Event Handler .. js:function:: handler( event ) :param event: 이벤트 객체 :type event: :ref:`PageEventObject` * 화면 이동 바로 현재 페이지에서 호출 * 현재 화면의 데이타 저장 및 처리 등에 사용 Example: .. code-block:: javascript M.onHide( function(e) { // TODO : hide event handle code here }); .. js:function:: M.onRestore( handler ) .. versionchanged:: 2.1.0 :param Function handler: Event Handler .. js:function:: handler( event ) :param event: 이벤트 객체 :type event: :ref:`PageEventObject` * 해당 화면으로 다시 돌아왔을 때 호출 * 데이타 갱신 등에 사용 Example: .. code-block:: javascript M.onRestore( function(e) { // TODO : restore event handle code here }); .. js:function:: M.onBack( handler ) .. versionchanged:: 2.1.0 :param Function handler: Event Handler .. js:function:: handler( event ) :param event: 이벤트 객체 :type event: :ref:`PageEventObject` * 단말기에서 Back 키가 눌려졌을때 호출 (Only Android) Example: .. code-block:: javascript M.onBack( function(e) { // TODO : back event handle code here (android only) }); .. js:function:: M.onPause( handler ) .. versionchanged:: 2.1.0 :param Function handler: Event Handler .. js:function:: handler( event ) :param event: 이벤트 객체 :type event: :ref:`PageEventObject` * 현재 앱이 Background 상태로 바뀔때 현재 화면에서 호출 Example: .. code-block:: javascript M.onPause( function(e) { // TODO : pause event handle code here }); .. js:function:: M.onResume( handler ) .. versionchanged:: 2.1.0 :param Function handler: Event Handler .. js:function:: handler( event ) :param event: 이벤트 객체 :type event: :ref:`PageEventObject` * Bakcground 상태의 앱이 다시 Forground 상태로 바뀔때 현재 화면에 호출 Example: .. code-block:: javascript M.onResume( function(e) { // TODO : resume event handle code here }); .. js:function:: M.onDestroy( handler ) .. versionchanged:: 2.1.0 :param Function handler: Event Handler .. js:function:: handler( event ) :param event: 이벤트 객체 :type event: :ref:`PageEventObject` * 화면이 메모리에서 제거될때 마지막으로 호출 * 데이타 보존이나 마무리를 위한 처리 등에 사용 * 단, 앱의 종료시에는 호출되지 않음 Example: .. code-block:: javascript M.onDestroy( function(e) { // TODO : destroy event handle code here }); Event Flow ============ Event Flow Navigator Object ================= .. js:function:: M.navigator.os() .. js:function:: M.navigator.os( os ) :rtype: Boolean .. js:function:: M.navigator.device() {os: "iOS", version: "9.2.1", tablet: false, mobile: true} .. js:function:: M.navigator.device( os, version ) :rtype: Boolean Example: .. code-block:: javascript if ( M.navigator.device("ios") == true ) { // iOS인 경우 if ( M.navigator.device("ios", "9") == true ) { // iOS 9 버전인 경우 } } .. js:function:: M.navigator.browser() {name: "other", version: ""} .. js:function:: M.navigator.browser( name, version ) :rtype: Boolean Page API ========= 화면 이동에 대한 API 를 제공 .. _ActionType: Action Type ------------ ============ ===== ============= Type Int Description ============ ===== ============= NEW_SCR 0 대상이 되는 화면을 추가 NO_HISTORY 1 대상이 되는 화면을 Stack 에 포함하지 않음 CLEAR_TOP 2 대상이 되는 이전 화면으로 이동. 이동시 현재 화면 사이의 모든 화면은 제거됨. ============ ===== ============= .. _OrientationType: Orientation Type ----------------- * 모든 Orientation 값은 Application 설정에 영향을 받음 * Manifest.xml 에서도 orient 값이 DEFAULT 인 경우 Application 설정의 첫번째 값을 적용 ======================= ===== ============= Type Int Description ======================= ===== ============= **DEFAULT** 0 Manifest.xml 에서 설정한 orient 값 적용 **PORTRAIT** 1 세로모드, 홈버튼이 아래인 세로 방향으로 회전 유지 PORT 1 PORTRAIT 을 축약 **LANDSCAPE** 2 가로모드, 왼쪽 회전된 상태 유지 LAND 2 LANDSCAPE 를 축약 **PORTRAIT|REVERSE** 3 세로모드, 세로 방향만 허용, 회전 가능 PORT|REVERSE 3 PORTRAIT 을 축약 PORTREV 3 PORTRAIT|REVERSE 를 축약 **LANDSCAPE|REVERSE** 4 가로모드, 가로 방향만 허용, 회전 가능 LAND|REVERSE 4 LANDSCAPE 를 축약 LANDREV 4 LANDSCAPE|REVERSE 를 축약 **ALL** 5 모든 방향으로 허용 ======================= ===== ============= .. _AnimationType: Animation Type ---------------- * Manifest.xml 에서도 animate 값이 DEFAULT 인 경우 SLIDE_LEFT 적용 ================ ===== ============= Type Int Description ================ ===== ============= DEFAULT 0 Manifest.xml 에서 설정한 animate 값 적용 NONE 1 애니메이션 효과 없음 SLIDE_LEFT 2 왼쪽으로 이동되는 슬라이드 효과 SLIDE_RIGHT 3 오른쪽으로 이동되는 슬라이드 효과 SLIDE_TOP 4 위쪽으로 이동되는 슬라이드 효과 SLIDE_BOTTOM 5 아래쪽으로 이동되는 슬라이드 효과 ZOOM_IN 6 줌인 효과 ZOOM_OUT 7 줌아웃 효과 FADE 8 페이드 효과 MODAL_UP 9 원본 화면은 고정되어 있고 대상 화면만 위쪽으로 이동되는 슬라이드 효과 MODAL_DOWN 10 원본 화면은 고정되어 있고 대상 화면만 아래쪽으로 이동되는 슬라이드 효과 ================ ===== ============= .. _PageEventObject: Page Event Object ------------------- * 현재 화면 정보를 담은 이벤트 객체 ====================== ========== ============= Key Type Description ====================== ========== ============= action String Page Action ( :ref:`ActionType` ) orient String Page Orientation ( :ref:`OrientationType` ) params Object Page Parameters, Event 발생시 현재 Page의 Parameters 값 (허용 사이즈 : 1Mb) path String Page 경로값 filename String Page 의 파일명 alias String Page 의 Alias 경로 source String Page 의 Source 경로 browser String Brower Name browserVer String Browser Version device Object Device 정보 device.mobile Boolean Mobile 여부 device.tablet Boolean Tablet 여부 device.os String OS 값 ( ios: iOS, android: Android ) device.version String OS Version 값 os String device.os 값을 항상 소문자로 출력 osVer String device.version 과 동일 screenWidth Int Screen Width screenHeight Int Screen Height scrollWidth Int Content Width scrollHeight Int Content Height stack Array Stack 정보 tabStack Object 현재 Stack의 Tab 정보 time Int 화면이 생성되고 경과된 시간 ( 1Sec = 1000 ) ====================== ========== ============= .. _URLRule: URL Rule --------- * 페이지 경로는 html 파일 명으로 하여 이동 * 다른 폴더의 접근은 현제 페이지에서 상대경로로 호출하여 이동 가능 * 절대경로로 호출하는 경우 "www/html" 를 시작으로 호출(예: "www/html/sample.html" ) * 외부 웹페이지 경로인 경우 `http://` 또는 `https://` 를 포함한 경로로 호출 * 현재 페이지가 외부 페이지 인 경우 현재 페이지에서 상대경로로 이동 가능 .. _NativeClassNameRule: Native Class Name Rule ----------------------- * Class 명은 namespace 를 제외한 이름만을 가지고 호출 * namespace 는 제외하므로 App 내 해당 Class 는 1개만 존재해야됨. * 호출할 Native Class는 아래 개체를 상속해야됨. - Android 의 경우는 BaseActivity - iOS 의 경우는 PPNativeViewController Page Info ---------- .. js:function:: M.page.info() .. versionadded:: 2.1.5 :return: :ref:`PageEventObject` * Page 정보 추출 Example: .. code-block:: javascript M.page.info(); .. js:function:: M.page.info( keyPath ) .. versionadded:: 2.1.5 :param String keyPath: Page Event Object 의 Key 값 :return: :ref:`PageEventObject` * Page Event 객체의 Key 에 해당하는 값만 을 출력 Example: .. code-block:: javascript // OS 구분 if ( M.page.info("device.os") == "iOS" ) { // this is iOS } else if ( M.page.info("device.os") == "Android" ) { // this is Android } // OS 와 Version 확인 if ( M.page.info("os") == "ios" && M.page.info("device.version") < "7.0" ) { // iOS 7.0 미만인 경우 처리 } // Event 시간 활용 if ( M.page.info("time") > 60 * 60 ) { // iOS 7.0 미만인 경우 처리 } Page Defer ------------ .. js:function:: M.page.defer( enabled[, time] ) .. versionadded:: 2.1.1 :param Boolean enabled: 지연 이동 기능 사용 여부 :param Int time: 지연할 시간 * 화면의 지연 이동 기능을 제어 Example: .. code-block:: javascript // 0.5초 후 페이지 이동을 실행 M.page.defer(true, 500); // 지연 실행기능을 끔 M.page.defer(false); Page 호출 ------------ .. js:function:: M.page.html( options ) .. versionchanged:: 2.1.2 :param Object options: 설정 값 :param String options.url: 이동할 Page 위치값, :ref:`URLRule`, 필수 값 :param options.param: Parameter 값 :type options.param: String or Object :param options.actionType: History Action Type, Default: 'NEW_SCR' :type options.actionType: :ref:`ActionType` :param options.animation: Animation Type, Default: 'DEFAULT' :type options.animation: :ref:`AnimationType` :param options.orientation: Orientation Type, Default: 'DEFAULT' :type options.orientation: :ref:`OrientationType` :param Int options.delay: After Delay ( 1Sec = 1000 ), Default: 0 :param Boolean options.force: 현재페이지가 아닌 경우에도 페이지 이동 실행 허용, Default: false Surrogate Keys: 위 옵션키들과 같은 하위 버전 호환을 위한 대체 옵션 값들 * path = url * params = param * parameter = param * parameters = param * action = actionType * animate = animation * animationType = animation * orientationType = orientation Example: * 전체 옵션 적용 .. code-block:: javascript M.page.html({ url: "sample.html", param: { "poo": "f3ede926587776a8cd79fb2afe4e07b4" }, actionType: "NEW_SCR", animation: "DEFAULT", orientation: "DEFAULT", delay: 0, force: false }); * 기본값 생략 .. code-block:: javascript M.page.html({ url: "sample.html", param: { "poo": "f3ede926587776a8cd79fb2afe4e07b4" } }); * NO History 적용 .. code-block:: javascript M.page.html({ url: "skip.html", actionType: "NO_HISTORY" }); .. js:function:: M.page.html( url, options ) .. versionchanged:: 2.1.0 :param String url: 이동할 Page 위치값, :ref:`URLRule`, 필수 값 :param Object options: 설정값 동일 Example: * 페이지 명만 적용 .. code-block:: javascript M.page.html("sample.html"); * 옵션 적용 .. code-block:: javascript M.page.html("sample.html", { param: { "poo": "f3ede926587776a8cd79fb2afe4e07b4" } }); * 화면 이동 .. code-block:: javascript M.page.html('page-html-terminal.html'); * 화면 이동 (URL) .. code-block:: javascript M.page.html('http://m.naver.com'); * 화면 이동 (Animation) .. code-block:: javascript M.page.html('page-html-terminal.html', { 'animate': 'SLIDE_TOP' }); * 화면 이동 (Action) .. code-block:: javascript M.page.html('page-html-terminal.html', { 'animate': 'SLIDE_RIGHT', 'action': 'NO_HISTORY' }); * 화면 이동 (Orientation) .. code-block:: javascript M.page.html('page-html-terminal.html', { 'animate': 'SLIDE_TOP', 'orient': 'LAND', 'action': 'NO_HISTORY' }); * 화면 이동 (Parameter) .. code-block:: javascript //허용 사이즈 : 1Mb (android bundle 허용 size) M.page.html('page-html-terminal.html', { 'param': { 'a':'1', 'b':'2', 'c':'3' } }); * 하드웨어 가속 사용 (Parameter) .. code-block:: javascript M.page.html('page-html-terminal.html', { param: {"__HARDWARE_ACCELERATE_FOR_ACTIVITY__" : "Y"} }); Page Back ---------- .. js:function:: M.page.back( options ) .. versionchanged:: 2.1.0 :param Object options: 설정 값 :param options.param: Parameter 값 :type options.param: String or Object :param options.animation: Animation Type, Default: 'DEFAULT' :type options.animation: :ref:`AnimationType` Surrogate Keys: 위 옵션키들과 같은 하위 버전 호환을 위한 대체 옵션 값들 * params = param * parameter = param * parameters = param * animate = animation * animationType = animation Example: * 전체 옵션 적용 .. code-block:: javascript M.page.back({ param: { "poo": "f3ede926587776a8cd79fb2afe4e07b4" }, animation: "DEFAULT" }); * 기본값 생략 .. code-block:: javascript M.page.back({ param: { "poo": "f3ede926587776a8cd79fb2afe4e07b4" } }); * 옵션 없이 실행 .. code-block:: javascript M.page.back(); Page Remove -------------- .. js:function:: M.page.remove( url ) .. versionchanged:: 2.1.0 :param String url: 삭제할 Page 위치값, :ref:`URLRule`, 필수 값 주의) Stack 정보를 이용하는 경우, stack의 역순으로 제거한다. 현재 페이지는 삭제 불가 Example: * 페이지 명으로 삭제 .. code-block:: javascript M.page.remove("sample.html"); * stack 정보 이용 삭제 .. code-block:: javascript var pagelist = M.info.stack(); M.page.remove(pagelist[2].key); Page Replace -------------- .. js:function:: M.page.replace( options ) .. versionchanged:: 2.1.0 :param String options.url: 이동할 Page 위치값, :ref:`URLRule`, 필수 값 :param options.param: Parameter 값 :type options.param: String or Object Surrogate Keys: 위 옵션키들과 같은 하위 버전 호환을 위한 대체 옵션 값들 * path = url * params = param * parameter = param * parameters = param .. js:function:: M.page.replace( url, options ) .. versionchanged:: 2.1.0 :param String url: 이동할 Page 위치값, :ref:`URLRule`, 필수 값 :param Object options: 설정값 동일 Example: * 페이지 명만 적용 .. code-block:: javascript M.page.replace("sample.html"); * 옵션 포함 .. code-block:: javascript M.page.replace({ url : "sample.html", param: { "poo": "f3ede926587776a8cd79fb2afe4e07b4" } }); * URL 적용 .. code-block:: javascript M.page.replace('http://m.naver.com'); Tab Page 호출 (deprecated) ------------ .. js:function:: M.page.tab.html( options ) .. versionchanged:: 2.1.2 :param Object options: 설정 값 :param String options.url: 이동할 Page 위치값, :ref:`URLRule`, 필수 값 :param options.param: Parameter 값 :type options.param: String or Object :param options.actionType: History Action Type, Default: 'NEW_SCR' :type options.actionType: :ref:`ActionType` :param options.animation: Animation Type, Default: 'DEFAULT' :type options.animation: :ref:`AnimationType` :param options.orientation: Orientation Type, Default: 'DEFAULT' :type options.orientation: :ref:`OrientationType` :param Int options.delay: After Delay ( 1Sec = 1000 ), Default: 0 :param Boolean options.force: 현재페이지가 아닌 경우에도 페이지 이동 실행 허용, Default: false Surrogate Keys: 위 옵션키들과 같은 하위 버전 호환을 위한 대체 옵션 값들 * path = url * params = param * parameter = param * parameters = param * action = actionType * animate = animation * animationType = animation * orientationType = orientation Example: * 전체 옵션 적용 .. code-block:: javascript M.page.tab.html({ url: "sample.html", param: { "poo": "f3ede926587776a8cd79fb2afe4e07b4" }, actionType: "NEW_SCR", animation: "DEFAULT", orientation: "DEFAULT", delay: 0, force: false }); * 기본값 생략 .. code-block:: javascript M.page.tab.html({ url: "sample.html", param: { "poo": "f3ede926587776a8cd79fb2afe4e07b4" } }); * NO History 적용 .. code-block:: javascript M.page.tab.html({ url: "skip.html", actionType: "NO_HISTORY" }); .. js:function:: M.page.tab.html( url, options ) .. versionchanged:: 2.1.0 :param String url: 이동할 Page 위치값, :ref:`URLRule`, 필수 값 :param Object options: 설정값 동일 Example: * 페이지 명만 적용 .. code-block:: javascript M.page.tab.html("sample.html"); * 옵션 적용 .. code-block:: javascript M.page.tab.html("sample.html", { param: { "poo": "f3ede926587776a8cd79fb2afe4e07b4" } }); * 화면 이동 .. code-block:: javascript M.page.tab.html('page-html-terminal.html'); * 화면 이동 (URL) .. code-block:: javascript M.page.tab.html('http://m.naver.com'); * 화면 이동 (Animation) .. code-block:: javascript M.pagpage.tabe.html('page-html-terminal.html', { 'animate': 'SLIDE_TOP' }); * 화면 이동 (Action) .. code-block:: javascript M.page.tab.html('page-html-terminal.html', { 'animate': 'SLIDE_RIGHT', 'action': 'NO_HISTORY' }); * 화면 이동 (Orientation) .. code-block:: javascript M.page.tab.html('page-html-terminal.html', { 'animate': 'SLIDE_TOP', 'orient': 'LAND', 'action': 'NO_HISTORY' }); * 화면 이동 (Parameter) .. code-block:: javascript //허용 사이즈 : 1Mb (android bundle 허용 size) M.page.tab.html('page-html-terminal.html', { 'param': { 'a':'1', 'b':'2', 'c':'3' } }); * 하드웨어 가속 사용 (Parameter) .. code-block:: javascript M.page.tab.html('page-html-terminal.html', { param: {"__HARDWARE_ACCELERATE_FOR_ACTIVITY__" : "Y"} }); Page Tab Remove (deprecated) -------------- .. js:function:: M.page.tab.remove( url ) .. versionchanged:: 2.1.0 :param String url: 삭제할 Page 위치값, :ref:`URLRule`, 필수 값 주의) Stack 정보를 이용하는 경우, stack의 역순으로 제거한다. 현재 페이지는 삭제 불가 Example: * 페이지 명으로 삭제 .. code-block:: javascript M.page.tab.remove("sample.html"); Page Tab Back (deprecated) ---------- .. js:function:: M.page.tab.back( options ) .. versionchanged:: 2.1.0 :param Object options: 설정 값 :param options.param: Parameter 값 :type options.param: String or Object :param options.animation: Animation Type, Default: 'DEFAULT' :type options.animation: :ref:`AnimationType` Surrogate Keys: 위 옵션키들과 같은 하위 버전 호환을 위한 대체 옵션 값들 * params = param * parameter = param * parameters = param * animate = animation * animationType = animation Example: * 전체 옵션 적용 .. code-block:: javascript M.page.tab.back({ param: { "poo": "f3ede926587776a8cd79fb2afe4e07b4" }, animation: "DEFAULT" }); * 기본값 생략 .. code-block:: javascript M.page.tab.back({ param: { "poo": "f3ede926587776a8cd79fb2afe4e07b4" } }); * 옵션 없이 실행 .. code-block:: javascript M.page.tab.back(); Native 로 이동 ------------------ .. js:function:: M.page.activity( options ) .. versionchanged:: 2.1.1 :param Object options: 설정 값 :param String options.className: 이동할 Native Activity Class Name, :ref:`NativeClassNameRule`, 필수 값 :param options.param: Parameter 값 :type options.param: String or Object :param options.actionType: History Action Type, Default: 'NEW_SCR' :type options.actionType: :ref:`ActionType` :param options.animation: Animation Type, Default: 'DEFAULT' :type options.animation: :ref:`AnimationType` :param options.orientation: Orientation Type, Default: 'DEFAULT' :type options.orientation: :ref:`OrientationType` Surrogate Keys: 위 옵션키들과 같은 하위 버전 호환을 위한 대체 옵션 값들 * appClass = className * params = param * parameter = param * parameters = param * action = actionType * animate = animation * animationType = animation * orientationType = orientation Example: * 전체 옵션 적용 .. code-block:: javascript M.page.activity({ className: "SampleActivity", param: { "poo": "f3ede926587776a8cd79fb2afe4e07b4" }, actionType: "NEW_SCR", animation: "DEFAULT", orientation: "DEFAULT" }); * 기본값 생략 .. code-block:: javascript M.page.activity({ className: "SampleActivity", param: { "poo": "f3ede926587776a8cd79fb2afe4e07b4" } }); * NO HISTORY 적용 .. code-block:: javascript M.page.activity({ className: "SampleActivity", actionType: "NO_HISTORY" }); .. js:function:: M.page.activity( className, options ) .. versionchanged:: 2.1.0 :param String className: 이동할 Native Activity Class Name, :ref:`NativeClassNameRule`, 필수 값 :param Object options: 설정값 동일 Example: * 페이지 명만 적용 .. code-block:: javascript M.page.activity("SampleActivity"); * 옵션 포함 .. code-block:: javascript M.page.activity("SampleActivity", { param: { "poo": "f3ede926587776a8cd79fb2afe4e07b4" } }); * 하드웨어 가속 사용 (Parameter) .. code-block:: javascript M.page.activity("SampleActivity", { param: {"__HARDWARE_ACCELERATE_FOR_ACTIVITY__" : "Y"} }); .. js:function:: M.page.native( options ) .. deprecated:: 2.1.0.8 * M.page.activity 로 대체 Example: * native 화면 호출 .. code-block:: javascript M.page.native("SampleActivity"); Data API ============================= * Web <-> Native 간에 데이타 공유 가능 * 공유 가능한 데이타는 String ======== ============= Type Description ======== ============= Param Parameter Data - 화면이 Stack에 존재하는 동안 유지 Global Memory Data - 앱 실행 후 종료시까지 유지 Storage File Reference Data, - 앱을 다시 삭제되기 전까지 유지 - 파일로 저장되므로 사용자 정보는 암호화 필요 ( :ref:`SecurityAPI` ) ======== ============= Parameters Data ---------------- .. js:function:: M.data.param( key ) .. versionchanged:: 2.1.0 :param String key: Parameter 키값 * 이전 화면에서 현재 화면으로 보낸 Parameter 를 가져온다. * 현재 화면에 저장된 Parameter 를 가져온다. Example: .. code-block:: javascript // 페이지 호출 M.page.html({ path: "sample.html", param: { "poo": "f3ede926587776a8cd79fb2afe4e07b4" } }); // sample.html 에서 넘어온 Parameter 확인 M.data.param("poo"); .. js:function:: M.data.param( key, value ) .. versionchanged:: 2.1.0 :param String key: Parameter로 저장할 키값 :param * value: Parameter로 저장하는 값 * 화면에 Parameter 를 저장한다. Example: * Parameter 변수 저장 (default) .. code-block:: javascript M.data.param("goo", "6cdcbae015da6f882373107c90209267"); * Parameter 변수 저장 (객체) .. code-block:: javascript M.data.param({ 'koo': 'kov', 'boo': 'bov', 'foo': 'fov', 'arrayKey' : ['1', '2', '3'], 'objectkey' : {'key': 'value'} }); var val = M.data.param('foo'); M.tool.log(typeof val, val); alert( (typeof val) + ", " + JSON.stringify(val) ); .. js:function:: M.data.removeParam( key ) .. versionchanged:: 2.1.0 :param String key: 제거하려는 Parameter 키값 * 화면에서 Parameter 를 제거한다. Example: .. code-block:: javascript M.data.removeParam("poo"); .. js:function:: M.data.removeParam() .. versionchanged:: 2.1.0 * 화면에서 Parameter 전체를 제거한다. Example: .. code-block:: javascript M.data.removeParam(); Global Data ------------- .. js:function:: M.data.global( key ) .. versionchanged:: 2.1.0 :param String key: 전역 변수 키값 * 전역 변수를 가져온다. Example: .. code-block:: javascript M.data.global("goo"); .. js:function:: M.data.global( key, value ) .. versionchanged:: 2.1.0 :param String key: 전역 변수로 저장하려는 키값 :param * value: 전역 변수로 저장하는 값 * 전역 변수로 저장한다 Example: * 전역 변수 저장 (default) .. code-block:: javascript M.data.global("goo", "6cdcbae015da6f882373107c90209267"); * 전역 변수 저장 (객체) .. code-block:: javascript M.data.global({ 'koo': 'kov', 'boo': 'bov', 'foo': 'fov', 'arrayKey' : ['1', '2', '3'], 'objectkey' : {'key': 'value'} }); var val = M.data.global('foo'); M.tool.log(typeof val, val); alert( (typeof val) + ", " + JSON.stringify(val) ); .. js:function:: M.data.global() .. versionchanged:: 2.1.0 * 모든 전역 변수를 가져온다. Example: .. code-block:: javascript M.data.global(); .. js:function:: M.data.removeGlobal( key ) .. versionchanged:: 2.1.0 :param String key: 제거하려는 전역변수 키값 * 전역 변수를 제거한다. Example: .. code-block:: javascript M.data.removeGlobal("goo"); .. js:function:: M.data.removeGlobal() .. versionchanged:: 2.1.0 * 전역 변수 전체를 제거한다. * 제거할 수 없는 예약키(?)는 제외 Example: .. code-block:: javascript M.data.removeGlobal(); Storage Data ------------- .. js:function:: M.data.storage( key ) .. versionchanged:: 2.1.0 :param String key: 영속 변수 키값 * 영속 변수를 가져온다. Example: .. code-block:: javascript M.data.storage("soo"); .. js:function:: M.data.storage( key, value ) .. versionchanged:: 2.1.0 :param String key: 영속 변수로 저장하려는 키값 :param * value: 영속 변수로 저장하는 값 * 영속 변수로 저장한다. Example: * 영속 변수 저장 (default) .. code-block:: javascript M.data.storage("goo", "6cdcbae015da6f882373107c90209267"); * 영속 변수 저장 (객체) .. code-block:: javascript M.data.storage({ 'koo': 'kov', 'boo': 'bov', 'foo': 'fov', 'arrayKey' : ['1', '2', '3'], 'objectkey' : {'key': 'value'} }); var val = M.data.storage('foo'); M.tool.log(typeof val, val); alert( (typeof val) + ", " + JSON.stringify(val) ); .. js:function:: M.data.removeStorage( key ) .. versionchanged:: 2.1.0 :param String key: 제거하려는 영속변수 키값 * 영속 변수를 제거한다. Example: .. code-block:: javascript M.data.removeStorage("goo"); .. js:function:: M.data.removeStorage() .. versionchanged:: 2.1.0 * 영속 변수 전체를 제거한다. * 제거할 수 없는 예약키(?)는 제외 Example: .. code-block:: javascript M.data.removeStorage(); .. _SecurityAPI: Security API ============= * 암복호화 관련 함수를 제공 .. js:function:: M.sec.encrypt( source ) .. versionchanged:: 2.1.1 :param String source: 암호화할 Hex 문자열 :rtype: Object * 문자열을 암호화하여 Hex String 형태로 반환한다. ====================== ========== ============= Key Type Description ====================== ========== ============= status String 변환 성공 여부 (SUCCESS or FAIL) result String 암호화된 문자열 ====================== ========== ============= Example: * 암호화 .. code-block:: javascript M.sec.encrypt( "Sample Text" ).result .. js:function:: M.sec.decrypt( source ) .. versionchanged:: 2.1.1 :param String source: 암호화된 Hex 문자열 :rtype: Object * 함수는 문자열을 복호화하여 반환한다. ====================== ========== ============= Key Type Description ====================== ========== ============= status String 변환 성공 여부 (SUCCESS or FAIL) result String 복호화된 문자열 ====================== ========== ============= Example: * 복호화 .. code-block:: javascript M.sec.decrypt( "1cf24b4ba06470d0809f9ac920e0ee17" ).result * 암호화 / 복호화 .. code-block:: javascript var encrypt = M.sec.encrypt('Sample Text'); M.tool.log( encrypt ); alert( JSON.stringify(encrypt) ); var decrypt = M.sec.decrypt(encrypt.result); M.tool.log( decrypt ); alert( JSON.stringify(decrypt) ); Info API ========= 시스템, 라이브러리, 디바이스 등의 정보를 제공 .. js:function:: M.info.version() .. versionchanged:: 2.1.1 :returns: 설치된 API 의 버전 결과 :rtype: Object +----------------------+----------+--------------------------------+ | core | String | Core Version | +----------------------+----------+--------------------------------+ | addon | Object | Addon Group | +---------+------------+----------+--------------------------------+ | | file | String | File Addon Version | +---------+------------+----------+--------------------------------+ | | locale | String | Locale Addon Version | +---------+------------+----------+--------------------------------+ | | media | String | Media Addon Version | +---------+------------+----------+--------------------------------+ | | net | String | Network Addon Version | +---------+------------+----------+--------------------------------+ | | net.ext | String | Network Extends Addon Version | +---------+------------+----------+--------------------------------+ | | pop | String | Popup Addon Version | +---------+------------+----------+--------------------------------+ | | zip | String | Zip Addon Version | +---------+------------+----------+--------------------------------+ | plugin | Object | Plugin Group | +---------+------------+----------+--------------------------------+ | | beacon | String | Beacon Plugin Version | +---------+------------+----------+--------------------------------+ | | contact | String | Contact Plugin Version | +---------+------------+----------+--------------------------------+ | | location | String | Location Plugin Version | +---------+------------+----------+--------------------------------+ | | motion | String | Motion Plugin Version | +---------+------------+----------+--------------------------------+ | | prevention | String | Prevention Plugin Version | +---------+------------+----------+--------------------------------+ | | push | String | Push Plugin Version | +---------+------------+----------+--------------------------------+ | | qr | String | QR-Code Plugin Version | +---------+------------+----------+--------------------------------+ | | social | String | Social Plugin Version | +---------+------------+----------+--------------------------------+ | | viewer | String | Viewer Plugin Version | +---------+------------+----------+--------------------------------+ Example: .. code-block:: javascript M.info.version(); .. js:function:: M.info.memory() .. versionchanged:: 2.1.0 :returns: 메모리 사용정보 :rtype: Object +---------+----------+---------------------+ | used | String | Used Memory Bytes | +---------+----------+---------------------+ | free | String | Free Memory Bytes | +---------+----------+---------------------+ | total | String | Total Memory Bytes | +---------+----------+---------------------+ Example: .. code-block:: javascript M.info.memory(); .. js:function:: M.info.device() .. versionchanged:: 2.1.1 :returns: Device 정보 :rtype: Object ====================== ========== ============= Key Type Description ====================== ========== ============= id String Device ID 값 (Deprecated 2.1.1) uuid String Device UUID for PUSH model String Device Model 명 type String **phone**: Phone, **tablet**: Tablet os Object OS 정보 os.name String OS 명 os.version String OS Version comm Object 통신사 정보 comm.phone String 단말기 전화번호, iOS 는 00000000000 comm.brand String 통신사명 comm.mccmnc String 통신사 MMC, MNC 정보 display Object 디스플레이 정보 display.width Object 화면 너비 display.height Object 화면 높이 support Object 디바이스 지원 정보 support.telephone Boolean 통화 기능 지원여부 support.camera_front Boolean 전방 카메라 지원여부 support.camera_back Boolean 후방 카메라 지원여부 ====================== ========== ============= Example: .. code-block:: javascript M.info.device(); .. js:function:: M.info.device( keyPath ) .. versionchanged:: 2.1.2 :param String key: 가져오려는 정보의 키값 :returns: 키에 대한 값 Example: .. code-block:: javascript // 특정 키로 조회 if ( M.info.device("os.name") == "iPhone OS" || M.info.device("os.name") == "iOS" ) { alert( "이 운영체제는 iOS 입니다."); } if ( M.info.device("support.telephone") === false ) { alert( '통화 할 수 없는 단말기 입니다.' ); } .. js:function:: M.info.stack() .. versionchanged:: 2.1.4 :returns: Stack 사용정보 :rtype: Array * Stack 별 정보 ====================== ========== ============= Key Type Description ====================== ========== ============= key String Stack Key 값, API 버전 마다 값이 달라질 수 있음 action String Stack 의 ActionType (:ref:`ActionType`) 값 path String Stack을 생성한 리소스의 path 값 alias String Stack을 생성한 리소스의 alias 경로 source String Stack을 생성한 리소스의 절대 경로 tabs Array Stack 내 화면 정보 tabs[index].key String 해당 화면의 Key 값, API 버전 마다 값이 달라질 수 있음 tabs[index].param Object 해당 화면의 Parameters 값 tabs[index].orient String 해당 화면의 Orientation (:ref:`OrientationType`) 값 tabs[index].path String 해당 화면의 리소스의 path 값 tabs[index].alias String 해당 화면의 리소스의 alias 경로 tabs[index].source String 해당 화면의 리소스의 절대 경로 ====================== ========== ============= * Stack 정보 내에서 tabs 의 첫번째 배열값이 해당 스택의 현재 화면 정보 Example: .. code-block:: javascript M.info.stack(); .. js:function:: M.info.stack( index ) .. versionchanged:: 2.1.2 :param Int index: 가져오려는 Stack Index :returns: Index 에 대한 Stack 정보 Example: .. code-block:: javascript // 현재 화면 정보 console.log( M.info.stack(0).tabs[0] ); .. js:function:: M.info.app() .. versionchanged:: 2.1.5 :returns: Application 정보 :rtype: Object ======================== ========== ============= Key Type Description ======================== ========== ============= app Object ID, Name, Version, Build Info (Deprecated 2.1.5) app.id String Application ID (Android:Package Name, iOS:Bundle Identifier) app.name String Application Name app.version String Application Version (Android: AndroidManifest.version, iOS: CFBundleShortVersionString) app.build String Application Build Version (Android: AndroidManifest.code, iOS: CFBundleVersion) library Object Library Info library.license_id String License Application ID library.release_date String Core Library 배포 날짜 library.release_version String Core Library Version manifest Object Manifest 정보 (Manifest.xml 참고) resource Object Resource 정보 resource.default_version String 앱으로 배포된 리소스의 버전 정보 resource.current_version String 마지막으로 업데이트 된 리소스 정보 last_update_date Int 마지막으로 업데이트 시간(millisecond) ======================== ========== ============= Example: .. code-block:: javascript M.info.app(); .. js:function:: M.info.app( keyPath ) .. versionchanged:: 2.1.4 :param String keyPath: 가져오려는 정보의 Key값 :returns: Key에 대한 값 Example: .. code-block:: javascript if ( M.info.app("resource.default_version") == M.info.app("resource.current_version") ) { // 앱으로 배포된 버전과 리소스 버전 정보가 같은 경우 } Apps API ========= * 앱간 연동을 위한 API 를 제공. 내장 브라우저 실행 ------------- .. js:function:: M.apps.browser( url, encoding ) .. versionchanged:: 2.1.0 :param String url: 기본 브라우저로 호출하기 위한 URL :param String encoding: URL Encoding, EUC-KR과 UTF-8 지원 * Encoding +-----------+--------------------------------------+ | Encoding | Description | +===========+======================================+ | EUC-KR | Variable-width encoding | +-----------+--------------------------------------+ | UTF-8 | Character encoding in Unicode | +-----------+--------------------------------------+ Example: .. code-block:: javascript M.apps.browser("http://morpheus.co.kr/", "UTF-8"); 앱 삭제 ------ .. js:function:: M.apps.remove( identifier ) .. versionchanged:: 2.1.0 :param String identifier: 삭제할 앱의 패키지명 * **Android Only** Example: .. code-block:: javascript //Android Only M.apps.remove("com.sample.app"); .. warning:: Android targetSDK 26 이상은, AndroidManifest.xml 에 아래와 같이 Permission 선언이 필요함. 앱 정보 반환 ---------- .. js:function:: M.apps.info( packageName ) .. versionchanged:: 2.1.0 :param String packageName: 호출할 앱의 고유 scheme :returns: 설치된 앱 정보 추출 :rtype: Object +--------------+-----------+----------------------------------+ | installed | Boolean | Installed App | +--------------+-----------+----------------------------------+ | version | String | App Version (Android Only) | +--------------+-----------+----------------------------------+ | name | String | App Name (Android Only) | +--------------+-----------+----------------------------------+ | display_name | String | Display App Name (Android Only) | +--------------+-----------+----------------------------------+ Example: .. code-block:: javascript if ( M.navigator.os("android") ) { // Android 인 경우 if ( M.apps.info("com.domain.app"}).installed ) { M.apps.open("com.domain.app", {"poo": "f3ede926587776a8cd79fb2afe4e07b4"}); } else { M.apps.store("com.domain.app", {"poo": "f3ede926587776a8cd79fb2afe4e07b4"}); } } else if ( M.navigator.os("ios") ) { // iOS 인 경우 if ( M.apps.info("scheme://"}).installed ) { M.apps.open("scheme://", {"poo": "f3ede926587776a8cd79fb2afe4e07b4"}); } else { } } .. warning:: targetSDK 30 이상 선언시 주의 사항 1. InHouse 배포 시 (google play 배포시에는 reject 사유가 될 수 있음) 다른 앱 정보를 취득하기 위해, 아래와 같이 AndroidManifest.xml 에 퍼미션을 선언해야 한다. 2. google play 다른 앱 정보를 취득하기 위해, 취득하고자 하는 앱을 등록하는 절차를 적용해야 한다. 참고 URL : https://developer.android.com/preview/privacy/package-visibility?hl=ko ... 앱 설치 (In-House 배포용) ------ .. js:function:: M.apps.install( url, name ) .. versionchanged:: 2.1.0 :param String url: download url :param String name: 앱 이름 * **Only Android** * **MNetwork 라이브러리 적용 필수** Example: .. code-block:: javascript var appsName = 'SampleApp'; if (M.navigator.os('android')) { // android 인경우 var apkUrl = 'https://sample.co.kr/sampleApp.apk'; M.apps.install(apkUrl, appName) } else if (M.navigator.os('ios')) { // ios 인 경우 // https 프로토콜만 가능 var plistUrl = 'itms-services://?action=download-manifest&url=https://sample.co.kr/sampleApp.plist'; M.apps.browser(plistUrl); } .. warning:: Android targetSDK 26 이상은, AndroidManifest.xml 에 아래와 같이 Permission 선언이 필요함. 다운로드 후 앱 설치 (In-House 배포용) ------ .. js:function:: M.apps.downloadAndInstall( url, appName, option ) .. versionchanged:: 2.1.0 :param String url: download url :param String appName: 앱 이름 :param Object option: 네트워크 설정 값 :param Boolean option.indicator: 인디케이터 여부 (default: true) :param Int option.timeout: 타임 아웃 (millisecond) :param Function option.onprogress: 다운로드 진행 상태 콜백 함수 .. js:function:: onprogress(total, current, remaining, percentage) :param String total: 다운로드 파일 사이즈 :param String current: 다운로드된 파일 사이즈 :param String remaining: 남은 파일 사이즈 :param String percentage: 진행률 퍼센트 * **Only Android** * **MNetwork 라이브러리 적용 필수** Example: .. code-block:: javascript var appsName = 'SampleApp'; if (M.navigator.os('android')) { // android 인경우 var apkUrl = 'https://sample.co.kr/sampleApp.apk'; var option = { indicator: true, timeout: 30000, onprogress: function (total, cureent, remaining, percentage) { console.log(total, cureent, remaining, percentage); } }; M.apps.downloadAndInstall(apkUrl, appName, option) } else if (M.navigator.os('ios')) { // ios 인 경우 // https 프로토콜만 가능 var plistUrl = 'itms-services://?action=download-manifest&url=https://sample.co.kr/sampleApp.plist'; M.apps.browser(plistUrl); } .. warning:: Android targetSDK 26 이상은, AndroidManifest.xml 에 아래와 같이 Permission 선언이 필요함. 앱 실행 ------ .. js:function:: M.apps.open( scheme, param ) .. versionchanged:: 2.1.0 :param String scheme: 호출할 앱의 고유 scheme :param param: Parameter 값 :type param: String or Object :returns: 앱 호출 성공 여부 :rtype: Boolean * OS 별 Scheme 값 +-----------+---------------------------+ | OS | Description | +===========+===========================+ | Android | Package Name | +-----------+---------------------------+ | iOS | URL Scheme | +-----------+---------------------------+ * iOS 9.0 이상부터 Info.plist 에 LSApplicationQueriesSchemes 로 scheme 등록 필요 Example: * 호출하는 앱에서 처리 내용 .. code-block:: javascript if ( M.navigator.os("android") ) { // Android 인 경우 M.apps.open("com.domain.app", {"poo": "f3ede926587776a8cd79fb2afe4e07b4"}); } else if ( M.navigator.os("ios") ) { // iOS 인 경우 M.apps.open("scheme://", {"poo": "f3ede926587776a8cd79fb2afe4e07b4"}); } * 호출되는 앱에서 처리 내용 .. code-block:: java //Launcher Activity에서 아래와 같이 처리한다. (기본 : Startup.java) @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //////////////////////////////////////////////////////////////////////////////// // - 중요 - // 최초 시작 Activity에 아래의 코드를 넣어야 한다. commLibHandle.processAppInit(this); //////////////////////////////////////////////////////////////////////////////// JSONObject jsondata; try { String param = getIntent().getStringExtra("param"); jsondata = new JSONObject(param); String poo_data = jsondata.has("poo") ? jsondata.getString("poo") : ""; } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } } 스토어 열기 --------- .. js:function:: M.apps.store( identifier ) .. versionchanged:: 2.1.0 :param String identifier: Store 에서의 앱 고유값 * Identifier in AppStore +-----------+------------------+ | OS | Identifier | +===========+==================+ | Android | Package Name | +-----------+------------------+ | iOS | AppStore App ID | +-----------+------------------+ Example: * 앱 지정하여, 스토어 열기 .. code-block:: javascript if ( M.navigator.os("android") ) { // Android 인 경우 M.apps.store("com.uracle.wellness"}); // open https://itunes.apple.com/kr/app/id1049605425?mt=8 } else if ( M.navigator.os("ios") ) { // iOS 인 경우 M.apps.store("1049605425"); // open https://play.google.com/store/apps/details?id=com.uracle.wellness } * Store 열기 .. code-block:: javascript M.apps.store(); System API =========== * 전화걸기, SMS, 진동등 시스템 기능들을 제공. - 전화 걸기 .. js:function:: M.sys.call( number ) .. versionchanged:: 2.1.1 :param String number: 전화번호 * 네이티브 전화 어플을 구동시킨다. Example: * 구분자 .. code-block:: javascript M.sys.call( '010-1234-5678' ) * 숫자 .. code-block:: javascript M.sys.call( '01012345678' ) - App 종료 .. js:function:: M.sys.exit() .. versionchanged:: 2.1.1 * 앱을 종료한다. Example: .. code-block:: javascript M.sys.exit() - Camera flash 호출 .. js:function:: M.sys.flash( status ) .. versionchanged:: 2.1.1 :param String status: 카메라 플래시 상태 변경 (ON, OFF) * 카메라 플래시의 상태를 변경한다. Example: * 호출 (ON) .. code-block:: javascript M.sys.flash( 'ON' ) * 호출 (OFF) .. code-block:: javascript M.sys.flash( 'OFF' ) - 메일 발송 .. js:function:: M.sys.mail( options ) .. versionchanged:: 2.1.1 :param Object options: 설정값 :param Array options.to: 받는 사람 이메일 주소 :param Array options.cc: 참조 이메일 주소 :param Array options.bcc: 숨은참조 이메일 주소 :param String options.subject: 메일 제목 :param String options.contents: 메일 내용 Surrogate Keys: 위 옵션키들과 같은 하위 버전 호환을 위한 대체 옵션 값들 * content = contents * 메일을 화면으로 이동한다. Example: .. code-block:: javascript M.sys.mail({ to: ['test1@test.com', 'test2@test.com'] }); .. code-block:: javascript M.sys.mail({ to: ['test1@test.com', 'test2@test.com'], subject: '제목' }); .. code-block:: javascript M.sys.mail({ to: ['test1@test.com', 'test2@test.com'], subject: '제목', content: '내용' }); .. code-block:: javascript M.sys.mail({ to: ['test1@test.com', 'test2@test.com'], cc: ['cc1@test.com', 'cc2@test.com'], bcc: ['bcc1@test.com', 'bcc2@test.com'], subject: '제목', content: '내용' }); - sms 발송 .. js:function:: M.sys.sms( options ) .. versionchanged:: 2.1.1 :param Object options: 설정값 :param Array options.numbers: 수신 전화번호 :param Array options.message: SMS 내용 Surrogate Keys: 위 옵션키들과 같은 하위 버전 호환을 위한 대체 옵션 값들 * target = numbers * content = message * contents = message * msg = message * SMS 전송 화면으로 이동한다. Example: .. code-block:: javascript M.sys.sms({ numbers: '010-123-4567, 010-987-6543' }); .. code-block:: javascript M.sys.sms({ target: ['010-123-4567', '0109876543'], content: '안녕하세요.' }); - 진동 발생 .. js:function:: M.sys.vibration() .. versionchanged:: 2.1.1 * 네이티브 진동을 호출한다. Example: * 진동 호출 .. code-block:: javascript M.sys.vibration() * 진동 호출 (time / ms) .. code-block:: javascript M.sys.vibration(2000); * 진동 호출 (3s) .. code-block:: javascript M.sys.vibration('3s'); * 진동 호출 (3000ms) .. code-block:: javascript M.sys.vibration('3000ms'); - Camera Flash 상태 가져오기 .. js:function:: M.sys.flash() .. versionchanged:: 2.1.1 :rtype: Object ====================== ========== ============= Key Type Description ====================== ========== ============= status String 플래시의 상태 (ON, OFF) ====================== ========== ============= * 카메라 플래시의 상태를 가져온다. * Android 5.0 이상 미지원 Example: .. code-block:: javascript M.sys.flash() Tool API ========= 로그 등 유틸 API 를 제공 Log ---- * 아래와 같은 타입으로 로그 레벨을 설정 할 수 있다. .. _LogLevel: Log Level ^^^^^^^^^^ +----------+-------+--------------------------------+ | Type | Int | Description | +==========+=======+================================+ | ERROR | 0 | Error Level | +----------+-------+--------------------------------+ | WARN | 1 | Warning Level | +----------+-------+--------------------------------+ | INFO | 2 | Info Level | +----------+-------+--------------------------------+ | DEBUG | 3 | Debug Level | +----------+-------+--------------------------------+ | VERBOSE | 4 | Verbose Level | +----------+-------+--------------------------------+ .. js:function:: M.tool.log( options ) .. versionchanged:: 2.1.0 :param Object options: 설정 값 :param String options.message: Log Message, 필수 값 :param options.level: Log Level, Default: DEBUG :type options.level: :ref:`LogLevel` :param String options.tag: Log 분류를 위한 Tag 값, Default: WEB Example: * 전체 옵션 적용 .. code-block:: javascript M.tool.log({ message:"로그 메세지", level: "DEBUG", tag: "WEB" }); * 기본값 생략 .. code-block:: javascript M.tool.log({ message:"로그 메세지" }); * Log 출력 (Object) .. code-block:: javascript M.tool.log({ 'a': '1', 'b': '2', 'c': '3', 'd': 4, 'e': "asdfasdfas", 'f': false }); * Log 출력 (Array) .. code-block:: javascript M.tool.log(['a', 'b', 'c', 123, true, false, "\n"]); * Log 출력 (Multiple) .. code-block:: javascript var arr = ['a', 'b', 'c'] var obj = { 'a':'1', 'b':'2', 'c':'3' }; M.tool.log('로그', arr, obj); * Log 출력 (Multiple + Setting) .. code-block:: javascript var arr = ['a', 'b', 'c']; var obj = { 'a':'1', 'b':'2', 'c':'3' }; M.tool.log(obj, arr, '로그', { 'level': 2, 'tag': 'test' }); * Log 출력 (Int) .. code-block:: javascript M.tool.log(0); .. js:function:: M.tool.log( message ) .. versionchanged:: 2.1.0 :param String message: Log Message, 필수 값 * 메세지만 보내는 경우 기본 옵션값으로 Log 전달 Example: .. code-block:: javascript // 로그 메세지만 전달 M.tool.log( "로그 메세지" ); .. js:function:: M.tool.log( level, tag, message[, ...] ) .. versionchanged:: 2.1.0 :param String level: :ref:`LogLevel`, Default: DEBUG :param String tag: Log 분류를 위한 Tag 값, Default: WEB :param * message: Log Message * 첫번째 파라미터 값이 Level 에 해당하는 값인 경우, Level, Tag, Message 순으로 인식 Example: .. code-block:: javascript // Error Level + WEB tag + 메세지 순으로 전달 M.tool.log( "ERROR", "WEB", "오류 메세지" ); Native API 호출 ========= ExtendWNInterface 에 만들어진 api 를 호출하기 위한 방법 - Native API 동기방식 ----------------------- .. js:function:: M.execute( api, param ) .. versionchanged:: 2.1.0 :param String api: ExtendWNInterface 에 생성된 Native API 명칭 :param Object options: Native api에 전달될 설정 값 Example: .. code-block:: javascript // phone number 호출 var result = M.execute("getPhoneNumber" ); // server 정보 전달 / 설정 ver serverInfo = { 'server':'127.0.0.1', 'port':'2103', 'serverName' : 'TEST' } var result = M.execute("setIpInfo", serverInfo ); - Native API 비동기 방식 호출 : TYPE 1 ----------------------- callback 함수가 window에 선언된 함수일 경우 string으로 함수 이름 param 설정 .. js:function:: M.execute( api, param, callback ) .. versionchanged:: 2.1.0 :param String api: ExtendWNInterface 에 생성된 Native API 명칭 :param Object options: Native api에 전달될 설정 값 :param String callback: callback function Example: .. code-block:: javascript window.callbackFunc( result ){ console.log( result ); } M.execute("exName", options, "callbackFunc"); - Native API 비동기 방식 호출 : TYPE 2 ----------------------- callback 함수가 익명함수이거나 window에 선언되어 있지 않을 경우 M.response.on함수를 이용, toString하여 param 설정 .. js:function:: M.execute( api, param, callback ) .. versionchanged:: 2.1.0 :param String api: ExtendWNInterface 에 생성된 Native API 명칭 :param Object options: Native api에 전달될 설정 값 :param String callback: callback function Example: .. code-block:: javascript var callback = M.response.on( function( result ) { console.log( result ); }).toString() M.execute("exName", options, callback);