Сбой проверки лицензии Android Слишком много, я делаю что-то не так? - PullRequest
2 голосов
/ 16 сентября 2011

У меня есть приложение для Android, которое использует службу лицензирования Google, и я получаю регулярные электронные письма от примерно 5% новых пользователей, жалующихся на неудачную проверку лицензии.Это начинает влиять на мои продажи.Какого черта я делаю не так?

this.licenseCheckerCallback = new MyLicenseCheckerCallback();

String deviceId = Secure.getString(getContentResolver(), Secure.ANDROID_ID);

// Construct the LicenseChecker with a Policy.
this.licenseChecker = new LicenseChecker(
    this, new ServerManagedPolicy(this,
            new AESObfuscator(SALT, getPackageName(), deviceId)), 
            BASE64_PUBLIC_KEY  // Your public licensing key.
    );

this.checkLicense();




private void checkLicense() {
    this.licenseChecker.checkAccess(this.licenseCheckerCallback);
}


private class MyLicenseCheckerCallback implements LicenseCheckerCallback {

    public void allow() {
        // Don't do anything, let the user work in peace.
    }

    public void dontAllow() {
        if (isFinishing()) {
            // Don't update UI if Activity is finishing.
            return;
        }
        // Should not allow access. In most cases, the app should assume
        // the user has access unless it encounters this. If it does,
        // the app should inform the user of their unlicensed ways
        // and then either shut down the app or limit the user to a
        // restricted set of features.
        // In this example, we show a dialog that takes the user to Market.
        showDialog(DIALOG_NO_LICENSE_ID);
        MyActivity.this.dialogIdCurrentlyShown = DIALOG_NO_LICENSE_ID;
    }

    public void applicationError(ApplicationErrorCode errorCode) {
        if (isFinishing()) {
            // Don't update UI if Activity is finishing.
            return;
        }
        // This is a polite way of saying the developer made a mistake
        // while setting up or calling the license checker library.
        // Please examine the error code and fix the error.
        MyActivity.this.applicationErrorMessageForDialog = String.format(getString(R.string.application_error), errorCode);
        showDialog(DIALOG_APPLICATION_ERROR_ID);
        MyActivity.this.dialogIdCurrentlyShown = DIALOG_APPLICATION_ERROR_ID;
    }
}

1 Ответ

2 голосов
/ 09 ноября 2011

Вы не делаете ничего плохого.У меня такая же проблема, как и у других людей.И вы мало что можете сделать, но все же:

  1. Откройте заявку в службу поддержки, чтобы Google сообщил им, что производительность LVL ниже оптимальной и влияет на законных пользователей.
  2. Добавьте «Повторить»кнопку в диалоговом окне «Не лицензирован».Иногда это просто временный сбой сети, который приводит к сбою лицензирования.
  3. Попробуйте оставить сообщение поддержки Google в нашем диалоговом окне или добавить другие средства, позволяющие пользователю сообщить о проблеме источнику.
  4. Иединственный эффективный вариант, вероятно: вручную увеличить значение GT отметки времени, полученной от службы лицензирования, перед сохранением ее в кеше, если ответ предназначен для постоянной покупки.Проверьте разницу между отметкой времени GT и отметкой времени VT - если она достаточно велика (неделя), добавьте еще один месяц или даже год к GT.Идея состоит в том, что после того, как пользователь прошел период возврата, вы можете сделать его / ее лицензию полупостоянной или полностью постоянной на его / ее устройстве.

Надеюсь, это поможет.

...