06. Custom 개발
사용자의 필요 시 알림, 스플래쉬, 로딩 화면을 앱에 맞게 커스텀이 가능하다.
스플래쉬 화면 개발
사용자의 인트로 화면을 커스텀하여 개발 할 수 있다.
- Project 선택
- Windows Group 폴더
- New File 메뉴 선택
- iOS - Source - Cocoa Touch Class 선택
- Next 버튼 선택
- CustomSplashWindow 입력
- Subclass of 항목에 HMPWindow 작성
- Next 버튼 선택
- Windows 폴더 선택
- Create 버튼 선택
- Project 선택
- AppDelegate.m 파일 선택
- Splash 코드 작성
Example
{
// 1. 루트 콘트롤러 구성
[HMPWindowManager sharedWindowManager];
// 2. 스플래쉬
CustomSplashWindow *splashWindow = [CustomSplashWindow new];
// 3. 초기화
[[HMPAppDelegateManager sharedAppDelegateManager] didFinishLaunchingWithCompletion:^{
[splashWindow dismissViewControllerAnimated:NO completion:nil];
[HMPWindowManager sharedWindowManager].rootViewController = self.bakViewController;
} failure:^(NSError *error) {
}];
[self.window.rootViewController presentViewController:splashWindow animated:NO completion:nil];
self.bakViewController = [HMPWindowManager sharedWindowManager].rootViewController;
[HMPWindowManager sharedWindowManager].rootViewController = splashWindow;
}
- Project
- CustomSplashWindow.m 파일 선택
- 스플래쉬 로딩 완료 호출
Example
알림화면 개발
사용자의 알림화면을 커스텀하여 개발 할 수 있다.
- Project 선택
- AppDelegate.m 파일 선택
- 커스텀 알림 함수 정의
Example
[HMPAlertManager sharedAlertManager].useCustomAlert = YES;
return YES;
}
- (void)showAlertWithTitle:(NSString *)title message:(NSString *)message confirmButtonTitle:(NSString *)confirmButtonTitle confirmed:(void(^)(void))confirmed {
}
- (void)showConfirmAlertWithTitle:(NSString *)title message:(NSString *)message confirmButtonTitle:(NSString *)confirmButtonTitle cancelButtonTitle:(NSString *)cancelButtonTitle confirmed:(void(^)(void))confirmed canceled:(void(^)(void))canceled {
}
- (void)showConfirmAlertWithTitle:(NSString *)title message:(NSString *)message confirmed:(void(^)(void))confirmed canceled:(void(^)(void))canceled {
}
- (void)showAlertWithTitle:(NSString *)title message:(NSString *)message confirmed:(void(^)(void))confirmed {
}
로딩화면 개발
사용자의 로딩화면을 커스텀하여 개발 할 수 있다.
- Project 선택
- AppDelegate.m 파일 선택
- 커스텀 로딩 호출
Example
if (self.progress == nil)
{
[self initProgressController];
[self.progress show];
}
[self.progress setTitleLabelText:message];
} hideLoading:^{
if (self.progress == nil)
{
return;
}
[self.progress dismiss];
self.progress = nil;
} showProgress:^(NSString *title, NSString *message) {
if (self.progress == nil)
{
[self initProgressController];
[self.progress show];
}
[self.progress setTitleLabelText:message];
} hideProgress:^{
if (self.progress == nil)
{
return;
}
[self.progress dismiss];
self.progress = nil;
} updateProgress:^(NSInteger progress, NSString *message) {
if (self.progress == nil)
{
[self initProgressController];
[self.progress show];
}
[self.progress setTitleLabelText:[NSString stringWithFormat:@"%d%% %@", (int)progress, message]];
}];
통신 구간 암/복호화
HONE Smart Platform에서는 HMPKeyProvider 와 HMPEncryptionProvider, HMPSessionProvider와 같은 인터페이스가 제공된다.
이를 이용하며 3rd party 암/복호화 라이브러리를 사용할 수 있다
암/복호화 관련 내부처리
앱 실행 시 등록된 모든 Provider의 인스턴스 생성을 진행한다. doPost 요청을 보낼 때 HMPHttpRequester, HMPHttpPostListener에서 통신대상인 targetName의 암/복호화 설정 여부 확인 후 해당 targetName의 encryptionProvider와 keyProvider를 사용하여 암/복호화를 실행한다.
PreConfiguration 설정
preConfiguration.json 파일에 사용 할 모든 Provider의 정보를 등록한다.
preConfiguration.json 파일에 op통신에 사용 할 EncryptionProvider 정보를 등록한다. (Default 정보 사용, 임의 변경 불가)
KeyProvider
- preConfiguration.json 의 keyProviders 안에 만들고자 하는 keyProvider 에 대한 정보를 작성한다.
Example
"keyProviders": {
"sampleKey": {
"className": "SampleKeyProvider",
"properties": {}
}
}
}
EncryptionProvider
- preConfiguration.json 의 encryptionProviders 안에 만들고자 하는 EncryptionProvider에 대한 정보를 작성한다.
Example
"encryptionProviders": {
"SampleEncryptor": {
"className": "SampleEncryptionProvider",
"properties": {}
}
}
}
Configuration 설정
configuration.json 파일에 Business Hub통신, 비즈앱 위/변조에 사용할 각 각의 EncryptionProvider와 KeyProvider 정보 등록한다.
serviceTarget
- configuration.json - serviceTargets 의 통신구간 암/복호화를 적용하고자 하는 타겟 안에 networkEncryption 에 대한 정보를 작성한다.
- encryptionProviderName 과 keyProviderName 은 위에서 작성한 preConfiguration.json 에 기입된 Name 을 사용한다.
Example
"serviceTargets": {
"hub1": {
"baseAddress": "http: //hone.hanwha.co.kr",
"port": "80",
"path": "/mobile2/janggyo/service",
"defaultContentType": "application/json",
"networkEncryption": {
"enabled": true,
"encryptionProviderName": "SampleEncryptor",
"keyProviderName": "sampleKey",
"supportedRequestTypes":["application/json","application/xml"],
"supportedResponseTypes":["application/json","application/xml"]
}
}
}
}
HMPKeyProvidoer 작성
HMPKeyProvider를 이용하여 암/복호화 모듈에 필요한 Key를 제공한다.
Table. HMPKeyProvider Interface
No | Header File | Method | Remark |
---|---|---|---|
1 | HMPKeyProvider | -(NSData*)getKey; | Key를 가져온다. |
2 | HMPKeyProvider | -(void)setKey![]() | Key를 설정한다. |
SampleKeyProvider.h Example
@interface SampleKeyProvider : NSObject <HMPKeyProvider>
@end
SampleKeyProvider.m Example
@interface SampleKeyProvider()
@property(nonatomic, retain) NSData *_key;
@end
@implementation SampleKeyProvider
@synthesize _key;
-(id)initWithExtra:(NSDictionary*)extra
{
self = [super init];
if(self) {
//extra parameter setting
}
return self;
}
-(void)dealloc
{
if(self._key != nil) self._key = nil;
[super dealloc];
}
-(NSData*)getKey
{
if(self._key==nil){
// 라이브러리를 통해 키를 가져와서 키를 세팅한다.
[self setKey:[3rdPartyLibrary getKey]];
}
return self._key;
}
-(void)setKey:(NSData*)keydata
{
if(self._key != nil) self._key = nil;
self._key = [[[NSData alloc] initWithData:keydata] autorelease];
}
EncryptionProvider 작성
HMPEncryptionProvider와 HMPSessionProvider를 이용하여 암/복호화를 실행한다.
Table. HMPEncryptionProvider/HMPSessionProvider Interface
No | Header File | Method | Remark |
---|---|---|---|
1 | HMPEncryptionProvider | -(NSData*)encrypt![]() ![]() | 키와 데이터를 받아 암호화된 데이터를 리턴 , 송신 시점에 호출됨. |
2 | HMPEncryptionProvider | -(NSData*)decrypt![]() ![]() | 키와 암호화된 데이터를 받아 복호화된 데이터로 리턴, 수신 후에 호출됨 |
3 | HMPSessionProvider | -(BOOL)isExpired | (세션 타임아웃 여부 |
4 | HMPSessionProvider | -(void)updateSession | 세션 업데이트 시도 |
AESNetworkEncryptionProvider.h Example
#import "HMPSessionProvider.h"
/**
* AESNetwork 암호화
*/
@interface AESNetworkEncryptionProvider : NSObject <HMPEncryptionProvider, HMPSessionProvider>
/**
* 암호화 키값
*/
@property (nonatomic, retain) NSData *constKey;
/**
* 세션 키값
*/
@property (nonatomic, retain) NSData *sessionKey;
/**
* 시드 값
*/
@property (nonatomic, retain) NSString *seedValue;
@end
AESNetworkEncryptionProvider.m Example
/**
* 마지막 갱신 타임
*/
int lastSessionTime;
}
@end
#define DEFAULT_CONSTKEY @"====hanwha====" //@@16byte
#define EXPIRE_THRESHOLD (8*60) // 8분마다 세션만료로 인식하도록 함.
@implementation AESNetworkEncryptionProvider
@synthesize constKey;
@synthesize sessionKey;
@synthesize seedValue;
/**
* 생성자
*
* @param extra 부가 정보
*
* @return Provider 객체
*/
- (id)initWithExtra:(NSDictionary *)extra
{
self = [super init];
if (self) {
//extra parameter setting
}
return self;
}
/**
* 메모리 해제
*/
- (void)dealloc
{
if (self.constKey != nil) self.constKey = nil;
if (self.sessionKey != nil) self.sessionKey = nil;
if (self.seedValue != nil) self.seedValue = nil;
[super dealloc];
}
/**
* 세션타임아웃 여부 리턴
*/
- (BOOL) isExpired
{
if (self.sessionKey==nil) {
lastSessionTime = [[NSDate date] timeIntervalSince1970];
return YES;
}
int currTime = [[NSDate date] timeIntervalSince1970];
if ((currTime - lastSessionTime) > EXPIRE_THRESHOLD) {
lastSessionTime = currTime;
return YES;
}
lastSessionTime = currTime;
return NO;
}
/**
* 암호화 데이터 얻기
*
* @param key 키
* @param data 데이터
*
* @return 암호화 데이터
*/
- (NSData *)encrypt:(NSData *)key data:(NSData *)data
{
[data retain];
if ([self isExpired] ) {
if (self.sessionKey == nil )
return nil;
}
NSData *ret = [[CryptoHelper sharedInstance] encrypt:data key:self.sessionKey];
[data release];
return ret;
}
/**
* 복호화 데이터 얻기
*
* @param key 키
* @param data 데이터
*
* @return 복호화 데이터
*/
- (NSData *)decrypt:(NSData *)key data:(NSData *)data
{
[data retain];
NSData *ret = [[CryptoHelper sharedInstance] decrypt:data key:self.sessionKey];
[data release];
return ret;
}
@end
BizApp 리소스 위/변조
HONE Smart Platform에서는 BizApp 리소스 위/변조 기능이 제공되며 이를 이용하기 위해서는 아래와 같은 설정에 변경이 필요하다.
Configuration 설정
Configuration 파일 중 configuratioin.json의 bizAppSecurity에 정의된 리소스 위/변조 사용여부를 true로 설정하며 나머지 설정 정보는 기본값으로 유지한다.
Example
"bizAppSecurity": {
"enabled": true
}
}
Actionflow 설정
Configuration 파일 중 actionflow.json에서 verifyBizAppAction을 updateBizAppAction 이후에 추가한다.
Example
"name": "updateBizAppAction",
"className": "UpdateBizAppAction ",
"properties": {}
}, {
"name": "verifyBizAppAction",
"className": "VerifyBizAppAction ",
"properties": {}
}]
Network Compression
Hone Smart Platform 은 네트워크 통신 시 데이터를 압축하여 전달 받을 수 있는 기능을 제공 하며, 이를 활성화 하기 위해서는 아래와 같은 설정이 필요 하다.
Example
"operations": {
"networkCompression": {
"enabled": true,
"requestCompression": "gzip",
"responseCompression": "gzip"
}
}
}
제품 String 변경
HSP 에서 미리 설정해둔 문자열들은 사용자가 재 지정 하여 사용할 수 있다. 이를 위해서는 수정할 문자열의 키를 확인 한 다음 app level 의 리소스에 재 설정 하면 된다.
변경 방법은 다음과 같다.
- 프로젝트의 Localizable.strings 파일 선택
- 변경하고 싶은 제품의 String 값을 재정의
HSP에 미리 설정되어 있는 문자열 키는 아래와 같다.
Table. HSP String
String ID | Korean | English | Comment |
---|---|---|---|
button_ok | 확인 | OK | |
button_cancel | 취소 | Cancel | |
button_confirm | 승인 | Approve | |
button_send | 보내기 | Send | |
button_clear | 지우기 | Clear | |
button_delete | 삭제 | Delete | |
button_error | 오류 | Error | |
button_notice | 알림 | Notification | |
button_alert | 경고 | Warning | |
button_exit | 종료 | Exit | |
button_update | 업데이트 | Update | |
button_retry | 재시도 | Retry | |
button_done | 완료 | Done | |
button_connect | 연결 | Connect | |
button_set | 설정 | Set | |
activity_backkey_exit | \'뒤로\'버튼을 한번 더 누르시면 종료됩니다. | Press the \’Back\’ button again to exit. | |
config_not_found_plugin | 플러그인을 찾지 못하였습니다. (%s) 이 plugin.json 내에 존재하는지 확인하세요. | Unable to fund the plug-in. Check whether (%s) exists in plugin.json. | |
config_check_error_log | Json 파일에 오류가 발생하였습니다. 오류 로그를 확인하세요. | An error has occurred in the JSON file. Check the error log. | |
config_not_found_class | 클래스가 존재하지 않습니다. (%s) | The class doesn’t exist. (%s) | |
config_invalid_networkcompress | networkCompression 활성화 시\nrequestCompress, responseCompress 값이 존재해야 합니다.\n\n예)\nrequestCompression: gzip\nresponseCompression: gzip | When activating networkCompression\nthe requestCompress and responseCompress values must exist.\n\nExample)\nrequestCompression: gzip\nresponseCompression: gzip | |
config_not_define_launcherbizapp | launcherBizAppId 가 설정되어 있지 않습니다. | launcherBizAppId is not set. | |
config_not_enable_bizappencryption | bizAppSecurity 을 활성화 하면\nbizAppEncryption 도 활성화 되어야 합니다. | To activate bizAppSecurity,\nbizAppEncryption should be also activated. | |
config_call_updatebizapp_before_requestlogin | RequestLoginAction은 UpdateBizAppAction 전에 호출되어야 합니다. | RequestLoginAction should be called before UpdateBizAppAction. | |
config_add_verifybizapp_after_updatebizapp | 위변조 활성화가 되어있을 경우 actionflow.json 에 UpdateBizAppAction 이후에 VerifyBizAppAction 추가 되어야 합니다. | If forgery and alteration are activated, VerifyBizAppAction should be added after UpdateBizAppAction in actionflow.json. | |
config_not_found_window | 윈도우를 찾을 수 없습니다. (%s)\nwindow.json을 확인하세요. | Unable to find the Window. (%s)\nCheck window.json. | |
config_no_data_in_configuration | 설정 정보 중 (%s) 값이 없습니다.\nconfiguration.json을 확인하세요. | (%s) is not set.\nCheck configuration.json. | |
config_invalid_data_in_configuration | 설정 정보 중 (%s) 값에 오류가 있습니다.\nconfiguration.json을 확인하세요. | An error has occurred in (%s).\nCheck configuration.json. | |
config_invalid_action_in_startup | resume용 Action을 startup에서 사용 하실 수 없습니다. (%s) | Unable to use (%s) Action in startup.\nCheck actionflow.json | |
config_invalid_action_in_resume | startup용 Action을 resume에서 사용 하실 수 없습니다. (%s) | Unable to use (%s) Action in resume.\nCheck actionflow.json | |
window_unknown_error | 화면 구성 중에 에러가 발생하였습니다. | An error has occurred while composing the screen. | |
webview_http_auth_error | 서버에서 사용자 인증에 실패하였습니다. | Failed to authenticate the user in the server. | |
webview_http_bad_url | 잘못된 주소입니다. | Invalid address. | |
webview_http_connect_to_server_error | 서버 연결에 실패하였습니다. | Failed to connect the server. | |
webview_http_ssl_error | SSL 수행에 실패하였습니다. | Failed to execute SSL. | |
webview_http_file_error | 파일 오류가 발생하였습니다. | A file error has occurred. | |
webview_http_file_not_found | 요청하신 파일을 찾을 수 없습니다. | Unable to find the requested file. | |
webview_http_host_lookup_error | 서버 또는 프록시 호스트 이름 조회 실패입니다. | Failed to retrieve the name of the server or proxy host. | |
webview_http_io_error | 서버에서 읽거나 서버로 쓰기 실패입니다. | Failed to read from or write to the server. | |
webview_http_proxy_auth_error | 프록시에서 사용자 인증에 실패하였습니다. | Failed to authenticate the user in the proxy. | |
webview_http_many_redirect_loop | 너무 많은 리디렉션이 발생하였습니다. | Too many redirection has occurred. | |
webview_http_timeout | 연결 시간이 초과되었습니다. | The connection time is exceeded. | |
webview_http_many_request | 페이지 로드 중 너무 많은 요청이 발생하였습니다. | To may requests have occurred while loading the page. | |
webview_unsupported_auth_scheme | 지원되지 않는 인증체계입니다. | Unsupported authentication system. | |
webview_unsupported_uri_scheme | 지원되지 않는 URI입니다. | Unsupported URI | |
webview_unknown_error | 수행 중 알 수 없는 오류가 발생하였습니다. | An unknown error has occurred during execution. | |
popup_loading | 로딩 중 | Loading | |
popup_invalid_classpath | 사용자가 설정한 다이얼로그의 클래스 경로가 올바르지 않습니다. (%s) | Invalid classpath (%s) | |
popup_window_is_popupwindow | (%s)는 팝업 윈도우입니다.\nshowPopupWindow 메소드를 이용해야 합니다. | (%s) is a popup window.\nNeed to use the showPopupWindow method. | |
popup_window_not_popupwindow | (%s)는 팝업 윈도우가 아닙니다. | (%s) isn't a popup window. | |
plugin_success | 성공 | Success | |
plugin_known_error | 플러그인 수행 중에 에러가 발생하였습니다. | An error has occurred while executing the plug-in. | |
plugin_invalid_parameter | 플러그인 파라미터가 유효하지 않습니다. | Invalid plug-in parameter. | |
plugin_invalid_action | 요청하신 플러그인 액션은 지원하지 않습니다. | The requested plug-in action is not supported. | |
plugin_invalid_service | 요청하신 플러그인 서비스는 지원하지 않습니다. | The requested plug-in service is not supported. | |
plugin_execute_error | 플러그인 실행 중 오류가 발생하였습니다. | An error has occurred while running the plug-in. | |
plugin_json_parse_error | JSON Parsing 중 에러가 발생하였습니다. | An error has occurred while parsing JSON. | |
plugin_urlencode_error | URL Encode 중 에러가 발생하였습니다. | An error has occurred while encoding the URL. | |
plugin_permission_error | 플러그인 실행 시 필요한 권한이 없습니다. | There is no right needed to execute the plug-in. | |
filerepository_file_already_exist | 해당 파일이 존재합니다. | The pertinent file already exists. | |
filerepository_unknown_address_scheme | 알 수 없는 주소 형식입니다. | Unknown address format. | |
filerepository_decompress_error | 압축을 해제하는 과정에서 오류가 발생하였습니다. | An error has occurred while decompressing. | |
filerepository_file_already_downloading | 해당 파일은 다운로드 중입니다. | The pertinent file is being downloaded now. | |
filerepository_path_not_exist | (%s)는 존재하지 않는 경로입니다. | The (%s) path doesn’t exist. | |
filerepository_not_directory | (%s)는 디렉토리가 아닙니다. | The (%s) is not a directory. | |
filerepository_file_save_error | 파일 저장 시 오류가 발생하였습니다. | An error has occurred while saving the file. | |
filerepository_filename_empty | 파일 이름이 누락되었습니다. | The file name is omitted. | |
filerepository_file_not_found | 해당 파일이 존재하지 않습니다. | The pertinent file doesn't exist. | |
securefilerepository_insert_error | 데이터베이스 추가 중 오류가 발생하였습니다. | An error has occurred while adding a database. | |
securefilerepository_write_error | 파일 쓰기 중 오류가 발생하였습니다. | A file error has occurred while writing the file. | |
securefilerepository_delete_error | 삭제 중에 오류가 발생하였습니다. | An error has occurred during deletion. | |
securefilerepository_cannot_read_file | 해당 파일을 읽을 수 없습니다. | Unable to read the requested file. | |
contact_search_error | 주소록 검색에 실패하였습니다. | Failed to search for an address book. | |
contact_insert_error | 주소록 추가에 실패하였습니다. | Failed to add an address book. | |
contact_name_is_empty | 주소록에 추가할 이름이 없습니다. | There is no name to add to the address book. | |
geolocation_bad_gps_info | 잘못된 위치 정보가 전달되었습니다. | The incorrect location information has been transferred. | |
geolocation_no_location_provider | 위치정보 지원 가능한 Provider가 없습니다. | There is no provider that can supports the location information. | |
execexternal_execute_error | 수행 중에 오류가 발생하였습니다. | An error has occurred during execution. | |
camera_not_create_image | 사진를 생성할 수 없습니다. | Unable to create a picture. | |
camera_capturing_image_error | 사진 캡쳐 중 오류가 발생하였습니다. | An error has occurred while capturing a picture. | |
camera_image_retrieve_cancelled | 사진가져오기가 취소 되었습니다. | Importing a picture has been canceled. | |
camera_not_complete | 수행이 완료되지 않았습니다. | Execution is not completed yet. | |
camera_image_not_retrieved | 사진의 경로를 검색할 수 없습니다. | Unable to search for the picture path. | |
camera_retrieving_image_error | 이미지 가져오기 중 오류가 발생하였습니다. | An error has occurred while importing an image. | |
camera_selection_cancelled | 선택이 취소되었습니다. | Selection is canceled. | |
camera_selection_not_complete | 선택이 완료되지 않았습니다. | Selection is not completed yet. | |
camera_compressing_image_error | 이미지 압축 중 오류가 발생하였습니다. | An error has occurred while compressing an image. | |
sqlite_unsupported_data_type | 지원하지 않는 자료형입니다. | Unsupported data type. | |
sqlite_not_found_db | 데이터 베이스를 찾을 수 없습니다. | Unable to find a database. | |
sqlite_delete_error | 데이터 베이스 삭제에 실패 하였습니다. | Failed to delete the database. | |
preference_key_not_found | 요청하신 Key 를 찾을 수 없습니다. | Unable to find the requested key. | |
notice_never_seen_a_day | 오늘 하루 보지 않기 | Never seen a day | |
notice_never_see_again | 다시 보지 않기 | Never see again | |
fingerprint_not_registered | 지문이 등록되어 있지 않습니다. 설정에서 지문을 추가해 주세요 | The fingerprint is not registered. Please add fingerprints in settings | Android에서만 사용 |
fingerprint_too_many_attempt | 시도 횟수가 너무 많습니다. 나중에 다시 시도 하세요. | Too many attempts Please try again later. | Android에서만 사용 |
fingerprint_try_again | 다시 시도 | Try again | Android에서만 사용 |
fingerprint_auth_error | 인증 오류 | Authentication error | Android에서만 사용 |
fingerprint_ready_atttempt | 지문을 인식시켜 주세요. | Please recognize the fingerprint. | Android에서만 사용 |
gallery_title | 갤러리 | Gallery | |
gallery_all_files | 모든 파일 | All Files | Android에서만 사용 |
gallery_no_storage | 저장공간이 부족하여 기능을 수행할 수 없습니다. | Unable to execute the Function due to an insufficient storage space. | |
securestorage_encryption_db_init_error | 암호화 DB 초기화를 실패하였습니다. | Encryption DB initialization failed. | |
lockscreen_enter_new_pincode | 새롭게 설정할 비밀번호를 입력 하세요. | Please enter a new password | |
lockscreen_enter_your_pincode | 비밀번호를 입력 하세요. | Please enter a your password | |
lockscreen_reenter_your_pincode | 비밀번호를 다시 입력 하세요. | Please re-enter your password | |
lockscreen_enter_your_old_pincode | 기존 비밀번호를 입력 하세요. | Please enter your old password. | |
screen_brightness_enable_system_write_setting | '시스템 설정 쓰기 허용'을 활성화 시켜야 올바르게 동작 합니다. | You must enable ' Allow system settings to write ' for the correct operation. | Android에서만 사용 |
action_known_error | 초기화 수행 중에 에러가 발생하였습니다. | An error has occurred while executing initialization. | |
action_invalid_class | 지정하신 초기화 클래스가 존재하지 않습니다. | The designated initialization class doesn’t exist. | |
action_invalid_property | 초기화 속성이 유효하지 않습니다. | The initialization property is not valid. | |
action_execute_error | 초기화 실행 중 오류가 발생하였습니다. | An error has occurred while executing initialization. | |
action_retry_toast | 재시도 중입니다. | Re-attempting. | |
action_invalid_license | 라이센스가 유효하지 않습니다. | The license is invalid. | |
installbuiltinbizapp_loading | 필수 파일을 설치 중입니다. | Required files are being installed. | |
installbuiltinbizapp_is_empty | 설치할 필수 파일 목록이 없습니다. | There is no list of required files to install. | |
installbuiltinbizapp_no_launcherbizapp | 시작화면이 지정되지 않았습니다. | An start screen is not designated. | |
installbuiltinbizapp_invalid_launcherbizapp | 지정된 시작화면이 유효하지 않습니다. | The designated start screen is not valid. | |
installbuiltinbizapp_invalid_error | 내장된 필수 파일이 손상되었습니다. | The integrated required file is damaged. | |
installbuiltinbizapp_unformatted_error | 내장된 필수 파일의 구조는 지원하지 않습니다. | The structure of the integrated required file is not supported. | |
installbuiltinbizapp_not_found_error | 설치할 필수 파일을 찾을 수 없습니다. | Unable to find the required file to install. | |
installbuiltinbizapp_no_storage | 저장공간이 부족하여 내장된 필수 파일을 설치할 수 없습니다. | Unable to install the integrated required file due to an insufficient storage space. | |
requestlogin_loading | 단말기 정보를 등록 중입니다. | Registering the device information. | |
updateconfiguration_loading | 서버로부터 설정 정보를 가져옵니다. | Getting the configuration information from the server. | |
updatebizapp_force_update | 필수 파일의 업데이트가 있습니다. | There are updates for the required file. | |
updatebizapp_common_update | 업데이트된 파일이 있습니다. | There are updated files. | |
updatebizapp_update | 파일 업데이트 | File update | |
updatebizapp_loading | 파일 업데이트 중입니다. | Updating the file. | |
updatebizapp_complete_toast | 업데이트가 완료되었습니다. | Update is completed. | |
updatebizapp_request_info_error | 업데이트 정보 요청 중 에러가 발생하였습니다. | An error has occurred while requesting the update information. | |
updatebizapp_request_permitted_error | 업데이트 권한정보 요청 중 에러가 발생하였습니다. | An error has occurred while requesting the update right information. | |
updatebizapp_invalid_download_path | 다운로드 경로가 잘못 되었습니다. | Invalid download path. | |
updatebizapp_downloading_error | 다운로드 중 에러가 발생하였습니다. | An error has occurred while downloading. | |
updatebizapp_copy_error | 파일 복사 중 에러가 발생하였습니다. | An error has occurred while copying the file. | |
updatebizapp_decompressing_error | 압축 해제 중 에러가 발생하였습니다. | An error has occurred while decompressing. | |
updatebizapp_db_update_error | DB 갱신 중 에러가 발생하였습니다. | An error has occurred while updating the database. | |
updatebizapp_installing_error | 설치 중 에러가 발생하였습니다. | An error has occurred while installing. | |
updatebizapp_is_empty | 설치할 필수 파일 목록이 없습니다. | There is no list of required files to install. | |
updatebizapp_no_launcherbizapp | 시작화면이 지정되지 않았습니다. | An start screen is not designated. | |
updatebizapp_invalid_launcherbizapp | 지정된 시작화면이 유효하지 않습니다. | The designated start screen is not valid. | |
updatebizapp_invalid_error | 내려받은 필수 파일이 손상되었습니다. | The downloaded required file is damaged. | |
updatebizapp_unformatted_error | 내려받은 필수 파일의 구조는 지원하지 않습니다. | The structure of the downloaded required file is not supported. | |
updatebizapp_no_storage | 저장공간이 부족하여 필수 파일을 설치할 수 없습니다. | Unable to install the required file due to an insufficient storage space. | |
updatelauncher_op_force_update | 어플리케이션이 업데이트 되었습니다. | The application has been updated. | |
updatelauncher_check_version_loading | 스토어 버전 확인 중입니다. | Checking the Store version. | |
updatelauncher_common_update | 최신버전 어플리케이션이 있습니다. | The latest version application is available. | |
updatelauncher_update | 업데이트 공지 | Update notice | |
updatelauncher_store_force_update | 새로운 버전이 출시되었습니다. | A newer version has been released. | |
verifybizapp_loading | 보안검사를 실행 중입니다. | Performing security check. | |
verifybizapp_forgery_app | 설치된 파일의 변형이 의심되어 프로그램을 실행 할 수 없습니다. | Unable to run the program because the installed file could have been changed. | |
showlauncherbizapp_progress | 화면을 준비중 입니다. | Preparing the screen. | |
showlauncherbizapp_no_data | 시작화면이 지정되지 않았습니다. | An start screen is not designated. | |
showlauncherbizapp_invalid_bizapp | 필수 파일을 찾을 수 없습니다.\n 앱을 재 시작해 주세요. | Unable to find the required file.\nPlease restart. | |
checkupdate_common_update | 업데이트된 파일이 있습니다.\n 앱 종료 후 재실행 바랍니다. | There are updated files. | |
checkupdate_force_update | 필수 파일의 업데이트가 있습니다.\n 앱 종료 후 재실행 바랍니다. | There are updates for the required file. | |
server_response_error | 비정상 응답입니다. | Abnormal response. | |
server_invalid_data | 수신데이터가 유효하지 않습니다. | The receiving data is not valid. | |
server_no_launcherbizapp | 서버에 비즈앱 런처가 설정되어 있지 않습니다\nOperation Center 에 접속하여 설정하세요 | The BizApp Launcher is not set in the server.\nSet the BizApp Launcher by connecting Operation Center. | |
network_unknown_error | 네트워크 수행 중 에러가 발생하였습니다. | An error has occurred while operating the network. | |
network_net_io_error | 네트워크 통신 중 에러가 발생하였습니다. | An error has occurred while communicating over the network. | |
network_no_connectivity | 네트워크 연결이 원활하지 않습니다. | Network connection is not stable. | |
network_timeout_exceed | 네트워크 요청시간을 초과하였습니다. | The network request time is exceeded. | |
network_invalid_data_format | 지원하지 않는 데이터 포멧입니다. | Unsupported data format. | |
network_invalid_request_type | 통신상태가 원활하지 않습니다. 통신상태를 확인해주세요. | The communication state is not stable. Please check the communication state. | |
network_load_loading | 로드 중입니다. | Loading. | |
network_upload_loading | 업로드 중입니다. | Uploading. | |
network_occur_error | 네트워크에 문제가 있습니다.\n앱을 종료합니다. (%s) | There is a network problem.\nThe app will be stopped. (%s) | |
network_exit_app | 앱을 종료합니다. | The App will be stopped. | |
network_not_found_upload_file | 업로드할 대상 파일을 찾을 수 없습니다. | Unable to find the target file to upload. | |
network_not_found_file_payload | payload 내 files 를 찾을 수 없습니다. | Unable to find files inside payload. | |
network_no_storage | 저장공간이 부족하여 앱을 설치할 수 없습니다. | Unable to install the App due to an insufficient storage space. | |
network_invalid_target_address | 타겟서버의 주소를 찾을 수 없습니다. 타겟의 이름을 확인하세요. | Unable to find the target server address. Please check the name of the target. | |
network_invalid_send_data | 전송데이터가 유효하지 않습니다. | The sending data is not valid. | |
network_invalid_receive_data | 수신데이터가 유효하지 않습니다. | The receiving data is not valid. | |
network_server_comm_error | 서버통신 시 오류가 발생하였습니다. | An error has occurred in server communication. | |
network_no_honemobile_header | X-HONEMobile-Header가 없습니다. | There is no X-HONEMobile-Header. | |
network_downloading_file | 파일을 다운로드 중입니다. | Downloading a file. | |
network_ssl_cert_error | SSL 인증 오류 | SSL authentication error | |
network_ssl_cert_error_msg | 이 웹사이트에 대한 인증서가 유효하지 않습니다. | The certificate for this web site is not valid. | |
network_ssl_ignore_cert_error | 이 메시지 창을 더 이상 띄우지 않고 항상 연결 하기 | Alway connect without displaying this message window | |
exception_thread_interrupted | 스레드가 중단되었습니다. | The thread has stopped. | |
exception_execution_interrupted | 실행이 중단되었습니다. | Execution has stopped. | |
permission_title | 권한 추가 | Add a privilege | Android에서만 사용 |
permission_error | 권한 오류가 발생하였습니다. | A privilege error has occurred. | Android에서만 사용 |
permission_message | 앱을 올바르게 실행하기 위해서는 권한 추가가 필요 합니다. | You need to add a privilege to run the App properly. | Android에서만 사용 |