I’m attempting to use a UIWebView (cocos2d::experimental::ui::WebView) along with a callback for setOnJSCallback & setJavascriptInterfaceScheme.
I am getting a compile error on the “myWebView->setOnJSCallback(CC_CALLBACK_1(MyScene::callbackFromJS,this));” line below:
No viable conversion from ‘__bind<void (MyScene::*)(cocos2d::experimental::ui::WebView *, std::__1::basic_string *), MyScene *, const std::__1::placeholders::__ph<1> &>’ to ‘const cocos2d::experimental::ui::WebView::ccWebViewCallback’ (aka ‘const function<void (cocos2d::experimental::ui::WebView *, const basic_string<char, char_traits, allocator > &)>’)
I’m not understanding why this is occurring or how to fix it because my understanding is that CC_CALLBACK_1 would have a placeholder for the return value std::string coming back from the WebView when this is fired.
Code is listed below.
Can anyone help me determine what may be incorrect?
h file:
#ifndef __MyScene_SCENE_H__
#define __MyScene_SCENE_H__
#include "cocos2d.h"
#include "ui/CocosGUI.h"
class MyScene : public cocos2d::Layer
{
public:
static cocos2d::Scene* createScene();
virtual bool init();
CREATE_FUNC(MyScene);
virtual void callbackFromJS(cocos2d::experimental::ui::WebView* webview, std::string* url);
};
#endif // __MyScene_SCENE_H__
cpp file:
#include "MyScene.h"
#include "ui/CocosGUI.h"
USING_NS_CC;
Scene* MyScene::createScene()
{
auto scene = Scene::create();
auto layer = MyScene::create();
scene->addChild(layer);
return scene;
}
bool MyScene::init()
{
if ( !Layer::init() )
{
return false;
}
auto size = Director::getInstance()->getWinSize();
//auto label = Label::createWithSystemFont("MyScene", "Arial", 40);
//label->setPosition(size/2);
//this->addChild(label);
auto myWebView = cocos2d::experimental::ui::WebView::create();
myWebView->loadURL("https://someurl.com");
myWebView->setJavascriptInterfaceScheme("customtag");
myWebView->setOnJSCallback(CC_CALLBACK_1(MyScene::callbackFromJS,this));
myWebView->setAnchorPoint(Point(0,0));
myWebView->setPosition(Point(10,10));
this->addChild(myWebView);
return true;
}
void MyScene::callbackFromJS(cocos2d::experimental::ui::WebView* webview, std::string* url)
{
log("user clicked a custom url");
}