디바이스 API 가이드 프로그램 환경설정

하이브리드 어플리케이션 설정(Android)

설정

res/xml/config.xml
  • 폰갭 어플리케이션의 설정 정보들을 등록해주는 파일이다.
  • 폰갭에서는 각 Device API 들을 Plug-in 형태로 제공하며 해당 Device API Plug-in 들을 plugins 타입 아래에 명시 해 주어야 한다.
  • 전자정부용 웹 서버 어플리케이션과 인터페이스를 하기위해서는 EgovInterfacePlugin 을 추가 해 주어야 한다.
<?xml version='1.0' encoding='utf-8'?>
<widget xmlns:cdv="http://cordova.apache.org/ns/1.0"
    id="kr.go.egovframe.hyb"
    version="0.0.1"
    xmlns="http://www.w3.org/ns/widgets" >
 
    <preference name="loglevel" value="DEBUG" />
 
    <name>DEVICEAPI</name>
 
    <description>
        A sample Apache Cordova application that responds to the deviceready event.
    </description>
 
    <author email="dev@cordova.apache.org" href="http://cordova.io" >
        Apache Cordova Team
    </author>
 
    <content src="../wwwSocketIO/intro.html" />
 
    <access origin="*" />
 
    <feature name="Device" >
        <param
            name="android-package"
            value="org.apache.cordova.device.Device" />
    </feature>
    <feature name="NetworkStatus" >
        <param
            name="android-package"
            value="org.apache.cordova.networkinformation.NetworkManager" />
    </feature>
    <feature name="Battery" >
        <param
            name="android-package"
            value="org.apache.cordova.batterystatus.BatteryListener" />
    </feature>
    <feature name="Accelerometer" >
        <param
            name="android-package"
            value="org.apache.cordova.devicemotion.AccelListener" />
    </feature>
    <feature name="Compass" >
        <param
            name="android-package"
            value="org.apache.cordova.deviceorientation.CompassListener" />
    </feature>
    <feature name="Camera" >
        <param
            name="android-package"
            value="org.apache.cordova.camera.CameraLauncher" />
    </feature>
    <feature name="File" >
        <param
            name="android-package"
            value="org.apache.cordova.file.FileUtils" />
        <param
            name="onload"
            value="true" />
    </feature>
    <feature name="Capture" >
        <param
            name="android-package"
            value="org.apache.cordova.mediacapture.Capture" />
    </feature>
    <feature name="Media" >
        <param
            name="android-package"
            value="org.apache.cordova.media.AudioHandler" />
    </feature>
    <feature name="FileTransfer" >
        <param
            name="android-package"
            value="org.apache.cordova.filetransfer.FileTransfer" />
    </feature>
    <feature name="Notification" >
        <param
            name="android-package"
            value="org.apache.cordova.dialogs.Notification" />
    </feature>
    <feature name="Vibration" >
        <param
            name="android-package"
            value="org.apache.cordova.vibration.Vibration" />
    </feature>
    <feature name="Contacts" >
        <param
            name="android-package"
            value="org.apache.cordova.contacts.ContactManager" />
    </feature>
    <feature name="Globalization" >
        <param
            name="android-package"
            value="org.apache.cordova.globalization.Globalization" />
    </feature>
    <feature name="SplashScreen" >
        <param
            name="android-package"
            value="org.apache.cordova.splashscreen.SplashScreen" />
        <param
            name="onload"
            value="false" />
    </feature>
    <feature name="InAppBrowser" >
        <param
            name="android-package"
            value="org.apache.cordova.inappbrowser.InAppBrowser" />
    </feature>
    <feature name="Geolocation" >
        <param
            name="android-package"
            value="org.apache.cordova.geolocation.Geolocation" />
    </feature>
    <feature name="Whitelist" >
        <param
            name="android-package"
            value="org.apache.cordova.whitelist.WhitelistPlugin" />
        <param
            name="onload"
            value="true" />
    </feature>
 
    <!-- eGovframe DeviceAPI Plug-In -->
    <feature name="EgovInterfacePlugin" >
        <param
            name="android-package"
            value="kr.go.egovframework.hyb.plugin.EgovInterfacePlugin" />
    </feature>
    <feature name="StorageInfoPlugin" >
        <param
            name="android-package"
            value="kr.go.egovframework.hyb.plugin.EgovStorageInfo" />
    </feature>
    <feature name="DeviceNumberPlugin" >
        <param
            name="android-package"
            value="kr.go.egovframework.hyb.plugin.EgovDeviceNumber" />
    </feature>
    <feature name="CustomMyPlugin" >
        <param
            name="android-package"
            value="kr.go.egovframework.hyb.plugin.CustomPlugin" />
    </feature>
 
    <feature name="BarcodeScanner">
        <param name="android-package" value="com.phonegap.plugins.barcodescanner.BarcodeScanner" />
    </feature>
 
    <!-- eGovframe DeviceAPI New Plug-In -->
    <feature name="EgovResourceUpdate" >
        <param name="android-package" value="kr.go.egovframework.hyb.plugin.EgovResourceUpdate" />
    </feature>
 
    <!-- eGovframe DeviceAPI New Plug-In-->
    <feature name="EgovResourceUpdate">
        <param name="android-package" value="kr.go.egovframework.hyb.plugin.EgovResourceUpdate" />
    </feature>
    <feature name="EgovFileOpener">
        <param name="android-package" value="kr.go.egovframework.hyb.plugin.EgovFileOpener" />
    </feature>
 
    <feature name="EgovZip">
        <param name="android-package" value="kr.go.egovframework.hyb.plugin.EgovZip" />
    </feature>
 
    <!-- Cordova New Plug-In -->
    <feature name="PushPlugin" >
        <param
            name="android-package"
            value="com.plugin.gcm.PushPlugin" />
    </feature>
 
    <feature name="RootDetection">
        <param name="android-package" value="ru.trykov.root.RootDetection" />
        <param name="onload" value="true" />
    </feature>
 
    <feature name="FileOpener2">
        <param name="android-package" value="io.github.pwlin.cordova.plugins.fileopener2.FileOpener2" />
    </feature>
 
    <feature name="StreamingMedia">
        <param name="android-package" value="com.hutchind.cordova.plugins.streamingmedia.StreamingMedia" />
    </feature>
 
    <feature name="BluetoothLePlugin">
        <param name="android-package" value="com.randdusing.bluetoothle.BluetoothLePlugin" />
    </feature>
 
 
    <feature name="SQLitePlugin">
         <param name="android-package" value="io.sqlc.SQLitePlugin"/>
    </feature>
 
    <!-- Allow links to example.com -->
    <allow-navigation href="http://example.com/*" />
 
    <!--
         Wildcards are allowed for the protocol, as a prefix
	     to the host, or as a suffix to the path
    -->
    <allow-navigation href="*://*.example.com/*" />
 
    <!--
         A wildcard can be used to whitelist the entire network,
	     over HTTP and HTTPS.
	     *NOT RECOMMENDED*
    -->
    <allow-navigation href="*" />
 
    <!-- The above is equivalent to these three declarations -->
    <allow-navigation href="http://*/*" />
    <allow-navigation href="https://*/*" />
    <allow-navigation href="data:*" />
 
    <allow-intent href="http://*/*" />
    <allow-intent href="https://*/*" />
    <allow-intent href="tel:*" />
    <allow-intent href="sms:*" />
    <allow-intent href="mailto:*" />
    <allow-intent href="geo:*" />
    <allow-intent href="itms:*" />
    <allow-intent href="itms-apps:*" />
 
    <preference
        name="SplashScreen"
        value="myimageid" />
    <preference
        name="SplashScreenDelay"
        value="10000" />
    <preference
        name="AllowInlineMediaPlayback"
        value="false" />
    <preference
        name="BackupWebStorage"
        value="cloud" />
    <preference
        name="DisallowOverscroll"
        value="false" />
    <preference
        name="EnableViewportScale"
        value="false" />
    <preference
        name="KeyboardDisplayRequiresUserAction"
        value="true" />
    <preference
        name="MediaPlaybackRequiresUserAction"
        value="false" />
    <preference
        name="SuppressesIncrementalRendering"
        value="false" />
    <preference
        name="SuppressesLongPressGesture"
        value="false" />
    <preference
        name="Suppresses3DTouchGesture"
        value="false" />
    <preference
        name="GapBetweenPages"
        value="0" />
    <preference
        name="PageLength"
        value="0" />
    <preference
        name="PaginationBreakingMode"
        value="page" />
    <preference
        name="PaginationMode"
        value="unpaginated" />
    <preference
        name="CameraUsesGeolocation"
        value="false" />
    <preference
        name="AndroidPersistentFileLocation"
        value="Compatibility" />
 
