Cocos2d-x做为一款优秀的跨平台游戏引擎,已经被愈来愈多的开发者使用,而在游戏中使用分享组件可以有效的提供用户粘性,经过分享回流来提升APP安装量,可是目前市面上可以在Cocos2d-x环境下使用的分享插件并很少,开发者们只能本身对原生分享SDK进行封装来实现,前一段时间友盟推出Cocos2d-x分享组件,我测试了一下,感受仍是比较方便的。ios
集成准备:c++
首先我简单介绍一下组件压缩包的组成git
Cocos2dx
实现Cocos2d-x中跨平台分享功能,需拷贝到您项目的Classes文件夹中;
Platforms
原生的Android和iOS社会化组件SDK,须要您将库和资源拷贝到对应平台的项目中;
doc
组件的集成文档;
Umeng_Cocos2dx_Demo_V1.0
Android部分的demo文件,能够安装在手机上看一下简单的分享效果和样式github
Cocos2d-x虽然是一个跨平台的引擎,可是对于Android和IOS平台来讲,具体的集成方式仍是有必定的区别,这里分别介绍Android和IOS平台集成中不一样的地方,而后再集中介绍跨平台通用的部分。sql
Android平台集成步骤:segmentfault
步骤一:微信
下载Cocos2d-x组件(下载地址) 而且将jar包添加到build path 路径下,将res资源文件夹加入到你工程对应资源文件下。将Platforms/Android/controller目录下的com文件夹拷贝到您的Cocos2d-x项目Android平台的src目录下,而且在jni/Android.mk中的LOCAL_SRC_FILES下添加以下配置 (注意格式,不然会编译出错) :app
../../Classes/Cocos2dx/Android/CCUMSocialController.cpp \ ../../Classes/Cocos2dx/ShareButton/UMShareButton.cpp \ ../../Classes/Cocos2dx/Common/CCUMSocialSDK.cpp
步骤二:测试
在Cocos2dxActivity子类的onCreate方法下添加以下代码,用来完成初始化步骤ui
// this为Cocos2dxActivity类型, 参数2为描述符,可随意修改. CCUMSocialController.initSocialSDK(this, "com.umeng.social.share");
步骤三:
在代码中覆写Cocos2dxActivity子类的onActivityResult方法,用来实现回调方法。在onActivityResult添加以下代码 :
// 受权回调 CCUMSocialController.onActivityResult(requestCode, resultCode, data); super.onActivityResult(requestCode, resultCode, data);
iOS平台集成步骤:
步骤一:
解压SDK压缩包,将Platforms/iOS文件夹和Cocos2dx文件夹拖入工程目录,并删除Cocos2dx/Android文件夹,添加后应该是这个效果:
步骤二:
添加系统须要的framework
Security.framework //用于系统加密处理 libiconv.dylib //QQ互联的库文件 SystemConfiguration.framework //QQ互联须要的framework CoreGraphics.framework //QQ互联须要的framework Social.framework //分享组件须要的framework,若是不使用twitter则不须要 libsqlite3.dylib //QQ互联须要的framework libstdc++.dylib //C++的库文件 CoreTelephony.framework //QQ互联须要的framework libz.dylib //QQ互联须要的framework Accounts.framework //系统须要的framework,若是不使用twitter则不须要
步骤三:
实现系统的回调方法,在Xcode工程中的ios文件夹下的AppController.mm文件中加入下面的代码:
#import "UMSocial.h" - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { return [UMSocialSnsService handleOpenURL:url]; }
完成了上述准备工做以后,就能够开始正式的分享步骤了,友盟提供了多种分享样式,有精力的开发者可使用底层接口,能够彻底自由定制分享界面和样式,不过相信大部分开发者们使用第三方插件的初衷都是为了节省精力,因此这里就只介绍使用默认分享界面的方法,有更多需求的开发者们能够本身探索自定义界面接口部分。
步骤一:加入系统须要的头文件
// 受权回调 #include "Cocos2dx/Common/CCUMSocialSDK.h" #include "Cocos2dx/ShareButton/UMShareButton.h" // 使用友盟命令空间 USING_NS_UM_SOCIAL; // ...... 代码省略 // HelloWorld为cocos2d::CCLayer的子类 bool HelloWorld::init() { ////////////////////////////// // 1. super init first if ( !CCLayer::init() ) { return false; } }
步骤二:分享按钮的建立
// 建立分享按钮, 参数1为按钮正常状况下的图片, 参数2为按钮选中时的图片,参数3为友盟appkey, 参数4为分享回调 UMShareButton *shareButton = UMShareButton::create("shareNormal.png","shareSelected.png", "你的友盟appkey", share_selector(shareCallback)) ;
步骤三:设置分享平台及内容
// 显示在友盟分享面板上的平台 vector* platforms = new vector(); platforms->push_back(SINA); platforms->push_back(RENREN) ; platforms->push_back(DOUBAN) ; platforms->push_back(QZONE) ; platforms->push_back(QQ) ; // 设置友盟分享面板上显示的平台 shareButton->setPlatforms(platforms); // 设置文本分享内容 shareButton->setShareContent("umeng social Cocos2d-x sdk.") ; // 设置要分享的图片, 图片支持本地图片和url图片, 可是url图片必须以http://或者https://开头 shareButton->setShareImage("/sdcard/header.jpeg") ; // 设置按钮的位置 shareButton->setPosition(ccp(150, 180)); // 而后开发者须要将该按钮添加到游戏场景中 CCMenu* pMenu = CCMenu::create(shareButton, NULL); pMenu->setPosition(CCPointZero); this->addChild(pMenu, 1); // ********************** 设置平台信息 *************************** // CCUMSocialSDK *sdk = shareButton->getSocialSDK(); // sdk->setQQAppIdAndAppKey("设置QQ的app id", "appkey"); // sdk->setWeiXinAppId("设置微信和朋友圈的app id"); // sdk->setYiXinAppKey("设置易信和易信朋友圈的app id"); // sdk->setLaiwangAppInfo("设置来往和来往动态的app id", // "设置来往和来往动态的app key", "个人应用名"); // sdk->setFacebookAppId("你的facebook appid"); // 设置用户点击一条图文分享时用户跳转到的目标页面, 通常为app主页或者下载页面 // sdk->setTargetUrl("http://www.umeng.com/social"); // 打开或者关闭log // sdk->setLogEnable(true) ; // ********************** END ***************************
集成到这一步就完成了,若是没有异常,应该会出现下面的界面,这说明你已经成功实现了集成工做。
组件下载传送门:http://dev.umeng.com/social/cocos2d-x/sdk-download
GitHub传送门:http://github.com/umeng/umeng-social-for-cocos2d-x