Core

Core Library 를 MCore 라고 부른다.

MCore

MCore Framework 에 대한 필수 API 를 정의

Common Event

  • 화면 Page 의 생성,이동,제거 시 WebView의 Native 상태에 따라서 Event 함수들이 자동으로 호출

  • 각 Event 함수들은 중복으로 여러개 등록이 가능하며, 사용하려고 하는 함수들만 등록 하여 사용

M.onReady(handler)

Changed in version 2.1.0.

Arguments
  • handler (Function) – Event Handler

M.handler(event)
Arguments
  • 화면 로딩이 최종 완료시 한번만 호출

  • 데이타 초기화, 서버로의 데이타 요청 등에 사용

  • iframe 등 으로 외부 페이지 오픈시 iframe 내 페이지까지 모두 완료되야 호출됨

  • DOM Content Loaded 와는 별개로 동작함

Example:

M.onReady( function(e) {
    // TODO : ready event handle code here
});
M.onHide(handler)

Changed in version 2.1.0.

Arguments
  • handler (Function) – Event Handler

M.handler(event)
Arguments
  • 화면 이동 바로 현재 페이지에서 호출

  • 현재 화면의 데이타 저장 및 처리 등에 사용

Example:

M.onHide( function(e) {
    // TODO : hide event handle code here
});
M.onRestore(handler)

Changed in version 2.1.0.

Arguments
  • handler (Function) – Event Handler

M.handler(event)
Arguments
  • 해당 화면으로 다시 돌아왔을 때 호출

  • 데이타 갱신 등에 사용

Example:

M.onRestore( function(e) {
    // TODO : restore event handle code here
});
M.onBack(handler)

Changed in version 2.1.0.

Arguments
  • handler (Function) – Event Handler

M.handler(event)
Arguments
  • 단말기에서 Back 키가 눌려졌을때 호출 (Only Android)

Example:

M.onBack( function(e) {
    // TODO : back event handle code here (android only)
});
M.onPause(handler)

Changed in version 2.1.0.

Arguments
  • handler (Function) – Event Handler

M.handler(event)
Arguments
  • 현재 앱이 Background 상태로 바뀔때 현재 화면에서 호출

Example:

M.onPause( function(e) {
    // TODO : pause event handle code here
});
M.onResume(handler)

Changed in version 2.1.0.

Arguments
  • handler (Function) – Event Handler

M.handler(event)
Arguments
  • Bakcground 상태의 앱이 다시 Forground 상태로 바뀔때 현재 화면에 호출

Example:

M.onResume( function(e) {
    // TODO : resume event handle code here
});
M.onDestroy(handler)

Changed in version 2.1.0.

Arguments
  • handler (Function) – Event Handler

M.handler(event)
Arguments
  • 화면이 메모리에서 제거될때 마지막으로 호출

  • 데이타 보존이나 마무리를 위한 처리 등에 사용

  • 단, 앱의 종료시에는 호출되지 않음

Example:

M.onDestroy( function(e) {
    // TODO : destroy event handle code here
});

Event Flow

Event Flow

Page API

화면 이동에 대한 API 를 제공

Action Type

Type

Int

Description

NEW_SCR

0

대상이 되는 화면을 추가

NO_HISTORY

1

대상이 되는 화면을 Stack 에 포함하지 않음

CLEAR_TOP

2

대상이 되는 이전 화면으로 이동. 이동시 현재 화면 사이의 모든 화면은 제거됨.

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

모든 방향으로 허용

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

원본 화면은 고정되어 있고 대상 화면만 아래쪽으로 이동되는 슬라이드 효과

Page Event Object

  • 현재 화면 정보를 담은 이벤트 객체

Key

Type

Description

action

String

Page Action ( Action Type )

orient

String

Page Orientation ( Orientation Type )

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 )

URL Rule

  • 페이지 경로는 html 파일 명으로 하여 이동

  • 다른 폴더의 접근은 현제 페이지에서 상대경로로 호출하여 이동 가능

  • 절대경로로 호출하는 경우 “www/html” 를 시작으로 호출(예: “www/html/sample.html” )

  • 외부 웹페이지 경로인 경우 http:// 또는 https:// 를 포함한 경로로 호출

  • 현재 페이지가 외부 페이지 인 경우 현재 페이지에서 상대경로로 이동 가능

