MNetwork¶
MNetwork Framework 에 대한 필수 API 를 정의
Net API¶
네크워크 관련된 기능들을 제공
HTTP 통신¶
-
M.net.http.
send
(setting)¶ Changed in version 2.2.0.
- Arguments
setting (Object) – 리소스 업데이트를 위한 설정 정보
setting.server (String) – 타겟 서버
setting.path (String) – 전문 코드
setting.method (String) – 전송 방식 (GET, PUT, POST, DELETE)
setting.timeout (int) – 타임 아웃 (millisecond)
setting.dummy (Bool) – 더미전문 여부
setting.encrypt (Bool) – 데이터 암복호화 여부 (네이티브 NetworkManager에 구현이 되어있어야함)
setting.indicator (String) – 인디케이터 정보
setting.userData (Object) – 사용자 정보 셋팅 (스크립트에서 네이티브로 정보값을 전달할 때 사용, 실제 통신에는 포함되지 않음)
setting.success (Function) – 성공 여부에 따라 호출되는 콜백 함수
-
M.net.http.
success
(receivedData)¶ - Arguments
receivedData (Object) – 실행 결과
- Arguments
setting.error (Function) – 오류 발생 시 콜백 함수
-
error
(errCode, errMessage)¶ - Arguments
errCode (String) – 에러 코드
errMessage (String) – 에러 메세지
http 네트워크 통신을 한다.
- Surrogate Keys: 위 옵션키들과 같은 하위 버전 호환을 위한 대체 옵션 값들
reqdata = data
secure = encrypt
trcode = path
restAction = method
onsuccess = success
onerror = error
Example:
기본 옵션
M.net.http.send({ server: 'DEMO', path: 'language/translate/v2/detect', method: 'POST', timeout: 5000, userData: {urlInfo: 'http://www.uracle.co.kr'}, indicator:{ show: true, message: 'Loading..', cancelable: true }, data: { key: 'AIzaSyDbk0nUTyd4ChyFrCkHa-XAufg6-0u-OLw', q: 'test' }, success: function(recevedData, setting) { console.log( "onSuccess, " + JSON.stringify(recevedData) ); }, error: function(errorCode, errorMessage, setting) { console.log( "onError, " + errorCode + ", " + errorMessage ); } });
기본 옵션 without Indicator
M.net.http.send({ server: 'DEMO_SERVER', path: 'api/msp/sample/test', method: 'POST', userData: {urlInfo: 'http://www.uracle.co.kr'}, indicator: { show: false }, data: { 'deploy' : '0', 'version': '000000', 'rsp' : '0b3235695f40f279ba3bda96497b894eb457ce73f8dcd6ec4d2c39d1fa622dac7b8e4c52f9b477e759343f07969bfe1d' }, onSuccess: function(recevedData, setting) { M.tool.log( "onSuccess", recevedData ); alert( "onSuccess, " + JSON.stringify(recevedData) ); }, "onError": function(errorCode, errorMessage, setting) { M.tool.log( "onError", errorCode, errorMessage ); alert( "onError, " + errorCode + ", " + errorMessage ); } });
모든 옵션
M.net.http.send({ server: 'DEMO_SERVER', path: 'api/msp/sample/test', method: 'POST', timeout: '1000', userData: {urlInfo: 'http://www.uracle.co.kr'}, dummy: false, secure: false, indicator:{ show: true, message: 'Loading..', cancelable: true }, data: { 'deploy' : '0', 'version': '000000', 'rsp' : '0b3235695f40f279ba3bda96497b894eb457ce73f8dcd6ec4d2c39d1fa622dac7b8e4c52f9b477e759343f07969bfe1d' }, onSuccess: function(recevedData, setting) { M.tool.log( "onSuccess", recevedData ); alert( "onSuccess, " + JSON.stringify(recevedData) ); }, "onError": function(errorCode, errorMessage, setting) { M.tool.log( "onError", errorCode, errorMessage ); alert( "onError, " + errorCode + ", " + errorMessage ); } });
SOCKET 통신¶
-
M.net.socket.
send
(setting)¶ Changed in version 2.2.0.
- Arguments
setting (Object) – 리소스 업데이트를 위한 설정 정보
setting.server (String) – 타겟 서버
setting.path (String) – 전문 코드
setting.timeout (int) – 타임 아웃 (millisecond)
setting.dummy (Bool) – 더미전문 여부
setting.encrypt (Bool) – 데이터 암복호화 여부 (네이티브 NetworkManager에 구현이 되어있어야함)
setting.userData (Object) – 사용자 정보 셋팅
setting.indicator (String) – 인디케이터 정보
setting.success (Function) – 성공 여부에 따라 호출되는 콜백 함수
-
M.net.socket.
success
(receivedData)¶ - Arguments
receivedData (Object) – 실행 결과
- Arguments
setting.error (Function) – 오류 발생 시 콜백 함수
-
error
(errCode, errMessage)¶ - Arguments
errCode (String) – 에러 코드
errMessage (String) – 에러 메세지
socket 네트워크 통신을 한다.
- Surrogate Keys: 위 옵션키들과 같은 하위 버전 호환을 위한 대체 옵션 값들
reqdata = data
secure = encrypt
trcode = path
onsuccess = success
onerror = error
Example:
var sendData = new DataSendingHandler();
sendData.putHeadInfo("command","0");
var templeteData = new DataReceivingHandler();
M.net.socket.send({
'server': 'TCP_TEST',
'path': 'S14',
'data': sendData,
'templeteData': templeteData,
'encrypt': false,
'indicator': {
'show': false,
'message': '',
'cancelable': false
},
'start': function( setting ) {
WNLog("CJD", "socket.send.start : " + JSON.stringify(setting));
console.log( 'socket.send.start', setting );
},
'finish': function( setting ) {
WNLog("CJD", "socket.send.finish : " + JSON.stringify(setting));
console.log( 'socket.send.finish', setting );
},
'success': function(receivedData, trCode) {
WNLog("CJD", "socket.send.success");
console.log( 'socket.send.success' );
if(receivedData.length > 0){
var strBuff = '';
for(var i=0; i<receivedData.length; i++){
strBuff += '<li>';
strBuff += ' <div class="hbox jc">';
strBuff += ' <div class="wifi_info">';
strBuff += ' <p class="name">' + receivedData[i].SSID + '</p>';
strBuff += ' </div>';
strBuff += ' <p class="icon_wifi ' + getWifiIcon(getWifiLevel(receivedData[i].level)) + '"></p>';
strBuff += ' </div>';
strBuff += '</li>';
}
$("#wifiList").html(strBuff);
$("#wifiList > li").on("click", function(){
var $this = $(this);
mPageHtml("wifi_setting", {
param : {
SSID : receivedData[$this.index()].SSID
}
});
});
}
},
'error': function() {
WNLog("CJD", "socket.send.error");
console.log( 'socket.send.error' );
popup.confirm.create({
message : "목록 조회에 실패했습니다. 설정을 확인하시겠습니까?",
yesCB : function(){
exWNMoveToWifiSetting();
},
noCB : function(){
mPageBack();
}
});
}
});
리소스 업데이트¶
-
M.net.res.
update
(setting)¶ Changed in version 2.1.4.13.
- Arguments
setting (Object) – 리소스 업데이트를 위한 설정 정보
setting.server (String) – Manifest.xml 에 설정된 서버명 [option]
setting.mode (String) – 배포모드 (real/mode) [option]
setting.finish (Function) – 리소스 업데이트 후 호출되는 콜백 함수
-
M.net.res.
finish
(status, info)¶ - Arguments
status (String) – 실행 결과 코드
info (Object) – 공지 사항, 앱 업데이트 정보
info.app_version_info (Object) – 앱 업데이트 정보
info.notice (Object) – 공지 사항 정보 (게시 기간에 상관없는 가장 최신 정보)
info.notice_list (Array) – 공지 사항 정보 (게시 기간에 해당되는 공지사항 정보 array)
- Arguments
setting.progress (Function) – 리소스 업데이트 진행 상태 콜백 함수
-
progress
(totalSize, readSize, remainingSize, percentage)¶ - Arguments
totalSize (String) – 리소스 총 파일 크기
readSize (String) – 현재까지 받은 크기
remainingSize (String) – 남은 크기
percentage (String) – 현재까지 받은 크기 백분율
- Arguments
setting.error (Function) – 리소스 업데이트 오류 발생 시 콜백 함수
-
error
(errCode, errMessage)¶ - Arguments
errCode (String) – 에러 코드
errMessage (String) – 에러 메세지
리소스 동적 업데이트를 한다.
- Surrogate Keys: 위 옵션키들과 같은 하위 버전 호환을 위한 대체 옵션 값들
onprogress = progress
onfinish = finish
onerror = error
Example [Default]:
var nextPage = "/www/html/common/main.html";
M.net.res.update({
finish : function(status, info, option) {
switch (status) {
// 리소스 업데이트 성공
case 'SUCCESS':
$(".progress-bar").css("width", '100%');
M.page.html(nextPage, {action:"CLEAR_TOP"});
break;
// 리소스 업데이트 성공 And Refresh
case 'SUCCESS_AND_REFRESH':
M.page.replace('intro.html');
break;
// 앱 권장 업데이트
case 'RECOMMENDED_APP_UPDATING' :
M.pop.alert({
title: '알림',
message: '앱 권장 업데이트가 있습니다.',
buttons: ['취소', '확인'],
callback: function(index) {
if(index == 1){
var appUrl = info.app_version_info.download_market_url;
M.apps.browser(appUrl);
}else{
M.page.html(nextPage, {action:"CLEAR_TOP", delay:600});
}
}
});
break;
// 앱 강제 업데이트
case 'FORCED_APP_UPDATING' :
M.pop.alert({
title: '알림',
message: '앱을 업데이트해야 합니다.',
buttons: ['취소', '확인'],
callback: function(index) {
if(index == 1){
var appUrl = info.app_version_info.download_market_url;
M.apps.browser(appUrl);
}else{
M.sys.exit();
}
}
});
break;
// 라이센스 체크 에러
case 'LICENSE_IS_NOT_EXISTENCE':
// 라이센스 무결성 회손
case 'BROKEN_INTEGRITY_OF_LICENSE':
// 라이센스 기간 만료
case 'EXPIRED_LICENSE':
M.pop.alert({
title: '알림',
message: '라이센스 에러입니다.',
buttons: ['취소', '확인'],
callback: function(index) {
if(index == 1){
M.net.res.retry();
}else{
M.sys.exit();
}
}
});
break;
// 설치 메모리 부족
case 'INSUFFICIENT_MEMORY':
M.pop.alert({
title: '알림',
message: '설치 메모리가 부족합니다.',
buttons: ['취소', '확인'],
callback: function(index) {
if(index == 1){
M.net.res.retry();
}else{
M.sys.exit();
}
}
});
break;
// 외장 메모리 카드 사용 오류
case 'EXT_MEM_NOT_AVAIL':
M.pop.alert({
title: '알림',
message: '외장 메모리 오류입니다.',
buttons: ['취소', '확인'],
callback: function(index) {
if(index == 1){
M.net.res.retry();
}else{
M.sys.exit();
}
}
});
break;
// UNDEFINED ERROR
default:
M.pop.alert({
title: '알림',
message: '알 수 없는 오류입니다.',
buttons: ['취소', '확인'],
callback: function(index) {
if(index == 1){
M.net.res.retry();
}else{
M.sys.exit();
}
}
});
break;
}
},
progress : function(total, read, remain, percentage, option) {
console.log('** progress', total, read, remain, percentage);
var progressBarWidth = Math.max( Math.min( percentage, 100 ), 0 ) + "%";
$(".progress-bar").css("width", progressBarWidth);
$(".progress-percent").html( percentage + '%' );
},
error : function(errCode, errMsg, option) {
M.debug.error("** error : ", errCode, errMsg);
M.pop.alert({
title: '알림',
message: '알 수 없는 오류입니다.',
buttons: ['취소', '확인'],
callback: function(index) {
if(index == 1){
M.net.res.retry();
}else{
M.sys.exit();
}
}
});
}
});
Example [Option]:
var nextPage = "/www/html/common/main.html";
M.net.res.update({
server : "RES_UPDATE",
mode : "dev",
finish : function(status, info, option) {
switch (status) {
// 리소스 업데이트 성공
case 'SUCCESS':
$(".progress-bar").css("width", '100%');
M.page.html(nextPage, {action:"CLEAR_TOP"});
break;
// 리소스 업데이트 성공 And Refresh
case 'SUCCESS_AND_REFRESH':
M.page.replace('intro.html');
break;
// 앱 권장 업데이트
case 'RECOMMENDED_APP_UPDATING' :
M.pop.alert({
title: '알림',
message: '앱 권장 업데이트가 있습니다.',
buttons: ['취소', '확인'],
callback: function(index) {
if(index == 1){
var appUrl = info.app_version_info.download_market_url;
M.apps.browser(appUrl);
}else{
M.page.html(nextPage, {action:"CLEAR_TOP", delay:600});
}
}
});
break;
// 앱 강제 업데이트
case 'FORCED_APP_UPDATING' :
M.pop.alert({
title: '알림',
message: '앱을 업데이트해야 합니다.',
buttons: ['취소', '확인'],
callback: function(index) {
if(index == 1){
var appUrl = info.app_version_info.download_market_url;
M.apps.browser(appUrl);
}else{
M.sys.exit();
}
}
});
break;
// 라이센스 체크 에러
case 'LICENSE_IS_NOT_EXISTENCE':
// 라이센스 무결성 회손
case 'BROKEN_INTEGRITY_OF_LICENSE':
// 라이센스 기간 만료
case 'EXPIRED_LICENSE':
M.pop.alert({
title: '알림',
message: '라이센스 에러입니다.',
buttons: ['취소', '확인'],
callback: function(index) {
if(index == 1){
M.net.res.retry();
}else{
M.sys.exit();
}
}
});
break;
// 설치 메모리 부족
case 'INSUFFICIENT_MEMORY':
M.pop.alert({
title: '알림',
message: '설치 메모리가 부족합니다.',
buttons: ['취소', '확인'],
callback: function(index) {
if(index == 1){
M.net.res.retry();
}else{
M.sys.exit();
}
}
});
break;
// 외장 메모리 카드 사용 오류
case 'EXT_MEM_NOT_AVAIL':
M.pop.alert({
title: '알림',
message: '외장 메모리 오류입니다.',
buttons: ['취소', '확인'],
callback: function(index) {
if(index == 1){
M.net.res.retry();
}else{
M.sys.exit();
}
}
});
break;
// UNDEFINED ERROR
default:
M.pop.alert({
title: '알림',
message: '알 수 없는 오류입니다.',
buttons: ['취소', '확인'],
callback: function(index) {
if(index == 1){
M.net.res.retry();
}else{
M.sys.exit();
}
}
});
break;
}
},
progress : function(total, read, remain, percentage, option) {
console.log('** progress', total, read, remain, percentage);
var progressBarWidth = Math.max( Math.min( percentage, 100 ), 0 ) + "%";
$(".progress-bar").css("width", progressBarWidth);
$(".progress-percent").html( percentage + '%' );
},
error : function(errCode, errMsg, option) {
M.debug.error("** error : ", errCode, errMsg);
M.pop.alert({
title: '알림',
message: '알 수 없는 오류입니다.',
buttons: ['취소', '확인'],
callback: function(index) {
if(index == 1){
M.net.res.retry();
}else{
M.sys.exit();
}
}
});
}
});
리소스 업데이트 가능 여부 확인¶
-
M.net.res.
check
(setting)¶ Changed in version 2.1.4.13.
- Arguments
setting (Object) – 리소스 서버 정보
setting.server (String) – Manifest.xml 에 설정된 서버명 [option]
setting.mode (String) – 배포모드 (real/mode) [option]
setting.callback (Function) – 체크 후 호출되는 콜백 함수
-
M.net.res.
callback
(status, info)¶ - Arguments
status (String) – 실행 결과 코드 (성공: IS_RESOURCE_UPDATE, 실패: FAIL_RESOURCE_UPDATE)
info (Object) – 앱 업데이트 정보
info.client_app_version (String) – 클라이언트 앱 버전
info.current_app_version (String) – 현재 앱 버전
info.download_market_url (String) – 다운로드 url
info.download_res_version (String) – 다운로드 리소스 버전
info.required_app_version (String) – 필수 앱 버전
info.total_file_size (Int) – 리소스 다운로드 파일 크기
info.update (Bool) – 업데이트 가능 여부
Example:
M.net.res.check({
callback: function (status, info) {
if (status !== 'IS_RESOURCE_UPDATE') {
return M.pop.alert('리소스 업데이트를 실패하였습니다.');
}
if(info.update) {
// 업데이트 가능한 경우
M.net.res.update({
//.. 중략
})
} else {
// 업데이트가 없는 경우 (최신버전인 경우)
M.page.html('login.html');
}
}
});
다운로드 리소스 초기화¶
-
M.net.res.
reset
()¶ Changed in version 2.1.4.13.
다운로드 된 리소스 정보를 초기화 한다. [버전이 초기화 되며, 실제 리소스는 제거 되지 않음].
Example:
M.net.res.reset();
통신 에러 코드(for Android)¶
CODE
Description
9994
네트워크 URL Error
9995
네트워크 통신중 취소처리
9996
네트워크 연결 에러
9997
통신중 에러 / 통신 내부 에러
9998
네트워크 응답시간 초과 에러
9999
서버에서 리턴된 에러
404
Not found(네트워크 연결 실패)