Google Play LIcensing - что значит "отвечать нормально"?
Здравствуйте и спасибо заранее за ваш ответ.
Я загрузил свое лицензированное приложение в Play Store. Я могу тестировать и получать ожидаемые результаты со всеми ответами лицензий на статические тесты (Лицензированные, Не лицензированные и т. Д.). Все идет нормально.
Но если у моего тестового устройства нет подключения к Интернету, проверка лицензии ВСЕГДА не проходит. Это не то, как я понимаю политику ServerManaged для работы. Если в недавнем прошлом было установлено, что установка была лицензирована, политика должна кэшировать информацию в общем файле prefs и использовать ее, если нет подключения к Интернету.
Поэтому я временно прокомментировал обфускацию данных в файле prefs, который создает система лицензий. Когда я смотрю на данные, я вижу, что число повторов и другие вещи установлены на ноль. Это не то, что я ожидаю. С такими данными я веду себя так, как будто я использую строгую политику (а я нет).
Я предполагаю, что это является артефактом использования системы тестовых ответов и что "реальные" пользователи будут получать фактические данные в своих обфусцированных общих настройках, что позволяет им работать в отсутствие подключения к Интернету.
Поэтому я попытался установить ответ сервера на "Нормальный ответ". Когда я делаю это, я ВСЕГДА получаю НЕ ЛИЦЕНЗИОННЫЙ ответ. И я думаю, в этом есть какой-то смысл, потому что я не купил приложение и не загрузил его.
Так как я, как разработчик, могу испытать именно то, что испытывают мои конечные пользователи? Я хочу иметь возможность проверить, как все это работает без подключения к интернету, например. Я не могу понять, как это сделать? Думаю, я мог бы купить собственное приложение, но я не уверен, что оно будет работать, поскольку тестовое устройство подключено к тестовой учетной записи. И для разработчика нет смысла приобретать собственное приложение.
Спасибо за любые предложения.
2 ответа
Я думаю, что нашел возможное решение вашей проблемы.
Что я сделал: во-первых, я создал группу Google для альфа / бета-тестеров своего приложения (конечно, после загрузки приложения). Затем я вошел в эту группу Google и принял приглашение. После этого я вставил свою учетную запись разработчика gmail в список пользователей для проверки лицензии и установил ответ сервера "RESPOND_NORMALLY".
Таким образом, ответ сервера всегда будет "ЛИЦЕНЗИРОВАН" для моей учетной записи, и срок действия не истечет через 2 минуты. Это как я купил приложение!
Единственным ограничением для этого трюка является то, что вы должны загружать свое приложение в бета-версию или альфа-слот вашей консоли разработчика Google, но после этого вы также можете получить ответ "LICENSED" с помощью приложения отладки, загруженного на ваше устройство с использованием обычного Eclipse IDE! Вам не нужно ждать генерации ссылки для загрузки тестового приложения (которое генерируется очень медленно... До 24 часов!).
Я тоже испытал это разочарование. Я тоже хочу иметь такой же опыт, как и мои клиенты. Как только я устанавливаю "Отвечать нормально", я всегда вижу ответ "НЕ ЛИЦЕНЗИРОВАННЫЙ", который кажется ОЧЕНЬ СУБПОТИМАЛЬНЫМ. Я ВЕРИМ, что Google должен добавить, это параметр ** 'RESPOND_NORMALLY_AND_LICENSED' **. Это сделало бы то, что нужно.
Суть проблемы: если я оставляю свое приложение как "ЛИЦЕНЗИРОВАННОЕ", которое отлично работает, когда у меня есть подключение к Интернету, то через 2 минуты без подключения мое приложение перестает работать по лицензии (так как кэш установлен на сервере Google Play до 2 минут). Таким образом, если я хочу использовать свое собственное приложение изо дня в день, мне нужно создать приложение с отключенным лицензированием - то, чего никогда не увидят мои клиенты. Это ОЧЕНЬ плохая идея.
Мы все давно узнали: "Вы должны есть свой" корм для собак "как разработчик".
- Я сообщил об этом как об ошибке "Developer Console", но это, возможно, вместо "Bug", очень сильное предложение - и, казалось бы, его было бы легко реализовать.
Чтобы обойти эту проблему, я добавил код в ServerManagedPolicy.processServerResponse(), чтобы просто добавить два месяца времени лицензии и вызвать setValidityTimestamp(). Я надеюсь, что это помогает кому-то еще. Теперь я доволен ---