2013-01-14 2 views
2

인앱 결제 자습서를 사용하여 구현을 시작합니다. IABHelper의 인앱 결제 문제

  • 내가
  • 매니페스트
  • 내 프로젝트에 AIDL 파일과 폴더의 유틸리티 자바 파일을 모두 얻었다 내에서 적절한 권한을 넣어 개발자 콘솔에서 내 키를 얻었다 샘플 응용 프로그램을 다운로드 내에서 onCreate 이벤트에 다음 코드 ...

    if (GooglePlayVersion) 
    { 
        try 
        { 
        mHelper = new IabHelper(this, base64EncodedPublicKey); 
        mHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() { 
          public void onIabSetupFinished(IabResult result) { 
           if (!result.isSuccess()) 
           // Oh noes, there was a problem. 
           debugLog("Problem setting up In-app Billing: " + result, 0);   
           debugLog("IAB got bound", 0); 
          } 
         }); 
        } 
        catch (Exception e){ 
         debugLog("iab exception " + e.getMessage(), 1); 
        } 
    } 
    

를 구현 내 응용 프로그램이 mHelper.startsetup 라인에 불면. 예외 없음. 단계를 밟을 때 디버깅을 떠나면 절대로 다음 행으로 넘어 가지 않습니다. 내 앱이 시작되지 않습니다. 물론 GooglePlayVersion을 false로 설정하면 모든 것이 정상적으로 실행됩니다.

편집 : 어제 제 게시물을 보니 예외가 실제로 mHelper.startSetup 라인에 의해 던져지고있는 것으로 나타났습니다. Stored Exception Found Binder invocation to an incorrect interface [Ljava.lang.StackTraceElement;@405a8478.

이 예외가있는 다른 사용자가 게시물을 발견했으며 보조 파일이 청구 중 인터페이스와 일치하지 않을 수도 있습니다. 다운로드 한 trivialdrivessample 프로그램에서 패키지 행만을 변경하여 aidl 파일을 얻었습니다.

답변

2

게리, 인앱 결제로 시동 문제가있는 것 같습니다. 그것의 새로운 문제가 아닙니다. 인앱 결제는 업무에 큰 고통입니다. 많은 사람들이 고통을 받고 있습니다. 먼저 독립형으로 작업하는 것이 좋습니다. 그런 다음 작업중인 프로젝트를 코드에 통합하십시오. 나는 this을 추천한다.

다른 링크는 stackoverflow에서 찾을 수 있지만 지금은 검색하지 않습니다.

+0

헤드 업과 링크에 감사드립니다. 먼저 인앱 결제없이 앱을 시장에 출시하고 다음 버전에서 문제를 해결하기로 결정했습니다. –

+0

좋은 전화, API는 정말 나쁘게 작성되었습니다. 따라서 통합을 위해 열심히 노력할 것입니다. 그러나 일단 거기에 그것의 안정. 즉, 4.0에서이 문제가 해결되었다고 들었습니다. 아직도 그것을 연구 할 필요가있다. – Siddharth

+0

Siddharth : 4.0에 관한 소식? 4를 기다리거나 3을 구현하기로 결정할 때가되었습니다. 감사합니다. –

7

aidl 파일의 패키지 이름을 변경하지 마십시오. aidl 파일을 src 디렉토리에 com.android.vending.billing 패키지 아래에 넣으십시오.

3

Google Android 웹 사이트의 지침을 단계별로 따라 갔지만 동일한 문제가있었습니다. 그들은 패키지 이름 변경 위치를 명확하고 정확하게 언급하지 않았습니다. 따라서 그것을 고치기 위해 .adl 파일을 com.myawesome.app.main이라고 말하도록 이동하면 모든 파일의 헤더에서 패키지 선언을 변경하는 것뿐만 아니라 labHelper 내부의이 행에서도 패키지 선언을 변경해야합니다. 된 .java 파일 :

Intent serviceIntent = new Intent("com.myawesome.app.main.InAppBillingService.BIND"); 

기본 원하지 않는 것입니다 :

Intent serviceIntent = new Intent("com.android.vending.billing.InAppBillingService.BIND"); 

나를 위해 그것을 고정 그것뿐만 아니라 당신을 위해 그것을 수정 바랍니다.

+0

IabBroadcastReceiver.ACTION도 변경해야한다고 생각합니다. – Lez77