I dont know what I am doing wrong, but my facebook listeners ONlogin, onAPI , onPermission etc are not triggering after login. Even straight logic as below is not working… I tried also in app.js.
Facebook logic is working, but the listeners are not…
sdkbox.PluginFacebook.init();
sdkbox.PluginFacebook.setListener({
onLogin: function () {
console.log("Login listener called");
},
onPermission: function () {
console.log("onPermission listener called");
});
sdkbox.PluginFacebook.login();
//I tried this also
sdkbox.PluginFacebook.requestReadPermissions(['user_friends']);
tkjune
September 2, 2019, 1:58pm
#2
Try setListener() before init()
I tried that, but didn’t work. Only onLogin and onPermission callbacks are not working. Could you help me on that?
But the only problem I have is onLogin or onPermission callbacks are not working still. Other callbacks like onAPI works fine. Could I be missed anything on setting up for login alone?
plz help to check AppController.mm
:
do you have bellow codes:
#import <FBSDKCoreKit/FBSDKCoreKit.h>
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
//
// **************************
// !! IMPORTANT !!
// **************************
//
// call [[FBSDKApplicationDelegate sharedInstance] application:didFinishLaunchingWithOptions
// before app->run()
[[FBSDKApplicationDelegate sharedInstance] application:application
didFinishLaunchingWithOptions:launchOptions];
app->run();
return YES;
}
- (BOOL)application:(UIApplication *)application
openURL:(NSURL *)url
options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
BOOL handled = [[FBSDKApplicationDelegate sharedInstance] application:application
openURL:url
sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey]
annotation:options[UIApplicationOpenURLOptionsAnnotationKey]
];
// Add any custom logic here.
return handled;
}
- (BOOL)application:(UIApplication *)application
openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication
annotation:(id)annotation {
BOOL handled = [[FBSDKApplicationDelegate sharedInstance] application:application
openURL:url
sourceApplication:sourceApplication
annotation:annotation
];
// Add any custom logic here.
return handled;
}
Sorry! Im working on Android, Here’s my AppDelegate.cpp
#include "AppDelegate.h"
#ifdef SDKBOX_ENABLED
#include "SDKBoxJSHelper.h"
#include "PluginFacebookJS.hpp"
#include "PluginFacebookJSHelper.h"
#endif
// #include "scripting/js-bindings/auto/jsb_cocos2dx_3d_auto.hpp"
// #include "scripting/js-bindings/auto/jsb_cocos2dx_3d_extension_auto.hpp"
#include "scripting/js-bindings/auto/jsb_cocos2dx_auto.hpp"
// #include "scripting/js-bindings/auto/jsb_cocos2dx_builder_auto.hpp"
#include "scripting/js-bindings/auto/jsb_cocos2dx_extension_auto.hpp"
#include "scripting/js-bindings/auto/jsb_cocos2dx_network_auto.hpp"
// #include "scripting/js-bindings/auto/jsb_cocos2dx_navmesh_auto.hpp"
// #include "scripting/js-bindings/auto/jsb_cocos2dx_physics3d_auto.hpp"
// #include "scripting/js-bindings/auto/jsb_cocos2dx_spine_auto.hpp"
// #include "scripting/js-bindings/auto/jsb_cocos2dx_studio_auto.hpp"
#include "scripting/js-bindings/auto/jsb_cocos2dx_ui_auto.hpp"
// #include "scripting/js-bindings/manual/3d/jsb_cocos2dx_3d_manual.h"
// #include "scripting/js-bindings/manual/chipmunk/js_bindings_chipmunk_registration.h"
// #include "scripting/js-bindings/manual/cocosbuilder/js_bindings_ccbreader.h"
// #include "scripting/js-bindings/manual/cocostudio/jsb_cocos2dx_studio_manual.h"
#include "scripting/js-bindings/manual/extension/jsb_cocos2dx_extension_manual.h"
// #include "scripting/js-bindings/manual/jsb_opengl_registration.h"
#include "scripting/js-bindings/manual/localstorage/js_bindings_system_registration.h"
// #include "scripting/js-bindings/manual/navmesh/jsb_cocos2dx_navmesh_manual.h"
#include "scripting/js-bindings/manual/network/XMLHTTPRequest.h"
// #include "scripting/js-bindings/manual/network/jsb_socketio.h"
#include "PluginFacebookJS.hpp"
#include "PluginFacebookJSHelper.h"
#include "PluginSdkboxPlayJS.hpp"
#include "PluginSdkboxPlayJSHelper.h"
#include "PluginFirebaseJS.hpp"
#include "PluginFirebaseJSHelper.h"
#include "PluginOneSignalJS.hpp"
#include "PluginOneSignalJSHelper.h"
// #include "scripting/js-bindings/manual/network/jsb_websocket.h"
// #include "scripting/js-bindings/manual/physics3d/jsb_cocos2dx_physics3d_manual.h"
// #include "scripting/js-bindings/manual/spine/jsb_cocos2dx_spine_manual.h"
#include "scripting/js-bindings/manual/ui/jsb_cocos2dx_ui_manual.h"
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID || CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
// #include "scripting/js-bindings/auto/jsb_cocos2dx_experimental_video_auto.hpp"
// #include "scripting/js-bindings/auto/jsb_cocos2dx_experimental_webView_auto.hpp"
// #include "scripting/js-bindings/manual/experimental/jsb_cocos2dx_experimental_video_manual.h"
// #include "scripting/js-bindings/manual/experimental/jsb_cocos2dx_experimental_webView_manual.h"
#endif
#if (CC_TARGET_PLATFORM == CC_PLATFORM_WINRT || CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID || CC_TARGET_PLATFORM == CC_PLATFORM_IOS || CC_TARGET_PLATFORM == CC_PLATFORM_MAC || CC_TARGET_PLATFORM == CC_PLATFORM_WIN32)
#include "scripting/js-bindings/auto/jsb_cocos2dx_audioengine_auto.hpp"
#endif
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
#include "cocos/scripting/js-bindings/manual/platform/android/CCJavascriptJavaBridge.h"
#elif (CC_TARGET_PLATFORM == CC_PLATFORM_IOS || CC_TARGET_PLATFORM == CC_PLATFORM_MAC)
#include "cocos/scripting/js-bindings/manual/platform/ios/JavaScriptObjCBridge.h"
#endif
// #define USE_AUDIO_ENGINE 1
// #define USE_SIMPLE_AUDIO_ENGINE 1
#if USE_AUDIO_ENGINE && USE_SIMPLE_AUDIO_ENGINE
#error "Don't use AudioEngine and SimpleAudioEngine at the same time. Please just select one in your game!"
#endif
#if USE_AUDIO_ENGINE
#include "audio/include/AudioEngine.h"
using namespace cocos2d::experimental;
#elif USE_SIMPLE_AUDIO_ENGINE
#include "audio/include/SimpleAudioEngine.h"
using namespace CocosDenshion;
#endif
#include "SDKBoxJSHelper.h"
#include "sdkbox/Sdkbox.h"
USING_NS_CC;
AppDelegate::AppDelegate()
{
}
AppDelegate::~AppDelegate()
{
#if USE_AUDIO_ENGINE
AudioEngine::end();
#elif USE_SIMPLE_AUDIO_ENGINE
SimpleAudioEngine::end();
#endif
}
void AppDelegate::initGLContextAttrs()
{
GLContextAttrs glContextAttrs = {8, 8, 8, 8, 24, 8, 0};
GLView::setGLContextAttrs(glContextAttrs);
}
bool AppDelegate::applicationDidFinishLaunching()
{
#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
sdkbox::init(SDKBOX_IOS_TOKEN, SDKBOX_IOS_SECRET);
#elif (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
sdkbox::init(SDKBOX_ANDROID_TOKEN, SDKBOX_ANDROID_SECRET, "googleplay");
#endif
// initialize director
auto director = Director::getInstance();
auto glview = director->getOpenGLView();
if(!glview) {
#if(CC_TARGET_PLATFORM == CC_PLATFORM_WP8) || (CC_TARGET_PLATFORM == CC_PLATFORM_WINRT)
glview = cocos2d::GLViewImpl::create("mq-mobile");
#else
glview = cocos2d::GLViewImpl::createWithRect("mq-mobile", Rect(0,0,640,960));
#endif
director->setOpenGLView(glview);
}
// set FPS. the default value is 1.0/60 if you don't call this
director->setAnimationInterval(1.0f / 60);
ScriptingCore* sc = ScriptingCore::getInstance();
sc->addRegisterCallback(register_all_cocos2dx);
sc->addRegisterCallback(register_cocos2dx_js_core);
sc->addRegisterCallback(jsb_register_system);
// extension can be commented out to reduce the package
sc->addRegisterCallback(register_all_cocos2dx_extension);
sc->addRegisterCallback(register_all_cocos2dx_extension_manual);
// chipmunk can be commented out to reduce the package
// sc->addRegisterCallback(jsb_register_chipmunk);
// opengl can be commented out to reduce the package
// sc->addRegisterCallback(JSB_register_opengl);
// builder can be commented out to reduce the package
// sc->addRegisterCallback(register_all_cocos2dx_builder);
// sc->addRegisterCallback(register_CCBuilderReader);
// ui can be commented out to reduce the package, attention studio need ui module
sc->addRegisterCallback(register_all_cocos2dx_ui);
sc->addRegisterCallback(register_all_cocos2dx_ui_manual);
// studio can be commented out to reduce the package,
// sc->addRegisterCallback(register_all_cocos2dx_studio);
// sc->addRegisterCallback(register_all_cocos2dx_studio_manual);
// spine can be commented out to reduce the package
// sc->addRegisterCallback(register_all_cocos2dx_spine);
// sc->addRegisterCallback(register_all_cocos2dx_spine_manual);
// XmlHttpRequest can be commented out to reduce the package
sc->addRegisterCallback(MinXmlHttpRequest::_js_register);
// websocket can be commented out to reduce the package
// sc->addRegisterCallback(register_jsb_websocket);
// socket io can be commented out to reduce the package
// sc->addRegisterCallback(register_jsb_socketio);
// Downloader
sc->addRegisterCallback(register_all_cocos2dx_network);
// 3d can be commented out to reduce the package
// sc->addRegisterCallback(register_all_cocos2dx_3d);
// sc->addRegisterCallback(register_all_cocos2dx_3d_manual);
sc->addRegisterCallback(register_all_PluginFacebookJS);
sc->addRegisterCallback(register_all_PluginFacebookJS_helper);
sc->addRegisterCallback(register_all_PluginSdkboxPlayJS);
sc->addRegisterCallback(register_all_PluginSdkboxPlayJS_helper);
sc->addRegisterCallback(register_all_PluginFirebaseJS);
sc->addRegisterCallback(register_all_PluginFirebaseJS_helper);
sc->addRegisterCallback(register_all_PluginOneSignalJS);
sc->addRegisterCallback(register_all_PluginOneSignalJS_helper);
// 3d extension can be commented out to reduce the package
// sc->addRegisterCallback(register_all_cocos2dx_3d_extension);
#if CC_USE_3D_PHYSICS && CC_ENABLE_BULLET_INTEGRATION
// Physics 3d can be commented out to reduce the package
// sc->addRegisterCallback(register_all_cocos2dx_physics3d);
// sc->addRegisterCallback(register_all_cocos2dx_physics3d_manual);
#endif
#if CC_USE_NAVMESH
// sc->addRegisterCallback(register_all_cocos2dx_navmesh);
// sc->addRegisterCallback(register_all_cocos2dx_navmesh_manual);
#endif
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID || CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
// sc->addRegisterCallback(register_all_cocos2dx_experimental_video);
// sc->addRegisterCallback(register_all_cocos2dx_experimental_video_manual);
// sc->addRegisterCallback(register_all_cocos2dx_experimental_webView);
// sc->addRegisterCallback(register_all_cocos2dx_experimental_webView_manual);
#endif
#if (CC_TARGET_PLATFORM == CC_PLATFORM_WINRT || CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID || CC_TARGET_PLATFORM == CC_PLATFORM_IOS || CC_TARGET_PLATFORM == CC_PLATFORM_MAC || CC_TARGET_PLATFORM == CC_PLATFORM_WIN32)
sc->addRegisterCallback(register_all_cocos2dx_audioengine);
#endif
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
sc->addRegisterCallback(JavascriptJavaBridge::_js_register);
#elif (CC_TARGET_PLATFORM == CC_PLATFORM_IOS || CC_TARGET_PLATFORM == CC_PLATFORM_MAC)
sc->addRegisterCallback(JavaScriptObjCBridge::_js_register);
#endif
#ifdef SDKBOX_ENABLED
sc->addRegisterCallback(register_all_PluginFacebookJS);
sc->addRegisterCallback(register_all_PluginFacebookJS_helper);
#endif
#ifdef SDKBOX_ENABLED
sc->addRegisterCallback(register_all_SDKBoxJS_helper);
#endif
sc->start();
sc->runScript("script/jsb_boot.js");
#if defined(COCOS2D_DEBUG) && (COCOS2D_DEBUG > 0)
sc->enableDebugger();
#endif
ScriptEngineProtocol *engine = ScriptingCore::getInstance();
ScriptEngineManager::getInstance()->setScriptEngine(engine);
ScriptingCore::getInstance()->runScript("main.js");
return true;
}
// This function will be called when the app is inactive. Note, when receiving a phone call it is invoked.
void AppDelegate::applicationDidEnterBackground()
{
auto director = Director::getInstance();
director->stopAnimation();
director->getEventDispatcher()->dispatchCustomEvent("game_on_hide");
#if USE_AUDIO_ENGINE
AudioEngine::pauseAll();
#elif USE_SIMPLE_AUDIO_ENGINE
SimpleAudioEngine::getInstance()->pauseBackgroundMusic();
SimpleAudioEngine::getInstance()->pauseAllEffects();
#endif
}
// this function will be called when the app is active again
void AppDelegate::applicationWillEnterForeground()
{
auto director = Director::getInstance();
director->startAnimation();
director->getEventDispatcher()->dispatchCustomEvent("game_on_show");
#if USE_AUDIO_ENGINE
AudioEngine::resumeAll();
#elif USE_SIMPLE_AUDIO_ENGINE
SimpleAudioEngine::getInstance()->resumeBackgroundMusic();
SimpleAudioEngine::getInstance()->resumeAllEffects();
#endif
}
plz add a debug log with file PluginFacebookJSHelper.cpp
virtual void onLogin(bool isLogin, const std::string& error)
{
cocos2d::log("%s", __FUNCTION__); // this line
std::string name("onLogin");
JS::Value dataVal[2];
#if MOZJS_MAJOR_VERSION < 52
JSB_AUTOCOMPARTMENT_WITH_GLOBAL_OBJCET
#endif
dataVal[0] = JS::BooleanValue(isLogin);
dataVal[1] = SB_STR_TO_JSVAL(s_cx, error);
invokeDelegate(name, dataVal, 2);
}
check the c++ callback invoked.
or add breakpoint to check it.
I am not receiving any calls/logs to this function… Will it be overwriiten and any other function on runtime in sdkbox since this is marked as virtual? But Im getting logs on onAPI virtual function…
Sorry, I was overriding SDKBOX onActivityResult function. That caused the problem. Now fixed it! Thanks for your time!
1 Like
system
closed
September 6, 2019, 8:18am
#14
This topic was automatically closed 24 hours after the last reply. New replies are no longer allowed.