In App


In App 는 3.7.13 버전 이상 부터 제공되며 기본 라이브러리에 포함되어 있다.

In App 은 앱 내에서 사용자가 의도에 따라 별도로 다운로드/삭제 되는 앱이며, 고객 사 에서 앱 배포 초기 시점에 다수의 대용량 비즈앱을 모두 다운로드 하여 네트워크에 트래픽 집중 되는 문제 그리고 특정 타깃에게만 지정된 비즈앱을 사용하게 하기 위한 요구사항에 의해 기획 / 설계 되었다.

In App 을 위해서 HSP 는 비즈앱의 타입을 재 정의 하여 requiredoptional 앱으로 구분하며, required 앱은 기존과 동일하게 다운로드 하고 optional 앱은 사용자가 필요에 의해 다운로드 요청 시에만 다운로드 하도록 설계되었다.

업데이트의 경우 optional 앱이 단말에 설치된 이후부터는 required 앱과 동일하게 동작 되도록 설계되었다.


getList

getList 는 서버에서 현재 업로드 된 In App 형태를 가지는 비즈앱 목록을 전달 받은 후 단말 내에 설치된 비즈앱의 정보를 디비에서 얻은 후 이 값들을 비교하여 In App 목록을 전달 받게 된다.

스크린샷 2018-11-06 오전 10.02.07.png

이때 전달 받는 In App 정보는 아이디, 크기, 해시, 버전, 설치 유무 등의 정보를 가진다.

public final class InAppVersion extends BizAppVersion {
   /** 설치 유/무 */
   private final boolean isInstalled;

   public InAppVersion(BizAppVersion app, boolean isInstalled) {
        setBizAppDesc(app.getBizAppDesc());
        setBizAppId(app.getBizAppId());
        setFileSize(app.getFileSize());
        setHashCode(app.getHashCode());
        setVersion(app.getVersion());
        setBizAppType(app.getBizAppType());

       this.isInstalled = isInstalled;
   }

   public boolean isInstalled() {
       return isInstalled;
   }
}
public class BizAppVersion implements Serializable {
   /** 비즈앱 경로 */
   private String bizAppDesc;

   /** 비즈앱 아이디 */
   private String bizAppId;

   /** 비즈앱 파일 크기 */
   private long fileSize;

   /** 비즈앱에 SHA-256 해시 값 */
   private String hashCode;

   /** 비즈앱 버전 */
   private String version;

   /** 비즈앱 타입 (required, optional) */
   private String bizAppType;
}

Example

// 3.10.18 이상
DAPInApp.getList(activity, {
   // TODO
}) {
   // TODO
}

// 3.10.18 이하
val appList = DAPInApp.getList(activity)
// 3.10.18 이상
DAPInApp.getList(activity, result -> {
       // TODO
   }, e -> {
       // TODO
   })

// 3.10.18 이하
List<InAppVersion> appList = DAPInApp.getList(activity)

install

install 은 getList 로 전달 받은 In App 정보를 기준으로 지정된 위치에 앱을 다운로드 한 뒤 install (unzip) 하고 설치하고 올바르게 설치되었으면 디비에 정보를 남기게 된다. 만약 파일 다운로드가 실패 하였거나 install 이 제대로 이루어지지 않았다면 오류를 반환 한다.

스크린샷 2018-11-06 오전 10.06.36.png

Example

var bizapp: List<BizAppVersion> // DAPInApp.getList(activity) 내 정보 이다.

// 3.10.18 이상
DAPInApp.install(activity, bizapp, {
   // TODO
}) {
   // TODO
}

// 3.10.18 이하
DAPInApp.install(activity, bizapp)
BizAppVersion bizapp; // DAPInApp.getList(activity) 내 정보 이다.

// 3.10.18 이상
DAPInApp.install(activity, bizapp, result -> {
       // TODO
   }, e -> {
       // TODO
   });

// 3.10.18 이하
DAPInApp.install(activity, bizapp);

uninstall

unstainll 은 단말에 설치된 In App 파일을 삭제 요청 한 뒤 올바르게 삭제 되었으면 삭제된 In App 의 아이디를 기준으로 디비 데이터를 삭제한다. uninstall 의 경우 로컬 정보만을 기준으로 동작하므로 서버 (Operations) 와의 연동 작업은 별도로 존재하지 않는다.

스크린샷 2018-11-06 오전 10.06.40.png

Example

var appId:String  // InAppVersion 내 bizAppId 값

// 3.10.18 이상
DAPInApp.uninstall(activity, appId, {
   // TODO
}) {
   // TODO
}
// 3.10.18 이하
DAPInApp.uninstall(appId)
String appId; // InAppVersion 내 bizAppId 값

// 3.10.18 이상
DAPInApp.uninstall(appId, result -> {
       // TODO
   }, e -> {
       // TODO
   });

// 3.10.18 이하
DAPInApp.uninstall(appId);