Native Class Name Rule

  • Class 명은 namespace 를 제외한 이름만을 가지고 호출

  • namespace 는 제외하므로 App 내 해당 Class 는 1개만 존재해야됨.

  • 호출할 Native Class는 아래 개체를 상속해야됨.

  • Android 의 경우는 BaseActivity

  • iOS 의 경우는 PPNativeViewController

Page Info

M.page.info()

New in version 2.1.5.

Returns

Page Event Object

  • Page 정보 추출

Example:

M.page.info();
M.page.info(keyPath)

New in version 2.1.5.

Arguments
  • keyPath (String) – Page Event Object 의 Key 값

Returns

Page Event Object

  • Page Event 객체의 Key 에 해당하는 값만 을 출력

Example:

// 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

M.page.defer(enabled[, time])

New in version 2.1.1.

Arguments
  • enabled (Boolean) – 지연 이동 기능 사용 여부

  • time (Int) – 지연할 시간

  • 화면의 지연 이동 기능을 제어

Example:

// 0.5초 후 페이지 이동을 실행
M.page.defer(true, 500);

// 지연 실행기능을 끔
M.page.defer(false);

Page 호출

M.page.html(options)

Changed in version 2.1.2.

Arguments
  • options (Object) – 설정 값

  • options.url (String) – 이동할 Page 위치값, URL Rule, 필수 값

  • options.param (String or Object) – Parameter 값

  • options.actionType (Action Type) – History Action Type, Default: ‘NEW_SCR’

  • options.animation (Animation Type) – Animation Type, Default: ‘DEFAULT’

  • options.orientation (Orientation Type) – Orientation Type, Default: ‘DEFAULT’

  • options.delay (Int) – After Delay ( 1Sec = 1000 ), Default: 0

  • options.force (Boolean) – 현재페이지가 아닌 경우에도 페이지 이동 실행 허용, Default: false

Surrogate Keys: 위 옵션키들과 같은 하위 버전 호환을 위한 대체 옵션 값들
  • path = url

  • params = param

  • parameter = param

  • parameters = param

  • action = actionType

  • animate = animation

  • animationType = animation

  • orientationType = orientation

Example:

  • 전체 옵션 적용

M.page.html({
        url: "sample.html",
        param: { "poo": "f3ede926587776a8cd79fb2afe4e07b4" },
        actionType: "NEW_SCR",
        animation: "DEFAULT",
        orientation: "DEFAULT",
        delay: 0,
        force: false
});
  • 기본값 생략

M.page.html({
        url: "sample.html",
        param: { "poo": "f3ede926587776a8cd79fb2afe4e07b4" }
});
  • NO History 적용

M.page.html({
        url: "skip.html",
        actionType: "NO_HISTORY"
});
M.page.html(url, options)

Changed in version 2.1.0.

Arguments
  • url (String) – 이동할 Page 위치값, URL Rule, 필수 값

  • options (Object) – 설정값 동일

Example:

  • 페이지 명만 적용

M.page.html("sample.html");
  • 옵션 적용

M.page.html("sample.html", {
        param: { "poo": "f3ede926587776a8cd79fb2afe4e07b4" }
});
  • 화면 이동

M.page.html('page-html-terminal.html');
  • 화면 이동 (URL)

M.page.html('http://m.naver.com');
  • 화면 이동 (Animation)

M.page.html('page-html-terminal.html', {
        'animate': 'SLIDE_TOP'
});
  • 화면 이동 (Action)

M.page.html('page-html-terminal.html', {
        'animate': 'SLIDE_RIGHT',
        'action': 'NO_HISTORY'
});
  • 화면 이동 (Orientation)

M.page.html('page-html-terminal.html', {
        'animate': 'SLIDE_TOP',
        'orient': 'LAND',
        'action': 'NO_HISTORY'
});
  • 화면 이동 (Parameter)

//허용 사이즈 : 1Mb (android bundle 허용 size)

M.page.html('page-html-terminal.html', {
        'param': {
                'a':'1',
                'b':'2',
                'c':'3'
        }
});
  • 하드웨어 가속 사용 (Parameter)

M.page.html('page-html-terminal.html', {
         param: {"__HARDWARE_ACCELERATE_FOR_ACTIVITY__" : "Y"}
});

Page Back

M.page.back(options)

Changed in version 2.1.0.

Arguments
  • options (Object) – 설정 값

  • options.param (String or Object) – Parameter 값

  • options.animation (Animation Type) – Animation Type, Default: ‘DEFAULT’

Surrogate Keys: 위 옵션키들과 같은 하위 버전 호환을 위한 대체 옵션 값들
  • params = param

  • parameter = param

  • parameters = param

  • animate = animation

  • animationType = animation

