전자정부 표준프레임워크 서버 애플리케이션과 모바일 하이브리드 앱은 Loosely Coupling 되어 있으며 Restful 방식으로 웹서비스를 통해 통신한다.
서비스 | 버전 | 라이선스 |
---|---|---|
Android SDK | revision 18 | Apache License 2.0 |
PhoneGap(cordova) | Cordova 2.9.0 | MIT License |
javaScript Framework | 전자정부 표준프레임워크 사용자 경험(UX) 기능 | Apache License 2.0 |
PhoneGap(cordova) | Cordova 2.9.0 | MIT License |
iOS SDK | Xcode 4.4.1 | |
Platform | iOS 5.1 | |
ASIHttpRequest | 1.8.1 | Apache License 2.0 |
EgovInterface API는 특정 서버와 HTTP/HTTPS 통신을 하는 static library이다. GET, POST, PUT, DELETE로 특정 서버와 통신 파일 upload / download 가 가능하다. 통신의 시작, 결과, 실패에 대한 상황들을 delegate로 구분하여 전달하기 때문에 코드 분석이 쉽다.
Spring for Android 는 안드로이드 어플리케이션 개발을 단순화 하기 위한 Spring framework 의 확장기능 이다.
구분 | 설명 |
---|---|
장점 | - REST Client 로써 Java 기반의 RestTemplate 사용을 포함 - 트위터, 페이스북 같은 소셜 네트워크에 대한 인증을 지원 - JSON, XML, RSS, Atom 에 대한 third-party 라이브러리를 사용할 수 있음 - 최근 1.0 버전으로 Release 되었음 - Maven 지원 |
단점 | REST 방식만 지원 |
파일 | 설명 |
---|---|
res/values/serverinfo.xml | serverinfo.xml 의 SERVER_URL을 수정<?xml version="1.0" encoding="utf-8"?> <resources> <string name="SERVER_URL"> http://192.168.100.87:8080/APIGuide_Web </string> </resources> |
plugins.xml | plugins.xml 에 다음 내용 추가 <plugin name=“EgovInterfacePlugin” value=“kr.go.egovframework.hyb.plugin.EgovInterfacePlugin” /> |
구분 | 설명 |
---|---|
window.plugins.EgovInterface.get | HTTP GET Method를 수행한다. |
window.plugins.EgovInterface.post | HTTP POST Method를 수행한다. |
window.plugins.EgovInterface.get(url,accept_type, null, function(jsondata) { var data = JSON.parse(jsondata); var list_html = ""; var totcnt = data.networkInfoList.length; for (var i = 0; i < totcnt; i++) { result = data.networkInfoList[i]; list_html += "<li><h3>UUID : " + result.uuid + "</h3>"; list_html += "<p><strong>Network Connection Type : " + result.networktype + "</strong></p>"; list_html += "<p>Availibility : " + result.useYn + "</p></li>"; } var theList = $('#theList'); theList.html(list_html); $.mobile.changePage("#networkInfoList", "slide", false, false); theList.listview("refresh"); setTimeout(loadiScroll, 200); });
var uri = "/nwk/deleteNetworkInfo.do"; //Accept_Type setting var accept_type = "json"; // http post method call egovHyb.post(url, accept_type, null, function(jsondata) { var data = JSON.parse(jsondata); if(data.resultState == "OK"){ $.mobile.changePage("#networkInfo", { transition: "slide", reverse: true }); }else{ $("#alert_dialog").click( function() { jAlert('데이터 삭제 중 오류가 발생 했습니다.', '삭제 오류', 'c'); }); } });
추가항목 | 추가요소 | 설명 |
---|---|---|
EgovInterface Framework | - CFNetwork.framework - MobileCoreServices.framework - SystemConfiguration.framework - Security.framework - libz.dylib | 자세한 내용은 http://developer.apple.com/library/ios/#documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/Introduction/Introduction.html 에서 확인할 수 있다. |
Libraries | - EgovComModule.h - libEgovComModule.a | - EgovInterface API를 연결하는 header 파일 - 특정 서버와 HTTP/HTTPS 통신을 하는 static library이며, GET, POST, PUT, DELETE로 특정 서버와 통신 파일 upload / download 가 가능하다. 그리고, 통신 진행 상황의 delegate를 제공한다. |
EgovInterface | - EgovInterface.h - EgovInterface.m | EgovInterface API 연결하는 PhoneGap Plug-In이다. 해당 header 파일과 구현부 파일이 있어야만 EgovInterface API와 연동이 가능하다. |
EgovStorageInfo | - EgovStorageInfo.h - EgovStorageInfo.m | 디바이스의 용량 정보를 얻는 PhoneGap Plug-In이다. 해당 header 파일과 구현부 파일이 있어야만 Device의 용량 정보를 가져올 수 있다. |
구분 | 설정 | 설명 |
---|---|---|
Delegate | - onRequestStarted - onRequestFailed - onRequestFinishied | - 서버로 특정 데이터 및 데이터 요구를 시작할 경우 알려주는 delegate이다. - 인터넷 연결이 안되어 있거나, timeout 등의 오류가 있을 때 알려주는 delegate이다. - 서버로 부터 특정 데이터를 성공적으로 받았을 경우 알려주는 delegate이다. 서버 리턴 값을 체크하여 처리한다. |
PhoneGap | Cordovo.plist | Plugins Dictionary에 key는 InterfaceAPI, value는 string으로 EgovInterface 입력되어 있어야 하고, key는 StorageInfoAPI, value는 string으로 EgovStorageInfo 로 입력되어 있어야 PhoneGap과 EgovInterface API와 정상적으로 작동된다. |
구분 | 설명 |
---|---|
initWithURL:delegate: | 초기화와 기본적인 설정을 한다. |
setURL: | 통신할 곳의 URL을 설정한다. |
setTimeOutSeconds: | time out 초를 설정한다. Default로 10초로 설정되어 있다. |
addPost:key: | 입력하고자 하는 값을 key값의 request 파라미터에 설정한다. |
startAsynchronous | 설정하고 입력한 값으로 비동기 통신을 시작한다. |
구분 | 설명 |
---|---|
onNetworkStarted | 통신이 시작된 후 일어나는 이벤트 |
onNetworkFailed: | 통신이 실패한 후 일어나는 이벤트 |
onNetworkFinished:responseString:responseStatusCode: | 통신이 성공한 후 일어나는 이벤트 |
//생성방법 EGovComModule *m_module = [[[EGovComModule alloc] initWithURL:[NSString stringWithFormat:@"%@/index.do",kSERVER_URL] delegate:self] autorelease]; //wi-fi 및 네트워크 체크 if (m_module.isWifi) { NSLog(@"wi-fi"); } else { if (m_module.isNetworkConnected) { NSLog(@"3G/4G"); } else { NSLog(@"Network Disconnected"); } } //통신 시작 [m_module startAsynchronous]; //key value로 값을 추가하고자 할 경우 [m_module addPost:@"값" key:@"key"]; //통신 시작 이벤트 - (void)onNetworkStarted { } //통신 실패 이벤트 - (void)onNetworkFailed:(NSError*)error { } //통신 완료 이벤트 - (void)onNetworkFinished:(NSData*)responseData responseString:(NSString*)responseString responseStatusCode:(NSInteger)responseStatusCode { }
구분 | 링크 |
---|---|
ASIHTTPRequest | http://allseeing-i.com/ASIHTTPRequest |
Apple Developer Library | https://developer.apple.com/library/ios/navigation/ |
PhoneGap Developing a Plugin on iOS | http://docs.phonegap.com/en/1.9.0/guide_plugin-development_ios_index.md.html#Developing%20a%20Plugin%20on%20iOS |
PhoneGap Developing a Plugin on Android | http://docs.phonegap.com/en/1.9.0/guide_plugin-development_android_index.md.html#Developing%20a%20Plugin%20on%20Android |
Spring for Android | http://www.springsource.org/spring-android |