FacebookAgent.mm 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200
  1. #include "AgentManager.h"
  2. #include "FacebookAgent.h"
  3. namespace cocos2d{namespace plugin{
  4. static FacebookAgent* s_sharedFacebookAgent = nullptr;
  5. static const char* s_cocos2dxVersion = "3.18.0/cocos2d-x-3.9";
  6. static const char* s_cocos2dxLuaVersion = "3.18.0/cocos2d-x-lua-3.9";
  7. static const char* s_cocos2dxJsVersion = "3.18.0/cocos2d-js-3.9";
  8. FacebookAgent* FacebookAgent::getInstance()
  9. {
  10. if(nullptr == s_sharedFacebookAgent)
  11. {
  12. s_sharedFacebookAgent = new (std::nothrow)FacebookAgent();
  13. if (nullptr != s_sharedFacebookAgent)
  14. {
  15. s_sharedFacebookAgent->setSDKVersion(s_cocos2dxVersion);
  16. }
  17. }
  18. return s_sharedFacebookAgent;
  19. }
  20. FacebookAgent* FacebookAgent::getInstanceLua()
  21. {
  22. if(nullptr == s_sharedFacebookAgent)
  23. {
  24. s_sharedFacebookAgent = new (std::nothrow)FacebookAgent();
  25. if (nullptr != s_sharedFacebookAgent)
  26. {
  27. s_sharedFacebookAgent->setSDKVersion(s_cocos2dxLuaVersion);
  28. }
  29. }
  30. return s_sharedFacebookAgent;
  31. }
  32. FacebookAgent* FacebookAgent::getInstanceJs()
  33. {
  34. if(nullptr == s_sharedFacebookAgent)
  35. {
  36. s_sharedFacebookAgent = new (std::nothrow)FacebookAgent();
  37. if (nullptr != s_sharedFacebookAgent)
  38. {
  39. s_sharedFacebookAgent->setSDKVersion(s_cocos2dxJsVersion);
  40. }
  41. }
  42. return s_sharedFacebookAgent;
  43. }
  44. void FacebookAgent::destroyInstance()
  45. {
  46. if(s_sharedFacebookAgent)
  47. {
  48. delete s_sharedFacebookAgent;
  49. s_sharedFacebookAgent = nullptr;
  50. }
  51. }
  52. FacebookAgent::FacebookAgent()
  53. {
  54. agentManager = AgentManager::getInstance();
  55. std::map<std::string, std::string> facebook = {{"PluginUser", "UserFacebook"}, {"PluginShare", "ShareFacebook"}};
  56. agentManager->init(facebook);
  57. }
  58. FacebookAgent::~FacebookAgent()
  59. {
  60. requestCallbacks.clear();
  61. AgentManager::destroyInstance();
  62. }
  63. void FacebookAgent::login(FBCallback cb)
  64. {
  65. agentManager->getUserPlugin()->login(cb);
  66. }
  67. void FacebookAgent::login(std::string& permissions, FBCallback cb)
  68. {
  69. auto userPlugin = agentManager->getUserPlugin();
  70. userPlugin->setCallback(cb);
  71. PluginParam _permissions(permissions.c_str());
  72. userPlugin->callFuncWithParam("loginWithPermission", &_permissions, NULL);
  73. }
  74. void FacebookAgent::logout()
  75. {
  76. agentManager->getUserPlugin()->logout();
  77. }
  78. bool FacebookAgent::isLoggedIn()
  79. {
  80. return agentManager->getUserPlugin()->isLoggedIn();
  81. }
  82. std::string FacebookAgent::getAccessToken()
  83. {
  84. return agentManager->getUserPlugin()->callStringFuncWithParam("getAccessToken", NULL);
  85. }
  86. void FacebookAgent::share(FBInfo& info, FBCallback cb)
  87. {
  88. agentManager->getSharePlugin()->share(info, cb);
  89. }
  90. std::string FacebookAgent::getPermissionList()
  91. {
  92. return agentManager->getUserPlugin()->callStringFuncWithParam("getPermissionList", NULL);
  93. }
  94. std::string FacebookAgent::getUserID()
  95. {
  96. return agentManager->getUserPlugin()->callStringFuncWithParam("getUserID", NULL);
  97. }
  98. void FacebookAgent::dialog(FBInfo& info, FBCallback cb)
  99. {
  100. auto sharePlugin = agentManager->getSharePlugin();
  101. sharePlugin->setCallback(cb);
  102. PluginParam params(info);
  103. sharePlugin->callFuncWithParam("dialog", &params, NULL);
  104. }
  105. void FacebookAgent::webDialog(FBInfo &info, FBCallback cb){
  106. auto sharePlugin = agentManager->getSharePlugin();
  107. sharePlugin->setCallback(cb);
  108. PluginParam params(info);
  109. sharePlugin->callFuncWithParam("webDialog", &params, NULL);
  110. }
  111. bool FacebookAgent::canPresentDialogWithParams(FBInfo& info){
  112. PluginParam params(info);
  113. bool status = agentManager->getSharePlugin()->callBoolFuncWithParam("canPresentDialogWithParams", &params,NULL);
  114. return status;
  115. }
  116. void FacebookAgent::api(std::string &path, int method, FBInfo &params, FBCallback cb)
  117. {
  118. requestCallbacks.push_back(cb);
  119. PluginParam _path(path.c_str());
  120. PluginParam _method(method);
  121. PluginParam _params(params);
  122. PluginParam _cbIndex((int)(requestCallbacks.size() - 1));
  123. agentManager->getUserPlugin()->callFuncWithParam("api", &_path, &_method, &_params, &_cbIndex, NULL);
  124. }
  125. void FacebookAgent::appRequest(FBInfo& info, FBCallback cb)
  126. {
  127. auto sharePlugin = agentManager->getSharePlugin();
  128. sharePlugin->setCallback(cb);
  129. PluginParam params(info);
  130. sharePlugin->callFuncWithParam("appRequest", &params, NULL);
  131. }
  132. FacebookAgent::FBCallback FacebookAgent::getRequestCallback(int index)
  133. {
  134. return requestCallbacks[index];
  135. }
  136. void FacebookAgent::activateApp()
  137. {
  138. agentManager->getUserPlugin()->callFuncWithParam("activateApp", NULL);
  139. }
  140. void FacebookAgent::logEvent(std::string& eventName)
  141. {
  142. PluginParam _eventName(eventName.c_str());
  143. agentManager->getUserPlugin()->callFuncWithParam("logEventWithName", &_eventName, NULL);
  144. }
  145. void FacebookAgent::logEvent(std::string& eventName, float valueToSum)
  146. {
  147. PluginParam _eventName(eventName.c_str());
  148. PluginParam _valueToSum(valueToSum);
  149. agentManager->getUserPlugin()->callFuncWithParam("logEvent", &_eventName, &_valueToSum, NULL);
  150. }
  151. void FacebookAgent::logEvent(std::string& eventName, FBInfo& parameters)
  152. {
  153. PluginParam _eventName(eventName.c_str());
  154. PluginParam _params(parameters);
  155. agentManager->getUserPlugin()->callFuncWithParam("logEvent", &_eventName, &_params, NULL);
  156. }
  157. void FacebookAgent::logPurchase(float mount, std::string currency){
  158. PluginParam _mount(mount);
  159. PluginParam _currency(currency.c_str());
  160. agentManager->getUserPlugin()->callFuncWithParam("logPurchase", &_mount, &_currency, NULL);
  161. }
  162. void FacebookAgent::logPurchase(float mount, std::string currency,FBInfo &params){
  163. PluginParam _mount(mount);
  164. PluginParam _currency(currency.c_str());
  165. PluginParam _params(params);
  166. agentManager->getUserPlugin()->callFuncWithParam("logPurchase", &_mount, &_currency, &_params, NULL);
  167. }
  168. void FacebookAgent::logEvent(std::string& eventName, float valueToSum, FBInfo& parameters)
  169. {
  170. PluginParam _eventName(eventName.c_str());
  171. PluginParam _valueToSum(valueToSum);
  172. PluginParam _params(parameters);
  173. agentManager->getUserPlugin()->callFuncWithParam("logEvent", &_eventName, &_valueToSum, &_params, NULL);
  174. }
  175. std::string FacebookAgent::getSDKVersion()
  176. {
  177. return agentManager->getUserPlugin()->callStringFuncWithParam("getSDKVersion", NULL);
  178. }
  179. void FacebookAgent::setSDKVersion(std::string version)
  180. {
  181. PluginParam _version(version.c_str());
  182. agentManager->getUserPlugin()->callFuncWithParam("setSDKVersion", &_version, NULL);
  183. }
  184. }}