最近在帮助开发者集成友盟社会化组件的过程中,发现游戏的集成过程遇到一些困难,而Cocos2d-x具有较好的代表性,因此整理了一篇关于Android Cocos2d-x游戏集成友盟社会化组件指南,由于本人水平有限,有什么错误或者有更好的方法希望大家指出,以帮助其他开发者更好的集成。

友盟社会化组件需要依赖于Activity,因此需要在你Cocos2d-x游戏的Activity ( 集成自Cocos2dActivity )中进行调用, 步骤如下 :

 步骤一、在游戏Activity中定义一个静态方法, 如下示例 :

package com.umeng.game ;
…... public class UmengGameActivity extends Cocos2dxActivity {
/**
* Handler, 用于包装友盟的openShare方法,保证openShare方法在UI线程执行
*/
private static Handler mHandler = null;
/**
* 保存当前Activity实例, 静态变量
*/
private static Activity mActivity = null;
/**
* 友盟Social SDK实例,整个SDK的Controller
*/
private static UMSocialService mController = UMServiceFactory.getUMSocialService(
"com.aigcar", RequestType.SOCIAL); /**
* onCreate方法
*/
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mActivity = this;
} /**
* 载入cocos2d-x的c++代码,这里命名为umenggame
*/
static {
System.loadLibrary("umenggame");
} /**
* @Title: openShareBoard
* @Description:
* 调用友盟的openShare方法, 打开分享平台选择面板
* @throws
*/
public static void openShareBoard() {
mHandler = new Handler(Looper.getMainLooper());
mHandler.postDelayed(new Runnable() { @Override
public void run() {
if (mActivity != null) {
/**
* 设置新浪微博、QQ空间、腾讯微博的Handler,进行SSO授权
*
* 注意 : 新浪平台支持SSO则需要把友盟提供的com.sina.sso拷进src里面,
* 需要将友盟提供的libs、res文件拷贝到您的工程对应的目录里面.
*/
mController.getConfig().setSsoHandler(new SinaSsoHandler());
mController.getConfig().setSsoHandler(new QZoneSsoHandler(mActivity));
mController.getConfig().setSsoHandler(new TencentWBSsoHandler()); // 打开友盟的分享平台选择面板
mController.openShare(mActivity, false);
}
}
}, 100);
}
}

工程目录如下所示 :

图 1

步骤二、在jni层中实现调用Android中的UmengGameActivity的openShareBoard方法. 
例如在这里我们命名为openUmengShareJni , 所在头文件为”yourjni.h”, 实现文件为YourJni.cpp.

…...
// 实现代码
void YourJni::openUmengShareJni()
{
JniMethodInfo methodInfo ;
// 获取UmengGameActivity的静态方法openShareBoard
bool isHave = JniHelper.getStaticMethodinfo( methodInfo,
“com/umeng/game/UmengGameActivity”, “openShareBoard”, “()V”) ; if ( isHave )
{
// 实际调用UmengGameActivity中打开umeng分享平台选择面板
methodInfo.env->CallStaticVoidMethod( methodInfo .classID, methodInfo.methodID );
}
} …...

步骤三、 在Cocos2d-x的UmengGameScene(派生自CCLayer的类,需要替换成你对应的类)中声明一个按钮, 使得点击该按钮时打开友盟的分享平台选择面板.( 这里需要include 步骤二中定义jni方法openUmengShareJni 的头文件 )

…...
include “yourjni.h”
…... bool UmengGameScene::init()
{
…...
…... /**
* 创建分享按钮
* 参数1 : 正常状态的图片
* 参数2 : 按下去时的图片
* 参数3 : 回调函数所在的类
* 参数4 : 按钮点击触发的函数
*/
CCMenuItemImage *umengShareBtn = CCMenuItemImage::create( "start_normal.png",
"start_pressed.png", this, menu_selector(AppDelegate::openUmengShare));
// 设置按钮显示位置
umengShareBtn->setPosition( ccp(CCDirector::sharedDirector()->getWinSize().width - 20, 20)); // 将按钮添加到菜单中
CMenu *menu = CCMenu::menuWithItems(umengShareBtn, NULL);
menu->setPosition(CCPointZero); // 将按钮添加到场景中
this->addChild(menu,1); …...
…...
return true ;
} // 按钮的回调函数
void UmengGameScene::openUmengShare()
{
// 调用jni方法
openUmengShareJni();
}

点击上文中声明的分享按钮时出现如图2所示面板,至此,集成成功 。

图 2



友盟社会化组件简介

友盟社会化组件是国内首款专为移动应用提供整合社交功能及社会化统计分析的工具。让应用快速具备社会化分享、登录、评论、喜欢等功能,并提供实时、全面的社会化数据统计分析服务。官方地址: http://www.umeng.com/component_social 。