</widget>
AndroidManifest.xml
  • 모바일 디바이스 API 가이드 프로그램에서 디바이스 API를 사용 할 때의 모바일기기로의 접근 권한을 지정 한다.
    <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="23" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.RECORD_AUDIO" />
    <uses-permission android:name="android.permission.RECORD_VIDEO" />
    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.VIBRATE" />
    <uses-permission android:name="android.permission.READ_CONTACTS" />
    <uses-permission android:name="android.permission.WRITE_CONTACTS" />
    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
    <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.FLASHLIGHT" />
    <uses-feature android:name="android.hardware.camera" android:required="false" />
 
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
    <permission android:name="kr.go.egovframework.hyb.example.permission.C2D_MESSAGE" android:protectionLevel="signature" />
    <uses-permission android:name="kr.go.egovframework.hyb.example.permission.C2D_MESSAGE" />

하이브리드 어플리케이션 설정(iOS)

설정

{Project_Name}/Supporting Files/config.xml
  • 폰갭 어플리케이션의 설정 정보들을 등록해주는 파일이다.
  • 폰갭에서는 각 Device API 들을 Plug-in 형태로 제공하며 해당 Device API Plug-in 들을 <feature> 엘리먼트에 명시해 주어야 한다.
  • 전자정부용 웹 서버 어플리케이션과 인터페이스를 하기 위해서는 EgovInterfacePlugin을 추가해 주어야 한다.
  • 폰갭에서 사용되는 HTML 리소스가 외부 서버에 위치 했을 때 외부 리소스가 위치하는 호스트 정보를 <access> 엘리먼트에 등록해야 정상적으로 폰갭 어플리케이션이 동작한다.
