1. 인앱빌링에 사용되는 Context는 반듯이 Activity Context를 사용하라.


2. ResponseHandler 에 의해서 Log.d(TAG, "UI is not running"); 이 호출된다면 

    onStart ~ onStop 이 자주 호출되는지 의심하라..


3. Shop Activity를 따로 구성하였고 자주 Shop Activity를 호출한다면 onStart ~ onStop 에 구현된 

    ResponseHandler.unregister(pororoPurchaseObserver); 

    ResponseHandler.register(pororoPurchaseObserver);

    를 onPause ~ onResume 으로 옮겨라..


4. mBillingService.checkBillingSupported(); 을 사용하지 말고 

    mBillingService.checkBillingSupported(Consts.ITEM_TYPE_INAPP); 을 사용하라..


5. checkBillingSupported() 에 의해서 호출되는 onBillingSupported()에서 한번만 restoreTransactions()를 체크하라

    restoreTransactions()는 앱설치 , 실행시 한번만 하라고 권고사항에 써있다.


    @Override

public void onBillingSupported(boolean supported, String type) {

Log.i("#@#", "supported: " + supported + " type : " + type);

if (type == null || type.equals(Consts.ITEM_TYPE_INAPP)) {

if (supported) {

Log.i("#@#", "only once ~!!");

if(isFirst) {

mBillingService.restoreTransactions();

}

}

}

      }


6. 빌링 모듈이 사용되는 Activity Launch Mode 는 SingleTop 사용을 하면 안된다.

    내부에 사용된 PendingIntent 가 Acitvity Affinity에 의해서 영향을 받는다.


7. BillingService unbind()가 앱이 종료후에 실행될 수 있으므로 반듯이 예외처리를 해둬라..

    NullPointException 기타등등..


8. 너무 자주 mBillingService.requestPurchase()를 호출하면 서버로 부터 notify()를 받지 못하는 문제가 발생되므로

     mBillingService.requestPurchase()구현은 Dialog에 의해서 확인 , 취소를 통해 구현하도록 ....

     미스클릭으로 Billing Web Page가 호출되지 않도록 막아야 한다.


9. 너무 자주 서버에 Request를 요청하면 서버가 응답하지 않은 문제가 발생되어.. 결제가 안되거나..

    결제후 최종 confirm notify를 응답받지 못하는 문제가 발생된다.


10. 기타등등 ...