soomla: cocos2dx: Профиль -> "ProviderNotFoundException" (cocos2d3.x)
Я не понимаю, почему профиль всегда возвращает ошибку: "ProviderNotFoundException". Я следовал предварительно скомпилированным инструкциям по интеграции и использую последние версии на github для soomla-cocos2dx-core,cocos2dx-profile и cocos2dx-store.
Вот пример, сделанный с cocos2dx v3.5 (такое же поведение на 3.4):
soomla::CCError *profileError = nullptr;
bool isLoggedIn = soomla::CCSoomlaProfile::getInstance()->isLoggedIn(soomla::TWITTER, &profileError);
if (profileError)
MessageBox(profileError->getInfo(), "Error");
else
CCLOG("logged in TWITTER: %d",isLoggedIn);
Приложение успешно компилируется, но этот код генерирует MessageBox с надписью "ProviderNotFoundException".
В AppDelegate.cpp вот инициализация, которую я делаю из applicationDidFinishLaunching:
#define NEWSTRING(s) __String::create(s)
SOOMLA_STORE_EVENTS = new TSoomlaStoreEvents(); // My defined store events
PRODUCTSFORSALE = TItemsForSale::create(); //class for buy items
STOREITEMS = __Dictionary::create();
soomla::CCSoomla::initialize(SOOMLA_CUSTOM_SECRET);//"customSecret");
STOREITEMS->setObject(NEWSTRING(SOOMLA_ANDROID_PUBLIC_KEY), "androidPublicKey");
STOREITEMS->setObject(Bool::create(true), "SSV");
soomla::CCSoomlaStore::initialize(PRODUCTSFORSALE, STOREITEMS);
//----- SOOMLA PROFILE
__Dictionary *profileParams = __Dictionary::create();
__Dictionary *twitterParams = __Dictionary::create();
__Dictionary *googleParams = __Dictionary::create();
twitterParams->setObject(NEWSTRING(SOOMLA_TWITTER_CONSUMER_KEY), "consumerKey");
twitterParams->setObject(NEWSTRING(SOOMLA_TWITTER_CONSUMER_SECRET), "consumerSecret");
googleParams->setObject( NEWSTRING(SOOMLA_GOOGLE_CLIENTID), "clientId");
profileParams->setObject(twitterParams, soomla::CCUserProfileUtils::providerEnumToString(soomla::TWITTER)->getCString());
profileParams->setObject(googleParams, soomla::CCUserProfileUtils::providerEnumToString(soomla::GOOGLE)->getCString());
soomla::CCSoomlaProfile::initialize(profileParams);
Можете ли вы помочь мне пойти дальше с профилем, пожалуйста?
2 ответа
Это не ответ, но вы можете найти что-то здесь: http://answers.soom.la/t/resolved-twitter-providernotfoundexception/675/6
и здесь: http://answers.soom.la/t/resolved-exception-with-cocos2d-x-profile/1572
Как я понимаю, они используют отражение для загрузки провайдеров ( https://github.com/soomla/ios-profile/blob/9e887f07e0d7f1acb680e02c593a8ce485c93252/SoomlaiOSProfile/ProviderLoader.m#L43). Может быть, те, которые классифицированы просто не были загружены.
Вы можете попробовать использовать флаг компоновщика "-ObjC" или что-то в этом роде.