<?xml version="1.0" encoding="UTF-8"?>
<!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
 distributed with this work for additional information
 regarding copyright ownership.  The ASF licenses this file
 to you under the Apache License, Version 2.0 (the
 "License"); you may not use this file except in compliance
 with the License.  You may obtain a copy of the License at
 
 http://www.apache.org/licenses/LICENSE-2.0
 
 Unless required by applicable law or agreed to in writing,
 software distributed under the License is distributed on an
 "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
-->
<widget xmlns     = "http://www.w3.org/ns/widgets"
    id        = "kr.go.egovframe.hyb.DeviceAPIGuide.iOS"
    version   = "2.7.0">
    <name>DeviceInfoAPIGuide</name>
 
    <description>
        DeviceAPIGuide_iOS_V2.7
    </description>
 
    <author href="http://www.egovframe.go.kr" email="egovframesupport@gmail.com">
        eGovFramework
    </author>
 
    <access origin="*"/>
 
    <!-- <content src="http://mysite.com/myapp.html" /> for external pages -->
    <content src="index.html" />
 
    <!-- Preferences for iOS -->
    <preference name="AllowInlineMediaPlayback" value="false" />
    <preference name="AutoHideSplashScreen" value="true" />
    <preference name="BackupWebStorage" value="cloud" />
    <preference name="DisallowOverscroll" value="false" />
    <preference name="EnableLocation" value="false" /><!-- DEPRECATED -->
    <preference name="EnableViewportScale" value="false" />
    <preference name="FadeSplashScreen" value="true" />
    <preference name="FadeSplashScreenDuration" value=".25" />
    <preference name="HideKeyboardFormAccessoryBar" value="false" />
    <preference name="KeyboardDisplayRequiresUserAction" value="true" />
    <preference name="KeyboardShrinksView" value="false" />
    <preference name="MediaPlaybackRequiresUserAction" value="false" />
    <preference name="ShowSplashScreenSpinner" value="true" />
    <preference name="SuppressesIncrementalRendering" value="false" />
    <preference name="TopActivityIndicator" value="gray" />
 
 
    <feature name="Geolocation">
      <param name="ios-package" value="CDVLocation"/>
    </feature>
    <feature name="Device">
      <param name="ios-package" value="CDVDevice"/>
    </feature>
    <feature name="Accelerometer">
      <param name="ios-package" value="CDVAccelerometer"/>
    </feature>
    <feature name="Compass">
      <param name="ios-package" value="CDVLocation"/>
    </feature>
    <feature name="Media">
      <param name="ios-package" value="CDVSound"/>
    </feature>
    <feature name="Camera">
      <param name="ios-package" value="CDVCamera"/>
    </feature>
    <feature name="Contacts">
      <param name="ios-package" value="CDVContacts"/>
    </feature>
    <feature name="File">
      <param name="ios-package"  value="CDVFile"/>
    </feature>
    <feature name="NetworkStatus">
      <param name="ios-package" value="CDVConnection"/>
    </feature>
    <feature name="Notification">
      <param name="ios-package" value="CDVNotification"/>
    </feature>
    <feature name="FileTransfer">
      <param name="ios-package" value="CDVFileTransfer"/>
    </feature>
    <feature name="Capture">
      <param name="ios-package" value="CDVCapture"/>
    </feature>
    <feature name="Battery">
      <param name="ios-package" value="CDVBattery"/>
    </feature>
    <feature name="SplashScreen">
      <param name="ios-package" value="CDVSplashScreen"/>
    </feature>
    <feature name="Echo">
      <param name="ios-package" value="CDVEcho"/>
    </feature>
    <feature name="Globalization">
      <param name="ios-package" value="CDVGlobalization"/>
    </feature>
    <feature name="InAppBrowser">
      <param name="ios-package" value="CDVInAppBrowser"/>
    </feature>
    <feature name="Logger">
      <param name="ios-package" value="CDVLogger"/>
    </feature>
    <feature name="LocalStorage">
        <param name="ios-package" value="CDVLocalStorage"/>
    </feature>
 
    <!-- eGovframe DeviceAPI Plug-In-->
    <feature name="StorageInfoAPI">
        <param name="ios-package" value="EgovStorageInfo"/>
    </feature>
    <feature name="InterfaceAPI">
        <param name="ios-package" value="EgovInterface"/>
    </feature>
    <!-- Deprecated plugins element. REmove in 3.0 -->
    <plugins>
    </plugins>
