Я создал версию для Android, которая теперь включает Gluonhq InAppBillingService для покупки моего приложения в Google Play Store.
Эта версия загружается в консоль разработчика Google Play.
Один тестер (я, с другой учетной записью gmail) может загрузить эту версию apk из Google Play Store и установить ее.
Я запускаю ее на своем телефоне с adb для отлова некоторые следы отладки, особенно в отношении вызовов биллингового API.
Результаты тестирования: PlayerService присутствует, но никогда не готов. Что это значит?
заранее спасибо
Подробно:
- вхожу в PlayerService.getInstance(). ПолучитьСервис(). IfPresent(service -> {..
- Но после этого сервис никогда не будет готов (напрямую через service.isReady() или не прослушивая его изменение)
Вот мой код (traceP — это только метод отладки трассировки):
PlayerService.getInstance().getService().ifPresent(service -> {
traceP("interrogerServeurSurLesLicencesHG - before 1st test service ready");
if (service.isReady()) {
updateProductDetailsGPS(service); // affecte bLicence_STD_HG_achetee
} else {
traceP("interrogerServeurSurLesLicencesHG - before 2nd test service ready");
service.readyProperty().addListener(new ChangeListener<Boolean>() {
// se synchroniser avec le seveur de license GPS
@Override
public void changed(ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) {
traceP("interrogerServeurSurLesLicencesHG - before test newValue");
if (newValue) {
traceP("interrogerServeurSurLesLicencesHG - when new value");
updateProductDetailsGPS(service); // affecte bLicence_STD_HG_achetee
service.readyProperty().removeListener(this);
}
}
});
}
});
traceP("Fin interrogerServeurSurListeDesProduitsHG - bInterrogationFaiteAvecSucces " + bInterrogationFaiteAvecSucces);
и вызываемый метод updateProductDetailsGPS:
static void updateProductDetailsGPS(InAppBillingService service) {
traceP("Deb updateProductDetailsGPS");
BillingGPS.setUpdateStateGPS(StateGPSType.NONE);
Worker<List<Product>> productDetails = service.fetchProductDetails();
productDetails.stateProperty().addListener((obs, ov, nv) -> {
switch (nv) {
case CANCELLED:.....
Я ловлю следы отладки в своем телефоне с помощью adb. Результат:
I/System.out(19417): heure : 157 ms --- interrogerServeurSurLesLicencesHG - billingType: GPS
I/System.out(19417): heure : 162 ms --- interrogerServeurSurLesLicencesHG - before 1st test service ready
I/System.out(19417): heure : 162 ms --- interrogerServeurSurLesLicencesHG - before 2nd test service ready
I/System.out(19417): heure : 163 ms --- Fin interrogerServeurSurListeDesProduitsHG - bInterrogationFaiteAvecSucces false
Нет никаких следов:
- "interrogerServeurSurLesLicencesHG - перед проверкой нового значения"
- и "Deb updateProductDetailsGPS"
Таким образом, метод updateProductDetailsGPS, который получает сведения о продукте с сервера Google, никогда не вызывается.
Примечание.
Похоже, мой открытый ключ правильно определен в BASE_64_ANDROID_PUBLIC_KEY.
Как вы обычно можете проверить такую проблему интеграции с сервером Google Play?
Например, как проект InAppBillingSample завершил интеграцию своего биллингового API (который я сейчас использую) и сервера Google Play?