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

本文源自: http://cn.cocos2d-x.org/tutorial/show?id=1053



Cocos2d-x作为一款优秀的跨平台游戏引擎,已经被越来越多的开发者使用,而在游戏中使用分享组件能够有效的提供用户粘性,通过分享回流来提高APP安装量,但是目前市面上能够在Cocos2d-x环境下使用的分享插件并不多,开发者们只能自己对原生分享SDK进行封装来实现,前一段时间友盟推出Cocos2d-x分享组件,本人下载测试了之后发现十分便捷,并且友盟也把组件的源码放在GitHub上,有好的想法也可以直接在GitHub上修改(PS.在GitHub上提bug可以获得友盟的小奖品),同样也可以对源码进行学习,对开发者的帮助还是很大的。


集成准备

首先我简单介绍一下组件压缩包的组成:

Cocos2dx -- 实现Cocos2d-x中跨平台分享功能,需拷贝到您项目的Classes文件夹中;

Platforms -- 原生的Android和iOS社会化组件SDK,需要您将库和资源拷贝到对应平台的项目中;

doc -- 组件的集成文档;

Umeng_Cocos2dx_Demo_V1.0 -- Android部分的demo文件,可以安装在手机上看一下简单的分享效果和样式;


Cocos2d-x虽然是一个跨平台的引擎,但是对于Android和IOS平台来说,具体的集成方式还是有一定的区别,这里分别介绍Android和IOS平台集成中不同的地方,然后再集中介绍跨平台通用的部分。


Android平台集成步骤

步骤一

下载Cocos2d-x组件(下载地址) 并且将jar包添加到build path 路径下,将res资源文件夹加入到你工程对应资源文件下。将Platforms/Android/controller目录下的com文件夹拷贝到您的Cocos2d-x项目Android平台的src目录下,并且在jni/Android.mk中的LOCAL_SRC_FILES下添加如下配置 (注意格式,否则会编译出错) :

1
2
3
../../Classes/Cocos2dx/Android/CCUMSocialController.cpp  
../../Classes/Cocos2dx/ShareButton/UMShareButton.cpp 
../../Classes/Cocos2dx/Common/CCUMSocialSDK.cpp

 

步骤二

在Cocos2dxActivity子类的onCreate方法下添加如下代码,用来完成初始化步骤:

1
2
// this为Cocos2dxActivity类型, 参数2为描述符,可随意修改.
CCUMSocialController.initSocialSDK( this "com.umeng.social.share" );


步骤三:

在代码中覆写Cocos2dxActivity子类的onActivityResult方法,用来实现回调方法。在onActivityResult添加如下代码 :

1
2
3
// 授权回调
CCUMSocialController.onActivityResult(requestCode, resultCode, data);
super.onActivityResult(requestCode, resultCode, data);


iOS平台集成步骤

步骤一

解压SDK压缩包,将Platforms/iOS文件夹和Cocos2dx文件夹拖入工程目录,并删除Cocos2dx/Android文件夹,添加后应该是这个效果:

44.jpeg

步骤二

添加系统需要的framework

1
2
3
4
5
6
7
8
9
10
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文件中加入下面的代码:

1
2
3
4
5
#import "UMSocial.h"
- ( BOOL )application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
   return  [UMSocialSnsService handleOpenURL:url];
}


完成了上述准备工作之后,就可以开始正式的分享步骤了,友盟提供了多种分享样式,有精力的开发者可以使用底层接口,可以完全自由定制分享界面和样式,不过相信大部分开发者们使用第三方插件的初衷都是为了节省精力,所以这里就只介绍使用默认分享界面的方法,有更多需求的开发者们可以自己探索自定义界面接口部分。


步骤一:加入系统需要的头文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// 授权回调
#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
// 创建分享按钮, 参数1为按钮正常情况下的图片, 参数2为按钮选中时的图片,参数3为友盟appkey, 参数4为分享回调
    UMShareButton *shareButton = UMShareButton::create( "shareNormal.png" , "shareSelected.png" "你的友盟appkey" , share_selector(shareCallback)) ;

 

步骤三:设置分享平台及内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
// 显示在友盟分享面板上的平台
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 ***************************


集成到这一步就完成了,如果没有异常,应该会出现下面的界面,这说明你已经成功实现了集成工作。

33.jpeg


好了,到这里,整个集成过程就结束了,很多人比较关心集成组件的难度,个人测评感觉,具备一定开发基础的研发同学可以在一天内搞定整个组件的集成,技术强的大牛,分分钟搞定。谢谢大家的阅读,希望能够帮助到大家!

点击下载组件 


推荐阅读:

友盟社会化组件Cocos2d-x SDK集成指南

来源网址:http://blog.umeng.com/?p=3334


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值