iOSIAPAgent.mm 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. #include "AgentManager.h"
  2. #include "iOSIAPAgent.h"
  3. namespace cocos2d{namespace plugin{
  4. static FacebookAgent* s_sharedFacebookAgent = nullptr;
  5. FacebookAgent* FacebookAgent::getInstance()
  6. {
  7. if(nullptr == s_sharedFacebookAgent)
  8. {
  9. s_sharedFacebookAgent = new (std::nothrow)FacebookAgent();
  10. }
  11. return s_sharedFacebookAgent;
  12. }
  13. void FacebookAgent::destroyInstance()
  14. {
  15. if(s_sharedFacebookAgent)
  16. {
  17. delete s_sharedFacebookAgent;
  18. s_sharedFacebookAgent = nullptr;
  19. }
  20. }
  21. FacebookAgent::FacebookAgent()
  22. {
  23. agentManager = AgentManager::getInstance();
  24. std::map<std::string, std::string> facebook = {{"PluginUser", "UserFacebook"}, {"PluginShare", "ShareFacebook"}};
  25. agentManager->init(facebook);
  26. }
  27. FacebookAgent::~FacebookAgent()
  28. {
  29. requestCallbacks.clear();
  30. AgentManager::destroyInstance();
  31. }
  32. void FacebookAgent::login(FBCallback cb)
  33. {
  34. agentManager->getUserPlugin()->login(cb);
  35. }
  36. void FacebookAgent::login(std::string& permissions, FBCallback cb)
  37. {
  38. auto userPlugin = agentManager->getUserPlugin();
  39. userPlugin->setCallback(cb);
  40. PluginParam _permissions(permissions.c_str());
  41. userPlugin->callFuncWithParam("loginWithPermission", &_permissions, NULL);
  42. }
  43. void FacebookAgent::logout()
  44. {
  45. agentManager->getUserPlugin()->logout();
  46. }
  47. bool FacebookAgent::isLoggedIn()
  48. {
  49. return agentManager->getUserPlugin()->isLoggedIn();
  50. }
  51. std::string FacebookAgent::getAccessToken()
  52. {
  53. return agentManager->getUserPlugin()->callStringFuncWithParam("getAccessToken", NULL);
  54. }
  55. void FacebookAgent::share(FBInfo& info, FBCallback cb)
  56. {
  57. agentManager->getSharePlugin()->share(info, cb);
  58. }
  59. std::string FacebookAgent::getPermissionList()
  60. {
  61. return agentManager->getUserPlugin()->callStringFuncWithParam("getPermissionList", NULL);
  62. }
  63. void FacebookAgent::dialog(FBInfo& info, FBCallback cb)
  64. {
  65. auto sharePlugin = agentManager->getSharePlugin();
  66. sharePlugin->setCallback(cb);
  67. PluginParam params(info);
  68. sharePlugin->callFuncWithParam("dialog", &params, NULL);
  69. }
  70. void FacebookAgent::api(std::string &path, int method, FBInfo &params, FBCallback cb)
  71. {
  72. requestCallbacks.push_back(cb);
  73. PluginParam _path(path.c_str());
  74. PluginParam _method(method);
  75. PluginParam _params(params);
  76. PluginParam _cbIndex((int)(requestCallbacks.size() - 1));
  77. agentManager->getUserPlugin()->callFuncWithParam("api", &_path, &_method, &_params, &_cbIndex, NULL);
  78. }
  79. void FacebookAgent::appRequest(FBInfo& info, FBCallback cb)
  80. {
  81. auto sharePlugin = agentManager->getSharePlugin();
  82. sharePlugin->setCallback(cb);
  83. PluginParam params(info);
  84. sharePlugin->callFuncWithParam("appRequest", &params, NULL);
  85. }
  86. FacebookAgent::FBCallback FacebookAgent::getRequestCallback(int index)
  87. {
  88. return requestCallbacks[index];
  89. }
  90. void FacebookAgent::activateApp()
  91. {
  92. agentManager->getUserPlugin()->callFuncWithParam("activateApp", NULL);
  93. }
  94. void FacebookAgent::logEvent(std::string& eventName)
  95. {
  96. PluginParam _eventName(eventName.c_str());
  97. agentManager->getUserPlugin()->callFuncWithParam("logEventWithName", &_eventName, NULL);
  98. }
  99. void FacebookAgent::logEvent(std::string& eventName, float valueToSum)
  100. {
  101. PluginParam _eventName(eventName.c_str());
  102. PluginParam _valueToSum(valueToSum);
  103. agentManager->getUserPlugin()->callFuncWithParam("logEvent", &_eventName, &_valueToSum, NULL);
  104. }
  105. void FacebookAgent::logEvent(std::string& eventName, FBInfo& parameters)
  106. {
  107. PluginParam _eventName(eventName.c_str());
  108. PluginParam _params(parameters);
  109. agentManager->getUserPlugin()->callFuncWithParam("logEvent", &_eventName, &_params, NULL);
  110. }
  111. void FacebookAgent::logEvent(std::string& eventName, float valueToSum, FBInfo& parameters)
  112. {
  113. PluginParam _eventName(eventName.c_str());
  114. PluginParam _valueToSum(valueToSum);
  115. PluginParam _params(parameters);
  116. agentManager->getUserPlugin()->callFuncWithParam("logEvent", &_eventName, &_valueToSum, &_params, NULL);
  117. }
  118. std::string FacebookAgent::getSDKVersion()
  119. {
  120. return std::string("Facebook SDK beta2");
  121. }
  122. }}