</widget>
{Project_Name}/eGovModule/eGovComModule.h
  • 전자정부 Interface 디바이스 API에서 사용하기 위한 서버경로를 설정 할 수 있다.
    //전자정부 모바일 디바이스 API 연동 웹 어플리케이션 접속 URL
    #define kSERVER_URL     @"http://000.000.000.000:0080/SERVER_URL"
자원요소 - 프로젝트명-info.plist
  • 어플리케이션의 Bundle Identifier 이름을 지정한다. 이 Identifier 이름은 어플리케이션의 고유한 식별자로써 해당 어플리케이션을 다른 어플리케이션과 구분해주는 역할을 한다.
  • 어플리케이션의 Localization native development region을 설정한다. 어플리케이션의 지역 정보를 설정하여 해당 어플리케이션에서 사용되는 언어 정보를 등록 할 수 있다.
  • 어플리케이션의 Bundle display name 이름을 지정한다. 설치된 어플리케이션의 디스플레이 되는 이름을 설정하는데 사용된다.
  • 어플리케이션의 icon파일 이름을 지정한다. 설치된 어플리케이션의 디스플레이 되는 이미지 파일을 설정하며 픽셀 크기별로 여러 파일의 등록이 가능하다.
  • 어플리케이션의 Bundle version을 지정한다. 해당 어플리케이션의 버전을 명시하며 어플리케이션이 업데이트 대상인지 구분하는데 사용된다.
  • 어플리케이션의 Main nib file base name을 지정한다. 어플리케이션의 화면 UI 구성 파일인 xib 파일을 설정하는데 사용된다. iPhone용과 iPad용을 별도로 등록한다.
  • 어플리케이션의 supported interface orientations를 지정한다. 어플리케이션에서 지원할 수 있는 방향 전환을 설정하는데 사용되며 iPhone용과 iPad용을 별도로 등록한다.
