最近在帮助开发者集成友盟社会化组件的过程中,发现游戏的集成过程遇到一些困难,而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. leetcode_question_70 Climbing Stairs

    You are climbing a stair case. It takes n steps to reach to the top. Each time you can either climb ...

  2. ActionScript3游戏中的图像编程(连载二十四)

    总文件夹:http://blog.csdn.net/iloveas2014/article/details/38304477 2.1.1 投影样式的制作 点击左側列表的"投影"系列 ...

  3. Html.text(转载)

    2.Html.ValidationSummary:用来显示ModelState字典中所有验证错误的无序列表,使用布尔值类型参数(true)来告知辅助方法排除属性级别的错误,只显示ModelState中 ...

  4. 【转】install intel wireless 3165 driver for ubuntu 14.04.3

    [转]install intel wireless 3165 driver for ubuntu 14.04.3 Ubuntu 14.04.3 with 3.19 kernel can’t drive ...

  5. Android学习之DragEvent

    关于DragEvent Google Android API中是这么说的 Represents an event that is sent out by the system at various t ...

  6. HTML5 Web Storage使用实例

    很久没写文章了,忙加懒实在没办法,之前也看过关于Web Storage的文章,当时就觉得各各浏览器的支持跟上来还早着呢,像我们这样做门户网站的一时半会儿也用不上,毕竟用户群体鱼目混杂嘛,最近各各浏览器 ...

  7. 利用UICollectionView实现瀑布流

    利用UICollectionView实现瀑布流通过自定义布局来实现. - 自定义类继承UICollectionViewLayout: 必须重写的方法有: //决定每个item的位置: - (nulla ...

  8. quartz搭建与应用

    1.添加依赖 依赖包括Quartz和logback <dependencies> <dependency> <groupId>org.quartz-schedule ...

  9. codeforces 478B Random Teams

    codeforces   478B  Random Teams  解题报告 题目链接:cm.hust.edu.cn/vjudge/contest/view.action?cid=88890#probl ...

  10. BZOJ 2015: [Usaco2010 Feb]Chocolate Giving( 最短路 )

    裸最短路.. ------------------------------------------------------------------------------------ #include ...