안드로이드 앱을 개발하는 궁극적인 목적!


그것은 바로 수익 창출이 아닐까 합니다. 


현재 많은 개발자들은 광고를 통해서 수익을 창출 하지만 


인앱을 통해서 수익을 창출 하려면 구글이 제공하는 인앱 소스를 사용해야만 합니다. 


onPurchaseStateChange() 함수를 통해서 정상 결재 여부를 판단하게 되는데요


이놈이 호출이 되지 않거나 간혈적으로 호출되는 문제가 있습니다. 


주로 여러번 결재 시도를 하다보면 자주 발생하게 됩니다. 


http://stackoverflow.com 에서 해결책을 찾았습니다. 



출처 : http://stackoverflow.com/questions/12844132/onpurchasestatechange-not-getting-called


onstart() 에서 호출된 녀석을 re-start 할때 제대로 remove를 하지 않아서 발생한다는 내용입니다. 

그래서 해결책은 



protected void onStop() {
        super.onStop();

        ResponseHandler.unregister(YOUR_PURCHASE_OBSERVER);
    }


onStop() 안에서 unregister 을 호출해서 문제를 해결하면 됩니다. 



저희 앱에서는 pause 안에 해당 unregister 가 존재했지만 같은 현상이 계속 나타났습니다. 

이놈을 onDestroy로 옮기니 문제가 해결 되었습니다. 










아래 손가락을 꾹 눌러 주세요

  1. 초짜개발자 2013.01.03 17:18 신고

    저도 같은 현상때문에 여기까지 왔네요.
    링크글을 읽어보니 onstop 에서의 내용을
    onDestroy 로 옮기라는 내용아닌가요? ;;
    onstop 에서 옵저버를 null 로 만드니까요.
    null 일 때 queue 로 처리하라는 두번째 해결책은
    제가 개발력이 부족해서 어떻게 해야되는지 모르겠네요 ㅎ

+ Recent posts