Android Cocos2d-x游戏集成友盟社会化组件分享功能

原创 2013年09月13日 12:03:38
Cocos2d-x简介
Cocos2d-x 是一个支持多平台的 2D开源游戏引擎,使用 C++ 开发,基于OpenGL ES,支持 WOPhone、iOS 4.1 、 Android 2.1 及更高版本、WindowsXP & Windows7、Windows Phone 8。Cocos2d-X发展的重点是围绕Cocos2d跨平台,使用的API与Cocos2d-iPhone完全兼容。 官方地址 : http://www.cocos2d-x.org/ 
正文 

      最近在帮助开发者集成友盟社会化组件SDK的过程中,发现Cocos2d-x游戏在集成过程中不适很顺利,因此整理了一篇关于Android Cocos2d-x游戏集成友盟社会化分享组件的文章,按照本文集成,就可以轻松的在游戏中具有分享到微博(包括新浪微博、微信、QQ空间、人人网等平台)等功能。由于本人水平有限,有什么错误或者有更好的方法希望大家指出,以帮助其他开发者更好的集成。

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


前提 :添加友盟社会化组件 Android SDK的jar文件、res资源以及相应的AndroidManifest.xml配置, 参考友盟社会化组件SDK在线文档  ;

     步骤一、在游戏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.umeng.cocos2dx", RequestType.SOCIAL);

    /**
     * onCreate方法
     */
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mActivity = this;
    }


    /**
     * 载入cocos2d-x的c++代码,我的.so库命名为umenggame。注意,这里要修改成你自己的.so库名称
     */
    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)); 

	//  将按钮添加到菜单中
	CCMenu *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 。



版权声明:本文为Mr.Simple原创文章,未经允许不得转载。

Android Cocos2d-x游戏集成友盟社会化组件分享功能

最近在帮助开发者集成友盟社会化组件的过程中,发现游戏的集成过程遇到一些困难,而Cocos2d-x具有较好的代表性,因此整理了一篇关于Android Cocos2d-x游戏集成友盟社会化组件指南,由于本...

Android Cocos2d-x游戏集成友盟社会化组件分享功能

最近在帮助开发者集成友盟社会化组件的过程中,发现游戏的集成过程遇到一些困难,而Cocos2d-x具有较好的代表性,因此整理了一篇关于Android Cocos2d-x游戏集成友盟社会化组件指南,由于本...

Cocos2d-x游戏在Android平台使用友盟社会化组件进行截图分享的实现

Cocos2d-x游戏Android平台使用友盟社会化组件进行截图分享的实现

8.在Cocos2d-x中集成umeng的社会化分享组件

本文转自http://blog.umeng.com/index.php/2013/09/android-cocos2d-x%E6%B8%B8%E6%88%8F%E5%A6%82%E4%BD%95%E9...

cocos2d-x集成友盟消息推送SDK(Android版)

前言:自己摸索研究友盟消息推送功能,Android和ios平台均测试通过。记录下来以备忘。中间踩了不少坑,尤其是ios关于证书的坑。友盟官方文档Android部分写得比较详尽,ios部分写得比较烂。本...

如何使用友盟 Cocos2d-x 分享组件实现 Android/iOS 分享功能

Cocos2d-x作为一款优秀的跨平台游戏引擎,已经被越来越多的开发者使用,而在游戏中使用分享组件能够有效的提供用户粘性,通过分享回流来提高APP安装量,但是目前市面上能够在Cocos2d-x环境下使...

【IOS和Android】Cocos2d-x 集成Facebook分享功能

(二)集成Facebook分享: 1、

【IOS和Android】Cocos2d-x 集成微信分享功能

第一:集成微信,
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android Cocos2d-x游戏集成友盟社会化组件分享功能
举报原因:
原因补充:

(最多只允许输入30个字)