Example:

  • 전체 옵션 적용

M.page.back({
        param: { "poo": "f3ede926587776a8cd79fb2afe4e07b4" },
        animation: "DEFAULT"
});
  • 기본값 생략

M.page.back({
        param: { "poo": "f3ede926587776a8cd79fb2afe4e07b4" }
});
  • 옵션 없이 실행

M.page.back();

Page Remove

M.page.remove(url)

Changed in version 2.1.0.

Arguments
  • url (String) – 삭제할 Page 위치값, URL Rule, 필수 값

주의)

Stack 정보를 이용하는 경우, stack의 역순으로 제거한다. 현재 페이지는 삭제 불가

Example:

  • 페이지 명으로 삭제

M.page.remove("sample.html");
  • stack 정보 이용 삭제

var pagelist = M.info.stack();
M.page.remove(pagelist[2].key);

Page Replace

M.page.replace(options)

Changed in version 2.1.0.

Arguments
  • options.url (String) – 이동할 Page 위치값, URL Rule, 필수 값

  • options.param (String or Object) – Parameter 값

Surrogate Keys: 위 옵션키들과 같은 하위 버전 호환을 위한 대체 옵션 값들
  • path = url

  • params = param

  • parameter = param

  • parameters = param

M.page.replace(url, options)

Changed in version 2.1.0.

Arguments
  • url (String) – 이동할 Page 위치값, URL Rule, 필수 값

  • options (Object) – 설정값 동일

Example:

  • 페이지 명만 적용

M.page.replace("sample.html");
  • 옵션 포함

    M.page.replace({
url : "sample.html",
            param: { "poo": "f3ede926587776a8cd79fb2afe4e07b4" }
    });
  • URL 적용

M.page.replace('http://m.naver.com');

Tab Page 호출 (deprecated)

M.page.tab.html(options)

Changed in version 2.1.2.

Arguments
  • options (Object) – 설정 값

  • options.url (String) – 이동할 Page 위치값, URL Rule, 필수 값

  • options.param (String or Object) – Parameter 값

  • options.actionType (Action Type) – History Action Type, Default: ‘NEW_SCR’

  • options.animation (Animation Type) – Animation Type, Default: ‘DEFAULT’

  • options.orientation (Orientation Type) – Orientation Type, Default: ‘DEFAULT’

  • options.delay (Int) – After Delay ( 1Sec = 1000 ), Default: 0

  • options.force (Boolean) – 현재페이지가 아닌 경우에도 페이지 이동 실행 허용, Default: false

Surrogate Keys: 위 옵션키들과 같은 하위 버전 호환을 위한 대체 옵션 값들
  • path = url

  • params = param

  • parameter = param

  • parameters = param

  • action = actionType

  • animate = animation

  • animationType = animation

  • orientationType = orientation

Example:

  • 전체 옵션 적용

M.page.tab.html({
        url: "sample.html",
        param: { "poo": "f3ede926587776a8cd79fb2afe4e07b4" },
        actionType: "NEW_SCR",
        animation: "DEFAULT",
        orientation: "DEFAULT",
        delay: 0,
        force: false
});
  • 기본값 생략

M.page.tab.html({
        url: "sample.html",
        param: { "poo": "f3ede926587776a8cd79fb2afe4e07b4" }
});
  • NO History 적용

M.page.tab.html({
        url: "skip.html",
        actionType: "NO_HISTORY"
});
M.page.tab.html(url, options)

Changed in version 2.1.0.

Arguments
  • url (String) – 이동할 Page 위치값, URL Rule, 필수 값

  • options (Object) – 설정값 동일

Example:

  • 페이지 명만 적용

M.page.tab.html("sample.html");
  • 옵션 적용

M.page.tab.html("sample.html", {
        param: { "poo": "f3ede926587776a8cd79fb2afe4e07b4" }
});
  • 화면 이동

M.page.tab.html('page-html-terminal.html');
  • 화면 이동 (URL)

M.page.tab.html('http://m.naver.com');
  • 화면 이동 (Animation)

M.pagpage.tabe.html('page-html-terminal.html', {
        'animate': 'SLIDE_TOP'
});
  • 화면 이동 (Action)

M.page.tab.html('page-html-terminal.html', {
        'animate': 'SLIDE_RIGHT',
        'action': 'NO_HISTORY'
});
  • 화면 이동 (Orientation)

