OnIabPurchaseFinished никогда не звонил.
Я пытаюсь настроить биллинг в приложении для своего первого приложения и использую android.test.purchased sku. Покупка прошла, и мне удалось получить SKU в мой инвентарь, но, как гласит название, onIabPurchaseFinished никогда не вызывается.
Я думаю, что это может иметь какое-то отношение к этому журналу: "Не удалось сохранить, какой вид имеет фокус, потому что сфокусированный вид [email protected] не имеет идентификатора". Это всплывает, прямо перед тем, как перейти в 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!");
}
}
};
Ответы
Ответ 1
Попробуйте добавить это к Activity, который вызывает mHelper.launchPurchaseFlow(..)
:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
Log.d(TAG, "onActivityResult(" + requestCode + "," + resultCode + "," + data);
// Pass on the activity result to the helper for handling
if (!mHelper.handleActivityResult(requestCode, resultCode, data)) {
// not handled, so handle it ourselves (here where you'd
// perform any handling of activity results not related to in-app
// billing...
super.onActivityResult(requestCode, resultCode, data);
}
else {
Log.d(TAG, "onActivityResult handled by IABUtil.");
}
}
Ответ 2
Я только что узнал еще одну важную вещь: requestCode, который используется для запуска потока покупки, должен быть >= 0!
я использовал "new Random(). nextInt()" для генерации случайного кода запроса, и иногда он работал, иногда это не так. теперь я узнал в следующей документации, что requestCode не должен быть отрицательным числом:
http://developer.android.com/reference/android/app/Activity.html#startActivityForResult%28android.content.Intent,%20int%29