notice
notice 은 HSP 에서 확장 라이브러리로 제공하는 API 로 aar 라이브러리 파일과 build.gradle 파일을 수정하여 사용할 수 있다.
라이브러리 추가 방법은 Android 개발 가이드의 내용을 참조하면 된다.
notice 은 Operation 에 등록하는 공지사항 정보를 단말에 표현하는 기능을 가진다. 공지사항은 텍스트, 이미지 형태를 가지고 있고 외부 링크를 추가할 수도 있다.
사용 설정
INetworkDelegate
notice 는 Operations Center 에 Notice 관련 데이터를 요청/응답 받아야 하는데 notice 자체는 Operations Center와 통신하기 위한 코드가 별도로 존재하지 않기 때문에 NetworkDelegate 가 필요 하다.
NetworkDelegate 는 보통 MainActivity 내에 구현되어야 하며 그에 대한 예제는 아래와 같다.
Example
@Override
public Object post(@NonNull NetworkDelegateParams params) {
Network.Builder builder = Network.builder();
// container 가 존재하면 구현해 두었던 DAPNetwork 를 통해 처리 하고
if (params.container != null) {
if (params.typeRef == null) {
return DAPNetwork.doRequest(HoneMobileActivity.this,
DAPNetwork.METHOD_POST, params.container);
} else {
return DAPNetwork.doRequest(HoneMobileActivity.this,
DAPNetwork.METHOD_POST, params.container, params.typeRef);
}
} else {
// 일단 url 로 호출했을 경우는 NetworkDelegate 를 통해 처리 한다.
if (!TextUtils.isEmpty(params.url)) {
builder.url(params.url);
}
if (params.forceDownload) {
builder.forceDownload(true).retrieveDownloadPath();
}
if (params.multipartBody != null) {
builder.multipartBody(params.multipartBody);
}
NetworkBase network = NetworkDelegate.get().net(HoneMobileActivity.this);
return networkInternal(false, network, builder, params);
}
}
@Override
public void asyncPost(@NonNull NetworkDelegateParams params) {
Network.Builder builder = Network.builder();
if (params.container != null) {
if (params.typeRef == null) {
DAPNetwork.asyncDoPost(HoneMobileActivity.this, params.container,
params.successCallback, params.errorCallback);
} else {
DAPNetwork.asyncDoPost(HoneMobileActivity.this, params.container,
params.successCallback, params.errorCallback, params.typeRef);
}
} else {
// 일단 url 로 호출했을 경우는 NetworkDelegate 를 통해 처리 한다.
if (!TextUtils.isEmpty(params.url)) {
builder.url(params.url);
}
if (params.forceDownload) {
builder.forceDownload(true).retrieveDownloadPath();
}
if (params.multipartBody != null) {
builder.multipartBody(params.multipartBody);
}
NetworkBase network = NetworkDelegate.get().net(HoneMobileActivity.this);
Executors.newSingleThreadExecutor().execute(() -> networkInternal(true, network, builder, params));
}
}});
IConfigDelegate
notice 를 이용하기 위해서는 서버에서 전달하는 이미지 파일을 저장할 경로를 지정해야 하며, 이를 위해 IConfigDelegate 를 구현해야 한다.
MainActivity 에 IConfigDelegate 를 implements 한 뒤 getConfig 를 Override 하고 DAPNotice.NOTICE_DOWNLOAD_DIR 에 해당하는 값을 반환 하면 된다.
Example
// ...
@Override
public String getConfig(@NonNull String key) {
switch (key) {
case IConfigDelegate. DOWNLOAD_PATH
return HoneMobile.get().resource().downloadPath();
}
return null;
}
// ...
}
show
show 는 Operation 서버에서 Notice 데이터를 읽은 후 이를 파싱하여 화면에 출력한다.
Example
//ToDo
}) {
//ToDo
}
//ToDo
}, e-> {
//ToDo
});
get
get 은 Operation 서버에서 전달 하는 JSON 객체를 반환 하며 반환되는 정보는 아래와 같다.
JSON Format
"header": {},
"payload": {
"noticeInfos": [{
"id": 104,
"launcherAppId": null,
"title": "이미지테스트입니다.",
"type": "image",
"priority": "high",
"url": "www.daum.net",
"imagePath": "https://hone.hanwha.co.kr/smartop_2_6_3_1/download?type=noticeImage&imageName=1477877977777_null",
"content": null,
"startDate": 1477580400000,
"endDate": 1478030400000
}, {
"id": 103,
"launcherAppId": null,
"title": "텍스트 테스트입니다.",
"type": "text",
"priority": "normal",
"url": "www.naver.com",
"imagePath": null,
"content": "텍스트 공지 테스트입니다.",
"startDate": 1477580400000,
"endDate": 1478012400000
}]
}
}
필드 | 필드 | 설명 |
---|---|---|
noticeInfos | id | 공지사항 인덱스 |
launcherAppId | 앱 아이디 | |
title | 공지사항 제목 | |
type | 공지사항 타입 | |
priority | 공지사항 레벨 (high/normal/low) | |
url | 공지사항 경로 | |
imagePath | 공지사항 이미지 경로 | |
startDate | 기재 시작 날짜 (Timestamp 기준) | |
endDate | 기재 종료 날짜 (Timestamp 기준) | |
content | 공지사항 내용 | |
이를 이용하여 사용자는 자신이 원하는 형태의 Notice 를 생성할 수 있다.
Example
// TODO
}) {
// TODO
}
// TODO
}, e -> {
// TODO
});
Error Code
Code | Cause | Comment |
---|---|---|
E11100 | 파라메터 값이 잘못되어 있을 경우 | |
E11101 | 전달된 액션 값이 알 수 없는 액션일 경우 | |
E11150 | 실행 중 오류가 발생 되었을 경우 | |
E11151 | 서버로 부터 전달받은 응답 메시지가 없는 경우 | |
E11152 | 서버로 부터 전달받은 응답 메시지가 잘못되어 있는 경우 | |
E11199 | 알 수없는 오류가 발생 되었을 경우 | |