안녕하세요.. 라이센스를 적용해보려고 하는데요..
음 일단 골자는 이렇습니다.
A무료 어플
B유료 어플
A어플에서 B의 라이센스를 확인하도록 하여 여부 확인...
이런식으로 하려고 테스트 어플을 만들었는데요.
A어플에서 자체 패키지 이름과 B어플 패키지 이름으로 두 라이센스를 확인해보았습니다만.
B어플을 구매 하지 않았음에도 두 라이센스 모두 통과 해버리네요.. (물론 개발자 계정 테스트 계정 모두 아닙니다.
실사용자 계정에서 테스트)
말로만 설명이 조금 난해 하니 A어플의 코드중...
m_Checker1 = new LicenseChecker(this, new ServerManagedPolicy(this, new AESObfuscator(SALT, getPackageName(),
DeviceId)), BASE64_PUBLIC_KEY);
m_Checker2 = new LicenseChecker(this, new ServerManagedPolicy(this, new AESObfuscator(SALT, "B어플 패키지 이름",
DeviceId)), BASE64_PUBLIC_KEY);
m_Checker1.checkAccess(m_LicenseCheckerCallback1);
m_Checker2.checkAccess(m_LicenseCheckerCallback2);
이런식으로 두개의 라이센스를 확인했습니다.
첫번째는 자기 자신의 라이센스를 확인하구요, 두번째는 유료인 B어플의 라이센스(구매여부겠지요) 를 확인합니다.
첫번째 확인은 어찌될지 궁금해서 테스트로 넣어 본것이구요(무료인데 라이센스 확인 결과가 어떨지 궁금해서요.)
두번째 확인은 B어플을 구매하지 않는한 통과 되지 않을거라 생각했는데 모두 통과 되어 버리는 군요.
참고로 개발자 계정으로 테스트 할때는 "라이센스 테스트응답" 에서 설정한데로 통과/불통과가 잘 나옵니다.
질문을 정리 하자면...
1. 무료 어플(A어플)에서 라이센스를 확인했기때문에 그냥 라이센스가 통과 된것인지.
2. A어플에서 B어플의 라이센스를 확인하는 것이 허용되지 않아서 그냥 통과 된것인지.
3. 뭔가 다른원인이 있는 것인지.
조언 부탁드립니다. 그럼 행복한 하루되시길..
ps : 문득 든 생각인데요.. 일단 A어플은 무료이기때문에 자기 자신의 패키지로 라이센스를 확인하면 무조건 통과가 되고
이 값이 캐쉬에 들어가 있으니 두번째로 확인하는 부분에선 캐쉬값을 가지고 그냥 통과시켜버린것은 아닌지 의심이 드는군요.
개발정보도 공유하고 개발한 어플도 홍보도 하고싶습니다.
잘부탁해요..




ServerManagedPolicy.java 코드를 보시면 답이 있을듯 하네요...
예전에 본 기억으로는 xxx.ServerManagedPolicy.xml에 check한 값을 저장하고,
또한 validity Timestamp값이 있어서 아마 1분(옵션에 따라 달라질수 있던걸로 기억) 안에 다시 요청하면 서버에서 다시 확인하는게
아니라 캐시된 값을 다시 사용하는것으로 알고있고, 테스트 계정은 아마 저게 cache validation timestamp값이 null이었던듯 합니다.
확실치는 않습니다. 걍 소스 보심이...
그런데 무료어플에도 LVL이 적용되나요?