화면 UI 구성 파일
  • 보통 iOS 어플리케이션에서는 xib 파일들은 화면 UI를 구성하는 파일들이다.
  • 일반적인 iOS 어플리케이션의 메인 UI는 MainWindow.xib 파일로 설정하며 변경이 가능하다.
  • 폰갭 어플리케이션의 기본 설정은 HTML을 랜더링하는 웹뷰를 전체화면에서 구성하도록 되어 있으며, 별도의 xib파일을 상요하지 않는다.
AppDelegat
  • 최초 어플리케이션이 로딩될 때 main함수에서 호출되는 클래스로 어플리케이션의 시작점이 된다.
    하이브리드 어플리케이션에서는 PhoneGapeDelegate를 상속받아 www폴더의 리소스를 웹뷰에 연결 시켜주는 역할을 수행한다.

웹 서버 어플리케이션 설정

web.xml 및 context-egovuserdetailshelper.xml의 설정

Data Source 설정

표준 보안 API

pom.xml
<dependency>
	<groupId>egovframework.com.cmm.uat</groupId>
	<artifactId>libgpkiapi_jni</artifactId>
	<version>1.4.0.0</version>
</dependency>
구분설정방법
Class 경로 설정방법 1. java 옵션 이용 : java -classpath jar_directory\libgpkiapi_jni.jar
방법 2. 환경 변수 등록 : “내컴퓨터→속성→고급→환경변수” 에서 새로 만들기를 클릭하여 classpath 변수를 등록
라이브러리 경로 설정1. JNI를 비롯한 C/C++용 표준보안API와 LDAP 라이브러리가 위치해 있는 경로를 환경 변수에 등록한다.
2. “내컴퓨터→속성→고급→환경변수” 에서 기존 “path” 변수에 “라이브러리가 설치된 디렉토리”를 추가한다.

참고자료

  • Cordova : Click
  • UX/UI 라이브러리 : jQuery MobileClick
  • Android Developers : Click
  • Apple Developer : Click
  • 표준보안API : Click
 
egovframework/hyb3.6/guide/디바이스_api_가이드_프로그램_환경설정.txt · 마지막 수정: 2023/12/21 05:21 (외부 편집기)
 
이 위키의 내용은 다음의 라이센스에 따릅니다 :CC Attribution-Noncommercial-Share Alike 3.0 Unported
전자정부 표준프레임워크 라이센스(바로가기)

전자정부 표준프레임워크 활용의 안정성 보장을 위해 위험성을 지속적으로 모니터링하고 있으나, 오픈소스의 특성상 문제가 발생할 수 있습니다.
전자정부 표준프레임워크는 Apache 2.0 라이선스를 따르고 있는 오픈소스 프로그램입니다. Apache 2.0 라이선스에 따라 표준프레임워크를 활용하여 발생된 업무중단, 컴퓨터 고장 또는 오동작으로 인한 손해 등에 대해서 책임이 없습니다.
Recent changes RSS feed CC Attribution-Noncommercial-Share Alike 3.0 Unported Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki