LVLのサーバーからのレスポンスについて

170 views
Skip to first unread message

eno

unread,
Jun 7, 2012, 10:35:16 PM6/7/12
to Android Developers Japan
現在、LVL(License Verification Library)を実装したAndroidアプリをマーケットにアップロードしています。
このアプリではVTの値をカスタマイズしていて、サーバーからのレスポンスが2日以内だった場合はレスポンス通りの値をVTとしてキャッシュ。
2日以上だった場合はネットワーク経由のライセンス確認を停止するためにLongの最大値をVTとしてキャッシュするようにしています。

今回、実際にアップロードしたアプリのVTの値を確かめるためにダウンロードして確認したところ想定と違い、下部に示すような結果となりました。


ここで質問なのですが、2度目以降の問い合わせの場合、サーバーからのレスポンスは通常どのような値が返ってくるのでしょうか?
Androidの資料(http://developer.android.com/intl/ja/guide/market/licensing/
index.html)などを読んでいると、2度目以降のキャッシュは数日の値が返ってくると考えています。

もしわかる方がいらっしゃいましたら、ご回答よろしくお願いいたします。



【想定した結果】
 1回目のVT:24時間
 2回目のVT:2日以上


【実際の結果】
 1回目のVT:24時間
 2回目のVT:24時間


【VTを設定する箇所のコード:ServerManagedPolicy.java】
private void setValidityTimestamp(String validityTimestamp) {
Long lValidityTimestamp = null;
if(validityTimestamp == null){
try {
lValidityTimestamp = Long.parseLong(validityTimestamp);
} catch (NumberFormatException e) {
// No response or not parsable, expire in one minute.
Log.w(TAG, "License validity timestamp (VT) missing,
caching for a minute");
lValidityTimestamp = System.currentTimeMillis() +
MILLIS_PER_MINUTE;
validityTimestamp = Long.toString(lValidityTimestamp);
}
}
// キャッシュの有効期間が2日以内だった場合
else if(Long.parseLong(validityTimestamp) <
System.currentTimeMillis() + (1000 * 60 * 60 * 24 * 2)){
try {
lValidityTimestamp = Long.parseLong(validityTimestamp);
} catch (NumberFormatException e) {
// No response or not parsable, expire in one minute.
Log.w(TAG, "License validity timestamp (VT) missing,
caching for a minute");
lValidityTimestamp = System.currentTimeMillis() +
MILLIS_PER_MINUTE;
validityTimestamp = Long.toString(lValidityTimestamp);
}
}
// キャッシュの有効期間が2日以上だった場合
else if(Long.parseLong(validityTimestamp) >=
System.currentTimeMillis() + (1000 * 60 * 60 * 24 * 2)){
validityTimestamp=String.valueOf(Long.MAX_VALUE);
try {
lValidityTimestamp =
Long.parseLong(validityTimestamp);
} catch (NumberFormatException e) {
// No response or not parsable, expire in one minute.
Log.w(TAG, "License validity timestamp (VT) missing,
caching for a minute");
lValidityTimestamp = System.currentTimeMillis() +
MILLIS_PER_MINUTE;
validityTimestamp = Long.toString(lValidityTimestamp);
}
}
mValidityTimestamp = lValidityTimestamp;
mPreferences.putString(PREF_VALIDITY_TIMESTAMP,
validityTimestamp);

// キャッシュ期間のログ表示
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd
HH:mm:ss");
String tmp2 = sdf.format(mValidityTimestamp);
Log.d("LOG", "vt:" + String.valueOf(tmp2));
}

Reply all
Reply to author
Forward
0 new messages