M.page.tab.html('page-html-terminal.html', {
        'animate': 'SLIDE_TOP',
        'orient': 'LAND',
        'action': 'NO_HISTORY'
});
  • 화면 이동 (Parameter)

//허용 사이즈 : 1Mb (android bundle 허용 size)

M.page.tab.html('page-html-terminal.html', {
        'param': {
                'a':'1',
                'b':'2',
                'c':'3'
        }
});
  • 하드웨어 가속 사용 (Parameter)

M.page.tab.html('page-html-terminal.html', {
         param: {"__HARDWARE_ACCELERATE_FOR_ACTIVITY__" : "Y"}
});

Page Tab Remove (deprecated)

M.page.tab.remove(url)

Changed in version 2.1.0.

Arguments
  • url (String) – 삭제할 Page 위치값, URL Rule, 필수 값

주의)

Stack 정보를 이용하는 경우, stack의 역순으로 제거한다. 현재 페이지는 삭제 불가

Example:

  • 페이지 명으로 삭제

M.page.tab.remove("sample.html");

Page Tab Back (deprecated)

M.page.tab.back(options)

Changed in version 2.1.0.

Arguments
  • options (Object) – 설정 값

  • options.param (String or Object) – Parameter 값

  • options.animation (Animation Type) – Animation Type, Default: ‘DEFAULT’

Surrogate Keys: 위 옵션키들과 같은 하위 버전 호환을 위한 대체 옵션 값들
  • params = param

  • parameter = param

  • parameters = param

  • animate = animation

  • animationType = animation

Example:

  • 전체 옵션 적용

M.page.tab.back({
        param: { "poo": "f3ede926587776a8cd79fb2afe4e07b4" },
        animation: "DEFAULT"
});
  • 기본값 생략

M.page.tab.back({
        param: { "poo": "f3ede926587776a8cd79fb2afe4e07b4" }
});
  • 옵션 없이 실행

M.page.tab.back();

Native 로 이동

M.page.activity(options)

Changed in version 2.1.1.

Arguments
  • options (Object) – 설정 값

  • options.className (String) – 이동할 Native Activity Class Name, Native Class Name Rule, 필수 값

  • options.param (String or Object) – Parameter 값

  • options.actionType (Action Type) – History Action Type, Default: ‘NEW_SCR’

  • options.animation (Animation Type) – Animation Type, Default: ‘DEFAULT’

  • options.orientation (Orientation Type) – Orientation Type, Default: ‘DEFAULT’

Surrogate Keys: 위 옵션키들과 같은 하위 버전 호환을 위한 대체 옵션 값들
  • appClass = className

  • params = param

  • parameter = param

  • parameters = param

  • action = actionType

  • animate = animation

  • animationType = animation

  • orientationType = orientation

Example:

  • 전체 옵션 적용

M.page.activity({
        className: "SampleActivity",
        param: { "poo": "f3ede926587776a8cd79fb2afe4e07b4" },
        actionType: "NEW_SCR",
        animation: "DEFAULT",
        orientation: "DEFAULT"
});
  • 기본값 생략

M.page.activity({
        className: "SampleActivity",
        param: { "poo": "f3ede926587776a8cd79fb2afe4e07b4" }
});
  • NO HISTORY 적용

M.page.activity({
        className: "SampleActivity",
        actionType: "NO_HISTORY"
});
M.page.activity(className, options)

Changed in version 2.1.0.

Arguments
  • className (String) – 이동할 Native Activity Class Name, Native Class Name Rule, 필수 값

  • options (Object) – 설정값 동일

Example:

  • 페이지 명만 적용

M.page.activity("SampleActivity");
  • 옵션 포함

M.page.activity("SampleActivity", {
        param: { "poo": "f3ede926587776a8cd79fb2afe4e07b4" }
});
  • 하드웨어 가속 사용 (Parameter)

M.page.activity("SampleActivity", {
         param: {"__HARDWARE_ACCELERATE_FOR_ACTIVITY__" : "Y"}
});
M.page.native(options)

Deprecated since version 2.1.0.8.

  • M.page.activity 로 대체

Example:

  • native 화면 호출

M.page.native("SampleActivity");

Data API

  • Web <-> Native 간에 데이타 공유 가능

  • 공유 가능한 데이타는 String

Type

Description

Param

Parameter Data
  • 화면이 Stack에 존재하는 동안 유지

Global

Memory Data
  • 앱 실행 후 종료시까지 유지

Storage

File Reference Data,
  • 앱을 다시 삭제되기 전까지 유지

  • 파일로 저장되므로 사용자 정보는 암호화 필요 ( Security API )

