cocos2d-x 를 버전마다 사용해본 경험이 있는 사람은 느끼겠지만 매번 버전업마다 무언가 달라진다.


물론 최소한의 기존 코드를 사용할 수 있지만, 더 쓰기편한 코드로 바뀌니 안쓸 수도 없고 또 기존 코드는 deprecated 로 뜨니 영쓰기 찜찜하다.


cocos2d-x 3.x에는  plugin-x 에 iOS에서 inApp 결제를 도와주는 플러그인이 있다.

쉽게 플러그인 이름인 IOSIAP 라고 하겠다. 


이번에 cocos2d-x 3.4로 올라오면서 plugin-x 에 IOSIAP 바뀐 부분이 있는데 eventListener 에서 callback 으로 변경 되었다.


개인적으로 eventListener 보다 callback 을 더 좋아하는 지라 환영하는 바이긴 하다. 


문제는 추가된 callback 에 대한 처리가 너무 안되어 있다. 


callback 을 지정후 product 리퀘스트에 대한 콜백은 오지만, pay 리퀘스트에 대한 콜백이 안온다.


이럴 경우 프로젝트내에 있는 cocos2d/plugin/protocols/platform/ios 폴더에 ProtocolIAP.mm 에 있는 


onPayResult(......) 함수에 아래와 같이 _callback 을 추가해 주면 된다.




void ProtocolIAP::onPayResult(PayResultCode ret, const char* msg)

{

    _paying = false;

    if (_listener)

    {

        _listener->onPayResult(ret, msg, _curInfo);

    }

    else if (_callback)

    {

        std::string stdMsg(msg);

        _callback(ret, stdMsg);

    }

    else

    {

        PluginUtilsIOS::outputLog("Pay result listener and callback of %s is null!", this->getPluginName());

    }

    _curInfo.clear();

    PluginUtilsIOS::outputLog("Pay result of %s is : %d(%s)", this->getPluginName(), (int) ret, msg);

}

저작자 표시 비영리 변경 금지
by 리노아 봄날의 고양이 2015/02/28 06:05
| 1 2 3 4 5 ... 13 |

티스토리 툴바