Я пытался настроить биллинг в приложении для своего первого приложения и использовал sku android.test.purchased. Покупка прошла, и мне удалось получить артикул в свой инвентарь, но, как говорится в названии, onIabPurchaseFinished никогда не вызывается.
Я думаю, это может иметь какое-то отношение к этому журналу: «Не удалось сохранить, какое представление имеет фокус, потому что сфокусированное представление com.android.internal.policy.impl.PhoneWindow$DecorView@406743d0 не имеет идентификатора». Это всплывает прямо перед переходом в Google Play. Я не совсем понимаю, что это значит ...
Запуск покупки:
mHelper.launchPurchaseFlow(this, sku, 10001, mPurchaseFinishedListener, "");
И Слушатель:
IabHelper.OnIabPurchaseFinishedListener mPurchaseFinishedListener = new IabHelper.OnIabPurchaseFinishedListener() {
@Override
public void onIabPurchaseFinished(IabResult result, Purchase info) {
System.out.println("Purchase Finish heard something");
if (result.isFailure()) {
Log.d(TAG, "Error purchasing: " + result);
return;
} else{
Log.d(TAG,"Success!");
}
}
};
android
in-app-billing
AAAton
источник
источник
Ответы:
Попробуйте добавить это в Activity, которая вызывает
mHelper.launchPurchaseFlow(..)
:источник
Я только что обнаружил еще одну важную вещь: requestCode, который используется для запуска потока покупки, должен быть> = 0!
Я использовал «new Random (). nextInt ()» для генерации случайного кода запроса, и иногда он работал, иногда нет. теперь я обнаружил в следующей документации, что requestCode не должен быть отрицательным числом:
http://developer.android.com/reference/android/app/Activity.html#startActivityForResult%28android.content.Intent,%20int%29
источник
У меня была такая же проблема, и onActivityResult тоже не вызывался.
Вдохновленный ответом @Ghulam, я понял, что действие onActivityResult не вызывает автоматически onActivityResult фрагмента, поэтому мне пришлось сделать это вручную.
источник
Вам нужно вызвать protected void onActivityResult (); В родительском Activity вместо MainActivity (Trivial Drive), откуда вы вызываете MainActivity, то есть Trivial Drive Activity.
вы получите значение кода результата -1, если покупка успешна, в противном случае - 0.
источник
Я столкнулся с той же проблемой, и принятое решение уже было реализовано, но я не мог сказать, что вызывает это. При переходе на новую библиотеку биллинга Google Play 1.0 (выпущенную 19 сентября 2017 г.) проблема была решена!
Надеюсь, следующие ссылки помогут тем, кто хотел бы реализовать новую библиотеку:
Сообщение в блоге Google о выпуске
Видео Google на YouTube
Учебный курс по библиотеке биллинга Google Play
Образец Google Trivial Drive v2
Лаборатория кода Play Billing Library опубликована во время Google I / O 2017
Документы библиотеки биллинга Google Play
Официальный справочник по классам и методам
Примечания к выпуску
источник