Parameters Data

M.data.param(key)

Changed in version 2.1.0.

Arguments
  • key (String) – Parameter 키값

  • 이전 화면에서 현재 화면으로 보낸 Parameter 를 가져온다.

  • 현재 화면에 저장된 Parameter 를 가져온다.

Example:

// 페이지 호출
M.page.html({
    path: "sample.html",
    param: {
        "poo": "f3ede926587776a8cd79fb2afe4e07b4"
    }
});

// sample.html 에서 넘어온 Parameter 확인
M.data.param("poo");
M.data.param(key, value)

Changed in version 2.1.0.

Arguments
  • key (String) – Parameter로 저장할 키값

  • value (*) – Parameter로 저장하는 값

  • 화면에 Parameter 를 저장한다.

Example:

  • Parameter 변수 저장 (default)

M.data.param("goo", "6cdcbae015da6f882373107c90209267");
  • Parameter 변수 저장 (객체)

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) );
M.data.removeParam(key)

Changed in version 2.1.0.

Arguments
  • key (String) – 제거하려는 Parameter 키값

  • 화면에서 Parameter 를 제거한다.

Example:

M.data.removeParam("poo");
M.data.removeParam()

Changed in version 2.1.0.

  • 화면에서 Parameter 전체를 제거한다.

Example:

M.data.removeParam();

Global Data

M.data.global(key)

Changed in version 2.1.0.

Arguments
  • key (String) – 전역 변수 키값

  • 전역 변수를 가져온다.

Example:

M.data.global("goo");
M.data.global(key, value)

Changed in version 2.1.0.

Arguments
  • key (String) – 전역 변수로 저장하려는 키값

  • value (*) – 전역 변수로 저장하는 값

  • 전역 변수로 저장한다

Example:

  • 전역 변수 저장 (default)

M.data.global("goo", "6cdcbae015da6f882373107c90209267");
  • 전역 변수 저장 (객체)

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) );
M.data.global()

Changed in version 2.1.0.

  • 모든 전역 변수를 가져온다.

Example:

M.data.global();
M.data.removeGlobal(key)

Changed in version 2.1.0.

Arguments
  • key (String) – 제거하려는 전역변수 키값

  • 전역 변수를 제거한다.

Example:

M.data.removeGlobal("goo");
M.data.removeGlobal()

Changed in version 2.1.0.

  • 전역 변수 전체를 제거한다.

  • 제거할 수 없는 예약키(?)는 제외

Example:

M.data.removeGlobal();

Storage Data

M.data.storage(key)

Changed in version 2.1.0.

Arguments
  • key (String) – 영속 변수 키값

  • 영속 변수를 가져온다.

Example:

M.data.storage("soo");
M.data.storage(key, value)

Changed in version 2.1.0.

Arguments
  • key (String) – 영속 변수로 저장하려는 키값

  • value (*) – 영속 변수로 저장하는 값

  • 영속 변수로 저장한다.

Example:

  • 영속 변수 저장 (default)

M.data.storage("goo", "6cdcbae015da6f882373107c90209267");
  • 영속 변수 저장 (객체)

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) );
M.data.removeStorage(key)

Changed in version 2.1.0.

Arguments
  • key (String) – 제거하려는 영속변수 키값

  • 영속 변수를 제거한다.

Example:

M.data.removeStorage("goo");
M.data.removeStorage()

Changed in version 2.1.0.

  • 영속 변수 전체를 제거한다.

  • 제거할 수 없는 예약키(?)는 제외

Example:

M.data.removeStorage();

Security API

  • 암복호화 관련 함수를 제공

M.sec.encrypt(source)

Changed in version 2.1.1.

Arguments
  • source (String) – 암호화할 Hex 문자열

Return type

Object

  • 문자열을 암호화하여 Hex String 형태로 반환한다.

Key

Type

Description

status

String

변환 성공 여부 (SUCCESS or FAIL)

result

String

암호화된 문자열

Example:

  • 암호화

M.sec.encrypt( "Sample Text" ).result
M.sec.decrypt(source)

Changed in version 2.1.1.

Arguments
  • source (String) – 암호화된 Hex 문자열

Return type

Object

  • 함수는 문자열을 복호화하여 반환한다.

Key

Type

Description

status

String

변환 성공 여부 (SUCCESS or FAIL)

result

String

복호화된 문자열

Example:

  • 복호화

