2014-06-11 5 views
0

나는이 문서 http://developer.android.com/google/play/billing/billing_integrate.html을 따라 버튼을 누른 후 인앱 구매 절차를 시작하는 테스트 응용 프로그램을 만들었습니다.
알파 버전으로 응용 프로그램을 게시하고 인앱 구매를 테스트 한 결과 작동합니다.InApp 구매시 IabHelper 클래스는 언제 필요합니까?

내 문제는 다른 인앱 구매 사례에 혼란스러워한다는 것입니다. 그들은 모두 "IabHelper"라는 클래스를 사용하여 인앱 구매를 수행합니다. 하지만 인앱 구매를하려면이 클래스가 필요하지 않은 것 같습니다. 클래스는 공식적인 In-App-Billing V3 "TrivalDrive"예에서도 사용되었지만 위에 게시 된 인앱 결제 가이드에는 언급되지 않았습니다.

누군가가 설명해 주시겠습니까? 왜 IabHelper 클래스를 사용해야합니까?

미리 감사드립니다.

private void doPurchase() { 
    try { 
     Bundle buyIntentBundle = mService.getBuyIntent(3, getPackageName(), "premium.upgrade", 
      "inapp", ""); 

     if (buyIntentBundle != null && buyIntentBundle.getInt("RESPONSE_CODE") == 0) { 
      PendingIntent pendingIntent = buyIntentBundle.getParcelable("BUY_INTENT"); 

      startIntentSenderForResult(pendingIntent.getIntentSender(), 1001, new Intent(), 
       Integer.valueOf(0), Integer.valueOf(0), Integer.valueOf(0)); 
     } 
    } catch (SendIntentException e) { 
     e.printStackTrace(); 
    } catch (RemoteException e) { 
     e.printStackTrace(); 
    } 
} 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode == 1001) { 
     String purchaseData = data.getStringExtra("INAPP_PURCHASE_DATA"); 

     if (resultCode == RESULT_OK) { 
      try { 
       JSONObject jo = new JSONObject(purchaseData); 
       String sku = jo.getString("productId"); 
       Log.i(">>>", "You have bought the " 
        + sku 
        + ". Excellent choice, " 
        + "adventurer!"); 
      } catch (JSONException e) { 
       Log.e(">>>", "Failed to parse purchase data."); 
       e.printStackTrace(); 
      } 
     } 
    } 
} 

답변

1

당신이 바로 가이드가 일종의 IABHelper을 고려 혼란 위치 : 여기

내가이 인 - 앱 구매하기 위해 사용하는 코드의 단순화 된 버전입니다. 기본적으로 IAB-Helper는 Google 직원이 작성한 헬퍼 클래스로 엄청난 양의 작업을 수행합니다. 따라서 IAB-Helper를 사용하는 경우 doPurchase() 메소드에서 사용한만큼의 코드를 작성할 필요가 없습니다. 당신은 전에 mHelper 설정해야하고 다양한 청취자를 구현 : JSON으로 주위 하구 더는

if (info.getSku().equals(sku)) 
    doSomething(); 

주 객체,

mHelper.launchPurchaseFlow(activity, sku, RC_REQUEST, mPurchaseFinishedListener); 

동일은 구입 후 물건에 간다 : 당신은 단순히 다음 줄을 쓸 . 물론 IABHelper는 자신의 방식대로 백그라운드에서 똑같은 작업을 수행합니다. 그것은 추상화의 또 다른 계층입니다.

IABHelper에 대한 좋은 소식입니다. 나쁜 소식 : IABHelper에는 심각한 버그가 발생하여 가끔 충돌이 발생합니다. 비록 내가 생각하기조차 할 수없는 bazillion 많은 오류를 잡기 때문에 나는 여전히 그것을 사용하는 것이 좋습니다.

다음 Android Developer Training 사이트에서 IABHelper를 사용하는 방법을 보여주는 안내서를 찾을 수 있습니다. https://developer.android.com/training/in-app-billing/preparing-iab-app.html#GetSample

+1

Dang. Google이 버그없는 앱내 구매 구현을 작성조차하지 못하는 것은 매우 불쌍한 것입니다. – trans

+0

@trans 그래, 플랫폼의 근본적인 부분이기 때문에 다소 이상해. 그럼에도 불구하고 나는 눈에 띄는 문제가 발생하지 않고 [Checkout] (https://github.com/serso/android-checkout)이라는 라이브러리를 꽤 오랫동안 사용 해왔다. IAB와 관련된 모든 것에 대해 적극 추천합니다. – reVerse

관련 문제