This is how I implement in Cocos2dxActivity.java:
@Override
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
CocosPlayClient.init(this, false);
onLoadNativeLibraries();
SDKBox.init(this);
sContext = this;
this.mHandler = new Cocos2dxHandler(this);
Cocos2dxHelper.init(this);
this.mGLContextAttrs = getGLContextAttrs();
this.init();
if (mVideoHelper == null) {
mVideoHelper = new Cocos2dxVideoHelper(this, mFrameLayout);
}
if(mWebViewHelper == null){
mWebViewHelper = new Cocos2dxWebViewHelper(mFrameLayout);
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
if(!SDKBox.onActivityResult(requestCode, resultCode, data)) {
super.onActivityResult(requestCode, resultCode, data);
}
for (OnActivityResultListener listener : Cocos2dxHelper.getOnActivityResultListeners()) {
listener.onActivityResult(requestCode, resultCode, data);
}
super.onActivityResult(requestCode, resultCode, data);
}
@Override
protected void onStart() {
super.onStart();
SDKBox.onStart();
}
@Override
protected void onStop() {
super.onStop();
SDKBox.onStop();
}
@Override
protected void onResume() {
super.onResume();
SDKBox.onResume();
Cocos2dxHelper.onResume();
this.mGLSurfaceView.onResume();
}
@Override
protected void onPause() {
super.onPause();
SDKBox.onPause();
Cocos2dxHelper.onPause();
this.mGLSurfaceView.onPause();
}
@Override
public void onBackPressed(){
if(!SDKBox.onBackPressed()){
super.onBackPressed();
}
}
Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
$(call import-add-path,$(LOCAL_PATH))
LOCAL_MODULE := cocos2djs_shared
LOCAL_MODULE_FILENAME := libcocos2djs
LOCAL_SRC_FILES := \
../../Classes/protobuf-lite/google/protobuf/io/coded_stream.cc \
../../Classes/protobuf-lite/google/protobuf/stubs/common.cc \
../../Classes/protobuf-lite/google/protobuf/extension_set.cc \
../../Classes/protobuf-lite/google/protobuf/generated_message_util.cc \
../../Classes/protobuf-lite/google/protobuf/message_lite.cc \
../../Classes/protobuf-lite/google/protobuf/stubs/once.cc \
../../Classes/protobuf-lite/google/protobuf/stubs/atomicops_internals_x86_gcc.cc \
../../Classes/protobuf-lite/google/protobuf/repeated_field.cc \
../../Classes/protobuf-lite/google/protobuf/wire_format_lite.cc \
../../Classes/protobuf-lite/google/protobuf/io/zero_copy_stream.cc \
../../Classes/protobuf-lite/google/protobuf/io/zero_copy_stream_impl_lite.cc \
../../Classes/protobuf-lite/google/protobuf/stubs/stringprintf.cc \
../../Classes/runtime/ConnectWaitLayer.cpp \
../../Classes/runtime/ConsoleCommand.cpp \
../../Classes/runtime/FileServer.cpp \
../../Classes/runtime/Landscape_png.cpp \
../../Classes/runtime/PlayDisable_png.cpp \
../../Classes/runtime/PlayEnable_png.cpp \
../../Classes/runtime/Portrait_png.cpp \
../../Classes/runtime/Protos.pb.cc \
../../Classes/runtime/Runtime.cpp \
../../Classes/runtime/Shine_png.cpp \
../../Classes/VisibleRect.cpp \
../../Classes/PluginIAPJS.cpp \
../../Classes/PluginIAPJSHelper.cpp \
../../Classes/SDKBoxJSHelper.cpp \
../../Classes/AppDelegate.cpp \
../../Classes/ConfigParser.cpp \
hellojavascript/Runtime_android.cpp \
hellojavascript/main.cpp
LOCAL_C_INCLUDES := \
$(LOCAL_PATH)/../../Classes/protobuf-lite \
$(LOCAL_PATH)/../../Classes/runtime \
$(LOCAL_PATH)/../../Classes
LOCAL_STATIC_LIBRARIES := cocos_jsb_static
LOCAL_STATIC_LIBRARIES += PluginIAP
LOCAL_STATIC_LIBRARIES += sdkbox
LOCAL_EXPORT_CFLAGS := -DCOCOS2D_DEBUG=2 -DCOCOS2D_JAVASCRIPT
include $(BUILD_SHARED_LIBRARY)
$(call import-module, ./sdkbox)
$(call import-module, ./pluginiap)
$(call import-module,bindings)
And I init the sdkbox like this:
sdkbox.IAP.init();
sdkbox.IAP.setListener(game.iap);
This is the class I create for listener:
game.IAPListener = cc.Class.extend({
ctor: function(){
ccui.Widget.prototype.ctor.call(this);
this.init();
},
init: function(){
if (ccui.Widget.prototype.init.call(this)){
return true;
}
return false;
},
onSuccess : function (product) {
game.gameController.onProductBoughtSuccess(product.id);
},
onFailure : function (product, msg) {
},
onCanceled : function (product) {
},
onRestored : function (product) {
},
onProductRequestSuccess : function (products) {
cc.log("IAPController.js:29 - SUCCESS");
cc.log(products);
scene.PremiumShop._getInstance().updateList(products);
},
onProductRequestFailure : function (msg) {
//When product refresh request fails.
cc.log("IAPController.js:37 \n" +
"msg = " + msg + " / "
);
}
});
game.IAPListener.instance = null;
game.IAPListener._getInstance = function(){
if(game.IAPListener.instance == null){
game.IAPListener.instance = new game.IAPListener();
}
return game.IAPListener.instance;
};
game.iap = game.IAPListener._getInstance();
Please let me know if I has some error somewhere thanks you so much @nite