M.sec.decrypt( "1cf24b4ba06470d0809f9ac920e0ee17" ).result
  • 암호화 / 복호화

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

시스템, 라이브러리, 디바이스 등의 정보를 제공

M.info.version()

Changed in version 2.1.1.

Returns

설치된 API 의 버전 결과

Return type

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:

M.info.version();
M.info.memory()

Changed in version 2.1.0.

Returns

메모리 사용정보

Return type

Object

used

String

Used Memory Bytes

free

String

Free Memory Bytes

total

String

Total Memory Bytes

Example:

M.info.memory();
M.info.device()

Changed in version 2.1.1.

Returns

Device 정보

Return type

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:

M.info.device();
M.info.device(keyPath)

Changed in version 2.1.2.

Arguments
  • key (String) – 가져오려는 정보의 키값

Returns

키에 대한 값

Example:

// 특정 키로 조회
if ( M.info.device("os.name") == "iPhone OS" || M.info.device("os.name") == "iOS" ) {
     alert( "이 운영체제는 iOS 입니다.");
}

if ( M.info.device("support.telephone") === false ) {
    alert( '통화 할 수 없는 단말기 입니다.' );
}
M.info.stack()

Changed in version 2.1.4.

Returns

Stack 사용정보

Return type

Array

  • Stack 별 정보

Key

Type

Description

key

String

Stack Key 값, API 버전 마다 값이 달라질 수 있음

action

String

Stack 의 ActionType (Action Type) 값

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 (Orientation Type) 값

tabs[index].path

String

해당 화면의 리소스의 path 값

tabs[index].alias

String

해당 화면의 리소스의 alias 경로

tabs[index].source

String

해당 화면의 리소스의 절대 경로

  • Stack 정보 내에서 tabs 의 첫번째 배열값이 해당 스택의 현재 화면 정보

Example:

M.info.stack();
M.info.stack(index)

Changed in version 2.1.2.

Arguments
  • index (Int) – 가져오려는 Stack Index

Returns

Index 에 대한 Stack 정보

Example:

// 현재 화면 정보
console.log( M.info.stack(0).tabs[0] );
M.info.app()

Changed in version 2.1.5.

Returns

Application 정보

Return type

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:

M.info.app();
M.info.app(keyPath)

Changed in version 2.1.4.

Arguments
  • keyPath (String) – 가져오려는 정보의 Key값

Returns

Key에 대한 값

Example:

if ( M.info.app("resource.default_version") == M.info.app("resource.current_version") ) {
    // 앱으로 배포된 버전과 리소스 버전 정보가 같은 경우

}

Apps API

  • 앱간 연동을 위한 API 를 제공.

내장 브라우저 실행

M.apps.browser(url, encoding)

Changed in version 2.1.0.

Arguments
  • url (String) – 기본 브라우저로 호출하기 위한 URL

  • encoding (String) – URL Encoding, EUC-KR과 UTF-8 지원

  • Encoding

Encoding

Description

EUC-KR

Variable-width encoding

UTF-8

Character encoding in Unicode

Example:

M.apps.browser("http://morpheus.co.kr/", "UTF-8");

앱 삭제

M.apps.remove(identifier)

Changed in version 2.1.0.

Arguments
  • identifier (String) – 삭제할 앱의 패키지명

  • Android Only

Example:

//Android Only
M.apps.remove("com.sample.app");

Warning

Android targetSDK 26 이상은, AndroidManifest.xml 에 아래와 같이 Permission 선언이 필요함.

<uses-permission android:name=”android.permission.REQUEST_DELETE_PACKAGES”/>

앱 정보 반환

M.apps.info(packageName)

Changed in version 2.1.0.

Arguments
  • packageName (String) – 호출할 앱의 고유 scheme

Returns

설치된 앱 정보 추출

Return type

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:

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 에 퍼미션을 선언해야 한다. <uses-permission android:name=”android.permission.QUERY_ALL_PACKAGES”/>

  2. google play

    다른 앱 정보를 취득하기 위해, 취득하고자 하는 앱을 등록하는 절차를 적용해야 한다.

    참고 URL : https://developer.android.com/preview/privacy/package-visibility?hl=ko

    <manifest package=”com.example.game”>
    <queries>

    <package android:name=”com.example.store” />

    <package android:name=”com.example.services” />

    </queries>

    </manifest>

앱 설치 (In-House 배포용)

M.apps.install(url, name)

Changed in version 2.1.0.

Arguments
  • url (String) – download url

  • name (String) – 앱 이름

  • Only Android

  • MNetwork 라이브러리 적용 필수

