2014-11-19 2 views
1

У меня есть несколько приложений, которые продают подписки, но теперь я продаю расходные материалы, и это не совсем правильно работает. Я продаю расходные материалы, и заказ действительно проходит, но мой код, чтобы немедленно потреблять и предоставлять, не работает. , ,проблема с выставлением счетов в приложении с покупкой расходных материалов

public void btnTranslations_Clicked(View v) 
{ 
    String payload = ""; 
    DebugLog.debugLog("Launching translations purchase flow", false); 
    mHelper.launchPurchaseFlow(this, SKU_TRANSLATIONS, RC_REQUEST, 
      mPurchaseFinishedListener, payload); 
} 
    // Callback for when a purchase is finished 
    IabHelper.OnIabPurchaseFinishedListener mPurchaseFinishedListener = new IabHelper.OnIabPurchaseFinishedListener() { 
     public void onIabPurchaseFinished(IabResult result, Purchase purchase) { 
      DebugLog.debugLog("In Purchase finished: " + result + ", purchase: " + purchase, false); 

в приведенном выше примере поток покупки успешно запущен, но контроль никогда не возвращается к PurchaseFinishedListener CallBack. Я знаю, потому что этот отладочный оператор никогда не выполняется.

К счастью, когда приложение запускается снова, следующий код

mHelper.queryInventoryAsync(mGotInventoryListener); 

работает просто отлично, потому что работы обратного вызова и расходные материалы пользователя приобрел на последнее исполнении получают потребляются и предоставлены.

Итак, вопрос в том, почему IabHelper.OnIabPLurchaseFinishedListener никогда не выполняется? Спасибо, Дин

ответ

2

Хорошо, здесь я снова отвечаю на свой вопрос. Я не знаю, становятся ли мои вопросы сложнее или этот форум становится менее полезным, чем раньше.

Проблема заключалась в ошибках и упущениях в документации Google, а именно: this.

В документации полностью не говорится о том, что для немедленного потребления и обеспечения работы требуется следующий метод. , ,

@Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     Log.d(TAG, "onActivityResult(" + requestCode + "," + resultCode + "," + data); 
     if (mHelper == null) return; 

     // Pass on the activity result to the helper for handling 
     if (!mHelper.handleActivityResult(requestCode, resultCode, data)) { 
      // not handled, so handle it ourselves (here's 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."); 
     } 
    } 

Вызов mHelper.handleActivityResult каким-то образом вызывает mPurchaseFinishedListener обратного вызова для выполнения. В примере кода TrivialDrive есть этот метод - они просто не соответствовали его инструкциям. Существуют и другие ошибки, например, как правильно включить файл helpl.

Повреждение в том, что эти неряшливые документы превращают задачу в несколько часов в задание на несколько дней, потому что каждый из их упущений/ошибок требует исследования.

Возможно, следующая жертва этих документов отправится через эту почту и сэкономит некоторое время. Дин

Смежные вопросы