02. Configuration Data


preConfiguration.json

preConfiguration.json 에서는 아래와 같은 항목에 대해서 설정을 한다.

  1. Operation Center 서버 정보 설정
  2. 암호화 모듈에 대한 선언 및 설정

 

M : Mandatory, O : Optional 

Table. PreConfiguration Data format

NoNameTypeValueRemarkM/O
1launcherAppIdstring*Launcher App IDM
2targetDeviceTypestringPhone | Tablet | All대상 단말기 종류M
3operationsjson 하단 Operations Data format 테이블 참조M
4encryptionProvidersjson 암호화 Provider 정의 M
5keyProvidersjson 키 Provider 정의M
      

Table. Operations Data format 

NoNameTypeValueRemarkM/O
1baseAddressstring operation server URLM
2portstring0~65536operation server PortO
3contextPathstring operation server context PathM
4applicationPathstring operation server service PathM
5contentTypestringapplication/json통신 데이터포맷M
      

추가적으로 encryptionProviderName 의 값 및 keyProviderName의 값은 아래의 세부 항목을 참조한다.

Table. encryptionProvider Data format

NoNameTypeRemarkM/O
1[EncryptionProvider Name]string정의할 Encryption Provider의 NameM
1-1classNamestringEncryption Provider 가 구현된 Class 경로M
1-2propertiesjson O
     

Table. keyProvider Data format

NoNameTypeRemarkM/O
1[KeyProvider Name]string정의할 Key Provider의 NameM
1-1classNamestringKey Provider 가 구현된 Class 경로M
1-2propertiesjson O
     

Example

{
   "launcherAppId": "HoneMobile",
   "targetDeviceType": "All",
   "operations": {
       "baseAddress": "https://hone.hanwha.co.kr",
       "port": "443",
       "contextPath": "/smartop_v4",
       "applicationPath": "/operations/service",
       "contentType": "application/json",
    },
   "encryptionProviders": {
       "secureLayerEncryptionProvider": {
           "className": "honemobile.client.security.crypto.SecureLayerEncryptionProvider"
        }
    },
   "keyProviders": {
       "hub1SecureLayerKeyProvider": {
           "className": "honemobile.client.security.crypto.HubSecureLayerKeyProvider"
        }
    }
}

configuration.json

configuration.json 에서는 아래와 같은 항목에 대해서 설정을 한다.

  1. Hub 서버에 대한 설정
  2. Android / iOS 의 환경이 다르므로 이에 따라 필요한 설정

 

Table. configuration.json Data format

NoNameTypeValueRemarkM/O
1serviceTargetsjson*

허브 서버 설정 

하단 serviceTargets Data format 참조

M
2launcherjson Launcher 설정M
2-1networkTimeoutInt 네트워크 작업 중 read/connection timeout 값 설정 (ms단위)M
2-2jsDevModebooltrue | false비즈앱 개발 모드 설정 O
2-3useExternalStoragebooltrue | false리소스를 외부 저장소에 저장 (Android 설정 항목)M
2-4logLevelstringtrace  
debug  
info   
warn   
error
앱 로그 레벨 설정M
      

Table. serviceTargets Data format

NoNameTypeValueRemarkM/O
1[Hub Name]string 정의할 Hub의 NameM
1-1baseAddressstring Hub server URLM
1-2portnumber0~65536Hub server PortO
1-3contextPathstring Hub server context PathM
1-4applicationPathstring Hub server service PathM
1-5contentTypestringapplication/json허브의 데이터 포맷M
1-6networkEncryptionjson 허브의 통신 암호화 정책M
1-6-1enabledbool 통신 암호화 활성화 여부M
1-6-2encryptionProviderNamestring encryptionProviders 에 정의 되어있는 암호화 프로바이더 이름M
1-6-3keyProviderNamestring keyProviders 에 정의 되어 있는 키 프로바이더 이름M
      

Example

{
   "serviceTargets": {
       "hub1": {
           "baseAddress": "https://hone.hanwha.co.kr",
           "port": "443",
           "contextPath": "/smarthub_v4",
           "applicationPath": "/bizhub/service",
           "contentType": "application/json",
           "networkEncryption": {
               "enabled": false,
               "encryptionProviderName": "secureLayerEncryptionProvider",
               "keyProviderName": "hub1SecureLayerKeyProvider",
            }
        }
    },
   "launcher": {
       "networkTimeout" : 10000,
       "jsDevMode": false,
       "useExternalStorage": true,
       "logLevel": "debug"    
    }
}

actionflow.json

actionflow.json 에서는 아래와 같은 항목에 대해서 설정을 한다.

  1. startup - 클라이언트가 시작시 동작해야 하는 Action 지정 및 호출 순서
  2. resume - 클라이언트가 Pause 이후 Resume 시 동작해야 하는 Action 지정 및 호출 순서

 