Example:

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 선언이 필요함.

<uses-permission android:name=”android.permission.REQUEST_INSTALL_PACKAGES”/>

다운로드 후 앱 설치 (In-House 배포용)

M.apps.downloadAndInstall(url, appName, option)

Changed in version 2.1.0.

Arguments
  • url (String) – download url

  • appName (String) – 앱 이름

  • option (Object) – 네트워크 설정 값

  • option.indicator (Boolean) – 인디케이터 여부 (default: true)

  • option.timeout (Int) – 타임 아웃 (millisecond)

  • option.onprogress (Function) – 다운로드 진행 상태 콜백 함수

M.apps.onprogress(total, current, remaining, percentage)
Arguments
  • total (String) – 다운로드 파일 사이즈

  • current (String) – 다운로드된 파일 사이즈

  • remaining (String) – 남은 파일 사이즈

  • percentage (String) – 진행률 퍼센트

  • Only Android

  • MNetwork 라이브러리 적용 필수

Example:

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 선언이 필요함.

<uses-permission android:name=”android.permission.REQUEST_INSTALL_PACKAGES”/>

앱 실행

M.apps.open(scheme, param)

Changed in version 2.1.0.

Arguments
  • scheme (String) – 호출할 앱의 고유 scheme

  • param (String or Object) – Parameter 값

Returns

앱 호출 성공 여부

Return type

Boolean

  • OS 별 Scheme 값

OS

Description

Android

Package Name

iOS

URL Scheme

  • iOS 9.0 이상부터 Info.plist 에 LSApplicationQueriesSchemes 로 scheme 등록 필요

    Example:

    • 호출하는 앱에서 처리 내용

    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"});
    }
    
    • 호출되는 앱에서 처리 내용

    //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();
            }
    }
    

스토어 열기

M.apps.store(identifier)

Changed in version 2.1.0.

Arguments
  • identifier (String) – Store 에서의 앱 고유값

  • Identifier in AppStore

OS

Identifier

Android

Package Name

iOS

AppStore App ID

Example:

  • 앱 지정하여, 스토어 열기

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 열기

M.apps.store();

System API

  • 전화걸기, SMS, 진동등 시스템 기능들을 제공.

  • 전화 걸기

M.sys.call(number)

Changed in version 2.1.1.

Arguments
  • number (String) – 전화번호

  • 네이티브 전화 어플을 구동시킨다.

Example:

  • 구분자

M.sys.call( '010-1234-5678' )
  • 숫자

M.sys.call( '01012345678' )
  • App 종료

M.sys.exit()

Changed in version 2.1.1.

  • 앱을 종료한다.

Example:

M.sys.exit()
  • Camera flash 호출

M.sys.flash(status)

Changed in version 2.1.1.

Arguments
  • status (String) – 카메라 플래시 상태 변경 (ON, OFF)

  • 카메라 플래시의 상태를 변경한다.

Example:

  • 호출 (ON)

M.sys.flash( 'ON' )
  • 호출 (OFF)

M.sys.flash( 'OFF' )
  • 메일 발송

M.sys.mail(options)

Changed in version 2.1.1.

Arguments
  • options (Object) – 설정값

  • options.to (Array) – 받는 사람 이메일 주소

  • options.cc (Array) – 참조 이메일 주소

  • options.bcc (Array) – 숨은참조 이메일 주소

  • options.subject (String) – 메일 제목

  • options.contents (String) – 메일 내용

Surrogate Keys: 위 옵션키들과 같은 하위 버전 호환을 위한 대체 옵션 값들
  • content = contents

  • 메일을 화면으로 이동한다.

Example:

M.sys.mail({
        to: ['test1@test.com', 'test2@test.com']
});
M.sys.mail({
        to: ['test1@test.com', 'test2@test.com'],
        subject: '제목'
});
M.sys.mail({
        to: ['test1@test.com', 'test2@test.com'],
        subject: '제목',
        content: '내용'
});
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 발송

M.sys.sms(options)

Changed in version 2.1.1.

Arguments
  • options (Object) – 설정값

  • options.numbers (Array) – 수신 전화번호

  • options.message (Array) – SMS 내용

Surrogate Keys: 위 옵션키들과 같은 하위 버전 호환을 위한 대체 옵션 값들
  • target = numbers

  • content = message

  • contents = message

  • msg = message

  • SMS 전송 화면으로 이동한다.

Example:

