Notice
Notice 은 HSP 에서 확장 라이브러리로 제공하는 API 로 aar 라이브러리 파일과 build.gradle 파일을 수정하여 사용할 수 있다.
라이브러리 추가 방법은 Android 개발 가이드의 내용을 참조하면 된다.
Notice 은 Operation 에 등록하는 공지사항 정보를 단말에 표현하는 기능을 가진다. 공지사항은 텍스트, 이미지 형태를 가지고 있고 외부 링크를 추가할 수도 있다.
사용 설정
INetworkDelegate
Notice 는 Operations Center 에 Notice 관련 데이터를 요청/응답 받아야 하는데 Notice 자체는 Operations Center와 통신하기 위한 코드가 별도로 존재하지 않기 때문에 NetworkDelegate 가 필요 하다.
NetworkDelegate 는 보통 MainActivity 내에 구현되어야 하며 그에 대한 예제는 아래와 같다.
@Override
public void request(@NonNull Map<String, Object> context, @NonNull Map<String, Object> message, @NonNull OnResultListener<Object> listener) {
boolean isAsync = MapUtils.isAsync(context);
Map<String, Object> paramsMap = MapUtils.newNetworkParams(context, message);
OnResultListener<MessageContainer> resListener = (result, msgContainer) -> {
switch (result) {
case OnResultListener.TRUE:
listener.onResult(result, msgContainer.getMessage().getPayload());
break;
default:
listener.onResult(result, msgContainer);
break;
}
};
if (isAsync) {
if (context.get(Constants.KEY_SERVICE_NAME).equals(Constants.SERVICE_ID_REQUEST_NOTICE)) {
DAPNetwork.asyncDoRequest(activity, paramsMap, resListener,
new TypeReference<HoneMobileMessage<NoticeResponse>>(){});
} else {
DAPNetwork.asyncDoRequest(activity, paramsMap, resListener);
}
} else {
DAPNetwork.doRequest(activity, paramsMap, resListener);
}
}
@Override
public void download(@NonNull Map<String, Object> context, @NonNull OnResultListener<Object> listener) {
}
});
IConfigDelegate
Notice 를 이용하기 위해서는 서버에서 전달하는 이미지 파일을 저장할 경로를 지정해야 하며, 이를 위해 IConfigDelegate 를 구현해야 한다.
MainActivity 에 IConfigDelegate 를 implements 한 뒤 getConfig 를 Override 하고 DAPNotice.NOTICE_DOWNLOAD_DIR 에 해당하는 값을 반환 하면 된다.
Example
// ...
@Override
public String getConfig(@NonNull String key) {
switch (key) {
case DAPNotice.NOTICE_DOWNLOAD_DIR:
return HoneMobile.get().resource().downloadPath();
}
return null;
}
// ...
}
show
show 는 Operation 서버에서 Notice 데이터를 읽은 후 이를 파싱하여 화면에 출력한다.
Example
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
}]
}
}
이를 이용하여 사용자는 자신이 원하는 형태의 Notice 를 생성할 수 있다.
Example
ActionBase.setOnActionFlowEnd {
DAPNotice.get(activity, {
// TODO
}) {
// TODO
}
}
// 3.10.18 이하
ActionBase.setOnActionFlowEnd {
DAPNotice.get { result, value ->
when (result) {
OnResultListener.TRUE -> {
// TODO
}
else -> {
// TODO
}
}
}
}
ActionBase.setOnActionFlowEnd(() -> {
DAPNotice.get(activity, result -> {
// TODO
}, e -> {
// TODO
});
});
// 3.10.18 이하
ActionBase.setOnActionFlowEnd(() -> {
DAPNotice.get((result, value) -> {
// TODO
});
});