Table. actionflow.json Data format

NoNameTypeRemarkM/O
1startUpjson array구동시 실행될 task 순서 목록M
2resumejson arrayApp 복귀시 실행될 task 순서 목록M
    

 

Table. startUp and resume Data format

NoNameTypeRemarkM/O
1namestringAction 이름M
2classNamestringAction이 구현된 Class 경로M
3propertiesjson각 Action별 하위 테이블 참고O
    

 

제품에서 startup 및 resume용으로 제공하는 Action의 정보는 아래와 같다.

사용 설정 시 Priority 순서에 맞춰 사용해야 하며 제공되는 Action는 사용 용도 및 영역에 맞게 사용되어야만 정상적으로 기능을 제공한다.

 

Table. startup용 actionflow

PrioritynameclassNameRemarkM/OVersion
1installBuiltinBizAppActionhonemobile.client.actionflow.action.InstallBuiltinBizAppAction내장 비즈앱 설치O 
2requestLoginActionhonemobile.client.actionflow.action.RequestLoginActionOperations 로그인M 
3updateConfiguratonActionhonemobile.client.actionflow.action.UpdateConfigurationAction설정파일 업데이트O 
4updateLauncherActionhonemobile.client.actionflow.action.UpdateLauncherAction앱 업데이트O 
5updateBizAppActionhonemobile.client.actionflow.action.UpdateBizAppActionBizApp 업데이트O 
6verifyBizAppActionhonemobile.client.actionflow.action.VerifyBizAppActionBizApp 위변조 검사O 
7showWindowActionhonemobile.client.actionflow.action.ShowWindowAction화면 출력O 
      

Table. resume용 actionflow

PrioritynameclassNameRemarkM/OVersion
1checkUpdateActionhonemobile.client.actionflow.action.CheckUpdateAction앱과 BizApp 업데이트 확인O 
     

 

제품에서 제공하는 각 Action의 properties 정보는 아래와 같다

Table. installBuiltinBizAppAction 의 properties

NoNameTypeRemarkM/OVersion
1fileNamestring내장 비즈앱의 파일 이름M 
     

 

Table. updateLauncherAction 의 properties

NoNameTypeValueRemarkM/OVersion
1fromstringoperations | store타깃이 되는 서버 정의 (기본값 operations)O 
      

 

Table. showWindowAction 의 properties

NoNameTypeValueRemarkM/OVersion
1windowNamestring 대상 Window 이름M 
1remoteUrlstring Window 가 웹 화면인 경우에 기본 URL 설정 가능O 
      

 

Table. checkUpdateAction 의 properties

NoNameTypeValueRemarkM/OVersion
1fromstringoperations | store대상 서버 (기본값 operations)O 
2checkLevelstringall | force

all인 경우 Launcher/BizApp의 모든 업데이트 확인 (기본값 all) 

force인 경우 Launcher/BizApp의 강제 업데이트만 확인

O 
      

 

Example

{
   "startUp" : [
        {
           "name": "installBuiltinBizAppAction",
           "className": "honemobile.client.actionflow.action.InstallBuiltinBizAppAction",
           "properties": {
               "fileName": "hspample"
            }
        },
        {
           "name": "requestLoginAction",
           "className": "honemobile.client.actionflow.action.RequestLoginAction"
        },
        {
           "name": "updateConfigurationAction",
           "className": "honemobile.client.actionflow.action.UpdateConfigurationAction"
        },
        {
           "name": "updateLauncherAction",
           "className": "honemobile.client.actionflow.action.UpdateLauncherAction",
           "properties": {
                "from": "operations"
            }
        },
        {
            "name": "updateBizAppAction",
            "className": "honemobile.client.actionflow.action.UpdateBizAppAction"
        },
        {
            "name": "verifyBizAppAction",
            "className": "honemobile.client.actionflow.action.VerifyBizAppAction"
        },
        {
           "name": "showWindowAction",
           "className": "honemobile.client.actionflow.action.ShowWindowAction",
           "properties": {
               "windowName": "defaultWebWindow"
            }
        }
    ],
   "resume" : [
        {
           "name": "checkUpdateAction",
           "className": "honemobile.client.actionflow.action.CheckUpdateAction",
           "properties": {
               "from": "operations",
               "checkLevel": "all"
            }
        }
    ]
}

window.json

window.json 에서는 아래와 같은 항목에 대해서 설정을 한다.

  1. 클라이언트에서 사용할 윈도우 설정
  2. 필요 시 추가 윈도우 설정

 

Table. window.json Data format

NoNameTypeRemarkM/O
1windowsjson M
1-1[Window Name]string정의할 Window의 Name (대소문자 구분)M
    

 

Table. [Window Name] Data format

NoNameTypeRemarkM/O
1classNamestring실제 Plugin인 구현된 Class 경로M
2propertiesjson윈도우에 전달되는 데이터O
    

 