M.sys.sms({
        numbers: '010-123-4567, 010-987-6543'
});
M.sys.sms({
        target: ['010-123-4567', '0109876543'],
        content: '안녕하세요.'
});
  • 진동 발생

M.sys.vibration()

Changed in version 2.1.1.

  • 네이티브 진동을 호출한다.

Example:

  • 진동 호출

M.sys.vibration()
  • 진동 호출 (time / ms)

M.sys.vibration(2000);
  • 진동 호출 (3s)

M.sys.vibration('3s');
  • 진동 호출 (3000ms)

M.sys.vibration('3000ms');
  • Camera Flash 상태 가져오기

M.sys.flash()

Changed in version 2.1.1.

Return type

Object

Key

Type

Description

status

String 플래시의 상태 (ON, OFF)

  • 카메라 플래시의 상태를 가져온다.

  • Android 5.0 이상 미지원

Example:

M.sys.flash()

Tool API

로그 등 유틸 API 를 제공

Log

  • 아래와 같은 타입으로 로그 레벨을 설정 할 수 있다.

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

M.tool.log(options)

Changed in version 2.1.0.

Arguments
  • options (Object) – 설정 값

  • options.message (String) – Log Message, 필수 값

  • options.level (Log Level) – Log Level, Default: DEBUG

  • options.tag (String) – Log 분류를 위한 Tag 값, Default: WEB

Example:

  • 전체 옵션 적용

M.tool.log({
        message:"로그 메세지",
        level: "DEBUG",
        tag: "WEB"
});
  • 기본값 생략

M.tool.log({
        message:"로그 메세지"
});
  • Log 출력 (Object)

M.tool.log({
        'a': '1',
        'b': '2',
        'c': '3',
        'd': 4,
        'e': "asdfasdfas",
        'f': false
});
  • Log 출력 (Array)

M.tool.log(['a', 'b', 'c', 123, true, false, "\n"]);
  • Log 출력 (Multiple)

var arr = ['a', 'b', 'c']
var obj = {
        'a':'1',
        'b':'2',
        'c':'3'
};

M.tool.log('로그', arr, obj);
  • Log 출력 (Multiple + Setting)

var arr = ['a', 'b', 'c'];
var obj = {
        'a':'1',
        'b':'2',
        'c':'3'
};

M.tool.log(obj, arr, '로그', {
        'level': 2,
        'tag': 'test'
});
  • Log 출력 (Int)

M.tool.log(0);
M.tool.log(message)

Changed in version 2.1.0.

Arguments
  • message (String) – Log Message, 필수 값

  • 메세지만 보내는 경우 기본 옵션값으로 Log 전달

Example:

// 로그 메세지만 전달
M.tool.log( "로그 메세지" );
M.tool.log(level, tag, message[, ...])

Changed in version 2.1.0.

Arguments
  • level (String) – Log Level, Default: DEBUG

  • tag (String) – Log 분류를 위한 Tag 값, Default: WEB

  • message (*) – Log Message

  • 첫번째 파라미터 값이 Level 에 해당하는 값인 경우, Level, Tag, Message 순으로 인식

Example:

// Error Level + WEB tag + 메세지 순으로 전달
M.tool.log( "ERROR", "WEB", "오류 메세지" );

Native API 호출

ExtendWNInterface 에 만들어진 api 를 호출하기 위한 방법

  • Native API 동기방식


M.execute(api, param)

Changed in version 2.1.0.

Arguments
  • api (String) – ExtendWNInterface 에 생성된 Native API 명칭

  • options (Object) – Native api에 전달될 설정 값

Example:

 // 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 설정

M.execute(api, param, callback)

Changed in version 2.1.0.

Arguments
  • api (String) – ExtendWNInterface 에 생성된 Native API 명칭

  • options (Object) – Native api에 전달될 설정 값

  • callback (String) – callback function

Example:

window.callbackFunc( result ){
      console.log( result );
}

M.execute("exName", options, "callbackFunc");
  • Native API 비동기 방식 호출 : TYPE 2


callback 함수가 익명함수이거나 window에 선언되어 있지 않을 경우 M.response.on함수를 이용, toString하여 param 설정

M.execute(api, param, callback)

Changed in version 2.1.0.

Arguments
  • api (String) – ExtendWNInterface 에 생성된 Native API 명칭

  • options (Object) – Native api에 전달될 설정 값

  • callback (String) – callback function

Example:

var callback = M.response.on( function( result ) {
                                    console.log( result );
                                }).toString()

M.execute("exName", options, callback);