Android Cocos2d-x游戏集成友盟社会化组件分享功能的更多相关文章

  1. Android 友盟社会化组件-分享实现

    本文章链接地址:http://dev.umeng.com/social/android/share/quick-integration 分享快速集成 1 产品概述 友盟社会化组件,可以让移动应用快速具 ...

  2. Android集成友盟社会化分享功能

    1.  产品概述 友盟社会化组件,可以让移动应用快速具备社会化分享.登录.评论.喜欢等功能,并提供实时.全面的社会化数据统计分析服务. 指南将会手把手教你使用社会化组件SDK,用5分钟为APP增加新浪 ...

  3. android第三方分享之友盟社会化组件

    前言 现在几乎所有的app都带有分享功能,第一为了更好地推广自己的产品,第二作为使用者也能及时的把自己觉得好的文章,话题,app分享到社交平台供大家一起学习和使用.开发中虽然android系统自带分享 ...

  4. Windows Phone 8下 友盟社会化组件SDK的使用。

    由于项目的需要,要将友盟的社会化组件SDK由0.9更新至2.0. 版本变化比较大. 1.很多类以及命名空间已经取消了. 如UmengSocialSDK.Net.Request命名空间, UmengSo ...

  5. React Native中集成友盟社会化分享-----童叟无欺

    1.下载所需的jar,下载地址https://developer.umeng.com/sdk/reactnative?spm=a211g2.211692.0.0.28967d238GW6mC 2.将以 ...

  6. iOS快速集成友盟社会化分享功能(v6.1.1)

    1.  U-Share SDK集成 1.1 下载U-Share SDK 通过iOS社会化组件选择所需的社交平台后进行下载,下载链接http://dev.umeng.com/social/ios/sdk ...

  7. cocos2dx集成友盟社会化分享图片崩溃问题

    本人不懂oc,一步一步按照友盟的文档做,好不容易把分享做好了,结果在 分享图片的时候宕掉了.各种测试,搞了一下午终于搞定了. 如下是友盟文档的做法,错误就在[UIImage imageNamed:@& ...

  8. 友盟SDK实现分享

    友盟SDK文档已经写得很详细了,这边整理笔记,先过一遍流程: 1⃣️注册友盟账号以获取Appkey,下面以分享到微信为例 2⃣️申请第三方账号是因为要进行分享.授权这样的操作肯定是要通过第三方的审核( ...

  9. Android开发之带你轻松集成友盟统计

    友盟统计是什么呢?为什么要集成他呢? 当我们需要获取自己写的软件的装机量和用户使用信息时,这时我们可以集成友盟统计. 首先到友盟统计中注册账号什么的就不废话了,直接看创建项目: 在个人中心中的管理里面 ...

随机推荐

  1. ThreadSafeClientConnManager用来支持多线程的使用http client

    import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.clien ...

  2. zookeeper集群搭建设置

    zookeeper 官网:http://zookeeper.apache.org/ 现在最新版本是 3.4.6 ,但是这个版本我没有运行起来,可能是那配置出现问题了,现在我用的是3.4.5 http: ...

  3. js动态加载控件jsp页面

    例子1:(具体参照drp中的flow_card_add.jsp)<script>    var rowIndex = 0;     function addOneLineOnClick() ...

  4. 《UNIX环境高级编程》笔记--UNIX标准化及实现

    1.UNIX标准化 1.1.ISO C 1989 年后期,C程序设计语言的ANSI(American National Standards Institute) 标准X3. 15 9-1989得到批准 ...

  5. beini破解无线

    软件介绍 当你的笔记本有无线网卡却不能上网的时刻,也许你会很焦急. 又或许你的隔壁就有无线网络可以接的时刻,但你却由于米有密码而不能上网.下面我将简介一款可以令你惊讶的软件,奶瓶 有了奶瓶以上疑问都可 ...

  6. Effective C++ 条款39

    我从本条款中学到了下面内容: 1.private继承不同于另外两种继承,派生类对象不能隐式转换为基类对象. 例如以下代码: class Bird//鸟 { }; class ostrich:priva ...

  7. 自定义cell相关注意事项

    1.拖线成功后,如果又在.h文件或者.m文件里面删除了对应的属性或者方法.一定要在xib文件中,删除关联.方法是:右键点击一下对应的UI控件,把多余的关联叉掉就行了.  不然容易崩溃.

  8. MySql 小问题集合

    - 使用MySql通过SpringFramework来自动建表, 服务器用的是Tomcat, 在server.xml和context.xml中均正确配置了jdbc datasource. 编译通过, ...

  9. JBPM6工作台使用Mysql数据库

    前面已经安装好jbpm了.现在进行数据库的替换.很简单: 1,修改 build.properties 原: # default is H2 H2.version=1.3.168 db.name=h2 ...

  10. CSS3框架!

    http://usablica.github.io/front-end-frameworks/compare.html?v=2.0