Example

{
   "windows": {
      "customWebWindow": {
           "className": "com.hanwha.sample.window. CustomWebWindow",
           "properties": {

            }
       },
      "customWebPopupWindow": {
           "className": "com.hanwha.sample.window.CustomWebPopupWindow"
       },
      "customWindow": {
           "className": "com.hanwha.sample.window.CustomWindow"
       },
      "customPopupWindow": {
           "className": "com.hanwha.sample.window.CustomPopupWindow"
       }
    }
}

plugin.json

plugin.json 에서는 아래와 같은 항목에 대해서 설정을 한다.

  1. 필요 시 추가 플러그 인 설정

 

Table plugin.json Data format

IDNameTypeRemarkM/O
1pluginsjson M
1-1[Plugin Name]string플러그인 이름M
    

 

Table. [Plugin Name] Data format

NoNameTypeRemarkM/O
1classNamestring플러그인 이 구현된 클래스 전체 경로M
    

 

Example

{
   "plugins": {
       "custom": {
           "className": ".plugin.CustomPlugin"
        }
    }
}

커스텀 Plugin을 제외한 제품에서 제공하는 모든 Plugin은 plugin.json에 설정없이 사용할 수 있다.

제품에서 기본으로 제공하는 플러그인은 다음과 같다.

Table. 기본 plugin

NonameclassNameRemark
1authenticationhonemobile.client.plugin.AuthenticationPluginOP 로그인
2networkhonemobile.client.plugin.NetworkPlugin서버와의 통신 채널 제공
3camerahonemobile.client.plugin.CameraPlugin디바이스 카메라 기능
4contacthonemobile.client.plugin.ContactPlugin주소록 정보 추가 및 조회
5sqlitehonemobile.client.plugin.SQLitePlugin디바이스 SQL 기능
6devicehonemobile.client.plugin.DevicePlugin디바이스 정보 조회
7filerepositoryhonemobile.client.plugin.FileRepositoryPluginLocal 파일 저장 서비스
8geolocationhonemobile.client.plugin.GeoLocationPlugin위치정보 조회
9windowhonemobile.client.plugin.WindowPlugin화면 이동 및 출력 기능
10preferencehonemobile.client.plugin.PreferencePluginPreference 기능
    

추가로 제공되는 Plugin은 다음과 같으며 기능을 제공받기 위해선 관련 라이브러리를 개발 프로젝트에 포함시켜야 한다.
각 Plugin 라이브러리에 대한 상세 설명 및 포함 방법은 Android 개발 가이드의 프로젝트 생성을 참고한다.

Table. 추가 plugin

NonameclassNameLibrary NameRemarkVersion
1applinkerhonemobile.client.plugin.AppLinkerPluginlibhone-applinker-release.aar외부앱 연결 기능▲3.0.0
2barcodehonemobile.client.plugin.BarcodePluginlibhone-barcode-release.aar바코드 기능▲2.6.4
3beaconhonemobile.client.plugin.BeaconPluginlibhone-beacon-release.aar비콘기능▲4.2.8
4clipboardhonemobile.client.plugin.ClipboardPluginlibhone-clipboard-release.aar클립보드 기능▲3.0.0
5fingerprinthonemobile.client.plugin.FingerprintPluginlibhone-fingerprint-release.aar지문 인증 기능▲3.0.0
6flashlighthonemobile.client.plugin.FlashlightPluginlibhone-flashlight-release.aar플래쉬 기능▲3.0.0
7galleryhonemobile.client.plugin.GalleryPluginlibhone-gallery-release.aar갤러리 기능▲3.0.0
8lockscreenhonemobile.client.plugin.LockscreenPluginlibhone-lockscreen-release.aar잠금화면 기능▲3.1.1
9loghonemobile.client.plugin.LogPluginlibhone-log-release.aar로그 기능▲3.0.0
10motionhonemobile.client.plugin.MotionPluginlibhone-motion-release.aar단말 동작 정보 기능▲3.0.0
11nfchonemobile.client.plugin.NfcPluginlibhone-nfc-release.aarNfc 태그 기능▲4.2.8
12noticehonemobile.client.plugin.NoticePluginlibhone-notice-release.aar공지사항 기능▲2.6.4
13openapihonemobile.client.plugin.OpenApiPluginlibhone-openapi-release.aarOpen API 기능▲3.7.13
14screenhonemobile.client.plugin.ScreenPluginlibhone-screen-release.aar화면 밝기 기능▲3.0.0
15securestoragehonemobile.client.plugin.SecureStoragePluginlibhone-secure-storage-release.aar암호화 저장소 기능▲3.1.1
16vibratorhonemobile.client.plugin.VibratorPluginlibhone-vibrator-release.aar단말기 진동 기능▲3.0.0