Долговечность лицензионной проверки статуса «активирован». Насколько часто это слишком много для пользователя?

Мое приложение - своего рода карманный справочник с некоторыми данными за весь год. Я предполагаю, что пользователи будут использовать программу хотя бы один раз с доступом в Интернет для активации лицензии. По крайней мере, так я понимаю, как работает система лицензирования Android. Я использую ServerManagedPolicy.

Проверяет ли он периодически наличие лицензии? Как я могу это контролировать? Я не хочу, чтобы мои пользователи оказались в глуши, с уже активированным приложением и внезапно через 1 неделю, 1 месяц, 1 год и т. Д. приложение начинает ограничивать удобство использования самого приложения, потому что лицензию не удалось повторно подтвердить . Мое приложение будет использоваться в удаленных местах с нестабильным доступом к сети (не может считаться само собой разумеющимся все время) людьми, которые будут жить там неделями, а может и месяцами.

Я чувствую, что должен хотя бы предупредить их, что их будут просить делать это каждые X недель. Неужели система лицензирования даже такая драконовская?

Я знаю, что могу обрабатывать ошибки с помощью флага ERROR_CONTACTING_SERVER в applicationError, не имеющем значения LicenseCheckerCallback. Всегда ли ответ «VT» один и тот же (не могу проверить это на тестовой учетной записи / моей учетной записи)? Мне просто было любопытно, как вы, ребята, относитесь к этой ситуации в своих реальных приложениях. Я что-то упустил? Почему-то я чувствую, что да. Есть ли какой-нибудь "подвох"?

// ОТРЕДАКТИРОВАННЫЙ:

Вот код, который я пробую прямо сейчас:

// ServerManagedPolicy.java
private void setValidityTimestamp(String validityTimestamp) {
    Long lValidityTimestamp;
    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);
    }
    // added by me--->

    private static long maxLicense = 1000 * 3600 * 24 * 30; // ~ roughly 30 days
    private static long minLicense = 1000 * 3600 * 24 * 3;  // ~ roughly 3 days

    long lMax = System.currentTimeMillis() + maxLicense;
    long lMin = System.currentTimeMillis() + minLicense;
    if ((lValidityTimestamp > lMin) && (lValidityTimestamp < lMax)) {
        validityTimestamp = Long.toString(lMax);
    }

    // <--- added by me

    mValidityTimestamp = lValidityTimestamp;
    mPreferences.putString(PREF_VALIDITY_TIMESTAMP, validityTimestamp);
}
8
задан CommonsWare 14 June 2015 в 11:27
поделиться