06. Custom 개발


사용자의 필요 시 알림, 스플래쉬, 로딩 화면을 앱에 맞게 커스텀이 가능하다.


스플래쉬 화면 개발

사용자의 인트로 화면을 커스텀하여 개발 할 수 있다.

Picture47.png

  1. Project 선택
  2. Windows Group 폴더
  3. New File 메뉴 선택

 

Picture48.png

  1. iOS - Source - Cocoa Touch Class 선택
  2. Next 버튼 선택

 

Picture49.png

  1. CustomSplashWindow 입력
  2. Subclass of 항목에 HMPWindow 작성
  3. Next 버튼 선택

 

Picture50.png

  1. Windows 폴더 선택
  2. Create 버튼 선택

 

Picture51.png

  1. Project 선택
  2. AppDelegate.m 파일 선택
  3. Splash 코드 작성

 

Example

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
   // 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;
}

Picture52.png

  1. Project
  2. CustomSplashWindow.m 파일 선택
  3. 스플래쉬 로딩 완료 호출

 

Example

[[HMPAppDelegateManager sharedAppDelegateManager] completedSplash];

알림화면 개발

사용자의 알림화면을 커스텀하여 개발 할 수 있다.

Picture53.png

  1. Project 선택
  2. AppDelegate.m 파일 선택
  3. 커스텀 알림 함수 정의

 

Example

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    [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 {
}

로딩화면 개발

사용자의 로딩화면을 커스텀하여 개발 할 수 있다.

Picture54.png

  1. Project 선택
  2. AppDelegate.m 파일 선택
  3. 커스텀 로딩 호출

 

Example

[[HMPProgressManager sharedProgressManager] useCustomWithShowLoading:^(NSString *title, NSString *message) {
   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

NoHeader FileMethodRemark
1HMPKeyProvider-(NSData*)getKey;Key를 가져온다.
2HMPKeyProvider-(void)setKeyemoticon_unhappyNSData*)keydata;Key를 설정한다.
    

SampleKeyProvider.h Example

#import “HMPKeyProvider.h”
@interface SampleKeyProvider : NSObject <HMPKeyProvider>
@end

SampleKeyProvider.m Example

#import "SampleKeyProvider.h"

@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

NoHeader FileMethodRemark
1HMPEncryptionProvider-(NSData*)encryptemoticon_unhappyNSData*)key dataemoticon_unhappyNSData*)data키와 데이터를 받아 암호화된 데이터를 리턴 , 송신 시점에 호출됨.
2HMPEncryptionProvider-(NSData*)decryptemoticon_unhappyNSData*)key dataemoticon_unhappyNSData*)data키와 암호화된 데이터를 받아 복호화된 데이터로 리턴, 수신 후에 호출됨
3HMPSessionProvider-(BOOL)isExpired(세션 타임아웃 여부
4HMPSessionProvider-(void)updateSession세션 업데이트 시도
    

 

AESNetworkEncryptionProvider.h Example

#import "HMPEncryptionProvider.h"
#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

@interface AESNetworkEncryptionProvider() {
   /**
      *  마지막 갱신 타임
      */

   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 의 리소스에 재 설정 하면 된다. 

변경 방법은 다음과 같다.

customString.png

  1. 프로젝트의 Localizable.strings 파일 선택
  2. 변경하고 싶은 제품의 String 값을 재정의

 

HSP에 미리 설정되어 있는 문자열 키는 아래와 같다. 

Table. HSP String

String IDKoreanEnglishComment
 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에서만 사용