【干货!】友盟社会化组件Cocos2d-x SDK集成文档

概述

友盟社会化组件,可以让移动应用快速具备社会化分享、登录、评论、喜欢等功能,并提供实时、全面的社会化数据统计分析服务。

本指南将会手把手教你使用友盟社会化组件Cocos2d-x SDK,用5分钟为APP增加新浪微博、微信、QQ空间等国内外十几个主流平台的分享功能。 该Cocos2d-x SDK目前支持ios和android平台。

前提

如果你之前已经在友盟注册了应用,并获取到了Appkey,可以继续使用它。如果你尚未在友盟友盟注册开发者账号,需要先注册,注册之后登录你的账号,点击**添加新应用**,填写完应用基本信息后,将进入"下载SDK并添加代码"页面,此页面即可得到Umeng Appkey。进入到"组件"一栏,选择左边的“社会化分享”,然后选择“设置”--“自定义设置”, 将你在各个平台获取到的app id和app secret填写到其中,并且保存。

1 下载和拷贝Cocos2d-x所需文件

首先您需要下载友盟社会化组件 Cocos2d-x SDK (下载链接),然后将该sdk压缩包解压。

压缩包目录说明:

1. Cocos2dx

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

2. Platforms

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

3. doc

Cocos2d-x SDK集成文档。

SDK中默认的添加的平台为新浪微博、腾讯微博、人人网、豆瓣、短信、邮件,其他的平台需要按添加更多平台 ( 按需集成 )提供的方式手动添加。

2 Cocos2d-x集成友盟分享组件

2.1 Android平台集成

2.1.1 拷贝所需的jar包和资源文件

解压Cocos2d-x SDK压缩包,进入到Platforms/Android文件夹下,将'libs'文件夹中的所有jar文件拷贝到工程中的libs目录中,并且将所有jar文件添加到build path中;将Platforms/Android/res目录下的所有文件夹拷贝到你的项目工程res目录下对应的文件夹中, 如图所示 :

84509f755d213888f887b178406f7ade.jpeg

2.1.2 拷贝类文件

将Platforms/Android/controller目录下的com文件夹拷贝到您的Cocos2d-x项目Android平台的src目录下(所有文件的编码为utf-8,如有乱码,请开发者自行进行转码。), 如图所示 :

4375d8c84cd1704bc8b74e84f92d91d0.png

在jni/Android.mk中的LOCAL_SRC_FILES下添加如下配置 (注意格式,否则会编译出错) :

3a970d4500967077ab27228e902656cc.png

2.1.3 配置AndroidManifest.xml

04512daf2396f8d4d3a8e6253741f3fb.png

70c4774735cc91e5cb4803d2ae8bab78.png

f513dacaa5fcbf97c77f167df0fcc701.png

2.1.4 添加Android平台的初始化代码

在您的Cocos2dxActivity子类的onCreate方法下添加如下代码:

2d6ab949e277948ef1a8fda7fbf96c64.png

2.1.5 覆写Cocos2dxActivity子类的onActivityResult方法

在onActivityResult添加如下代码 :

a8de44aa1ade8d6bf02823242a9a86c9.png

完成以上步骤以后,并且您不需要集成分享到ios平台,您就可以到在Cocos2d-x游戏中添加分享功能章节添加分享代码到cocos2d-x游戏中。

2.2 iOS平台集成

2.2.1 修改 Xcode 编译选项(cocos2d-x 3.x版本)

使用cocos2d-x 3.x(发行版)版本新建的工程,需要修改应用编译架构,修改方法为:将Xcode中Build Settings的Architectures修改为$(ARCHS_STANDARD_32_BIT),Valid Architectures删除arm64。另外你使用的cocos2d-x的SDK,应该使用带有32位版本的库文件。

若要编译64位版本应用,可以到SDK下载页面,选择64位包下载。并替换Platforms目录下的iOS文件夹的内容。

使用cocos2d-x 3.0以下版本新建的工程,默认编译成32位架构,忽略此步骤。

2.2.2 加入iOS SDK

解压SDK压缩包,将Platforms/iOS文件夹和Cocos2dx文件夹拖入工程目录,并删除Cocos2dx/Android文件夹.

79022dcc4711ebcf0fafee735781803e.png

确认勾选了“Copy items to destination's group folder”选项,并选择你要添加到的Target:

48b09cfd3f52124ca62f4957d07d3de5.png

现在应该是这样的效果:

217c997f84dc7cac139cc327ca60cd31.png

UMSocial_Sdk_x.x.x 文件夹的目录结构

dbec156b42289250024ad799b952a860.png

UMSocial_Sdk_Extra_Frameworks 文件夹的目录结构

a043902d8d7783c84ab5da93f81f5074.png

2.2.3 添加下面的系统framework

Security.framework,libiconv.dylib,SystemConfiguration.framework,CoreGraphics.framework,libsqlite3.dylib,CoreTelephony.framework,libstdc++.dylib,libz.dylib,Social.framework,Accounts.framework。

2.2.4 按需设置各个平台的URL Scheme

73bc51e35cd25ffd54e0f8ae0c552d1a.png

2.2.5 在AppDelegate实现系统回调方法

在Xcode工程中的ios文件夹下的AppController.mm文件,实现下面的系统回调

45086a669eb42fea7fa37a91d11bdb60.png

然后您就可以到在Cocos2d-x游戏中添加分享功能章节添加分享代码到cocos2d-x游戏中。

2.3 在Cocos2d-x游戏中添加分享功能

将所需的资源添加到对应的工程以后, 您就可以在cocos2d-x中使用该友盟社会化组件的分享、登录功能了。

首先将sdk压缩包下的根目录下的Cocos2dx文件夹拷贝到您的工程的Classes目录下,Cocos2dx包括:

·Android文件夹,Android平台的调用实现;

·iOS文件夹,iOS平台的调用实现;

·Common文件夹,针对Cocos2d-x的统一接口和类型定义 ;

·ShareButton文件夹,针对Cocos2d-x封装的分享按钮,点击按钮即可打开分享面板;

针对Android平台, 如果开发者需要使用facebook、易信、易信朋友圈、来往、来往动态、twitter、instagram平台则需要到添加更多平台 ( 按需集成 )章节添加相应的平台。

友盟提供了三种方式来方便开发者使用分享功能,示例如下 :

方式一 :

开发者可以通过UMShareButton类来快速的实现分享功能,UMShareButton是CCMenuItemImage的子类,当用户点击该按钮时将会打开友盟的分享面板。 集成代码如下 :

e8aed47aa267c4b6d0edd53eb8677be5.png

3c3f3b30713a023c2975fbe7ed40461e.png

方式二 :

开发者可以使用CCUMSocialSDK类来完成分享、授权、删除授权等操作, 实际上UMShareButton就是包装了CCUMSocialSDK以实现相关的功能。具体功能请参考CCUMSocialSDK中的注释。 开发者可以自行定义某个按钮,然后在该按钮的点击事件中通过CCUMSocialSDK来进行相应的操作,示例代码如下 :

d4753bed9a4c9569f146a540a42acd8f.png

8a26436470f8d48e8f6d3f724ae18c2a.png

方式三 :

开发者也可以自行定义某个按钮,然后在该按钮的点击事件中通过CCUMSocialSDK的directShare函数来进行直接分享到某个平台的操作,该接口为api分享接口,不会弹出分享面板和内容编辑界面,用户授权之后直接分享。示例代码如下 :

8c334e4a5f36470db645d911cbf9ce0c.png

特别说明 :

使用CCUMSocialSDK对象设置各个平台的app id或者app key.CCUMSocialSDK对象可以通过CCUMSocialSDK::create("umeng appkey")函数获取,如果使用UMShareButton可以通过getSocialSDK()函数获取.

1、如果集成了QQ或者QQ空间平台,则必须通过CCUMSocialSDK类的setQQAppIdAndAppKey("appid","appkey")函数来设置QQ或者QQ空间的AppId、AppKey;

2、如果集成了微信或者微信朋友圈平台,则必须通过CCUMSocialSDK类的setWeiXinAppId("")函数来设置微信或者朋友圈的App id;

3、如果集成了易信或者易信朋友圈平台,则必须通过CCUMSocialSDK类的setYiXinAppKey("")函数来设置微信的App key;

4、如果集成了来往或者来往动态平台,则必须通过CCUMSocialSDK类的setLaiwangAppInfo("app id ", "app key", "app Name")来设置来往和来往动态的App id、App key、App Name(应用名). 在设置完平台的app id或者app key之后,需要调用CCUMSocialSDK对象的setPlatforms函数将所需的平台添加到sdk中,这样该平台才会在sdk得到支持。

最后,点击对应的按钮则会弹出如下界面 :

2d95bc4823e063df0ce598ace1c37a02.jpeg

分享回调的为如下形式 :

请不要在该回调中更新UI,友盟社会化组件Cocos2d-x SDK不保证在分享回调中更新UI一定会被顺利执行。

619c8bd8ed8f9f6ddea149a2b8bb60df.png

微信精确回调使用说明

如果在您的项目中集成了微信或者微信朋友圈,并且您需要准确的分享回调,则需要在AndroidManifest.xml中下注册下面的回调Activity。

dadc02ee5396362d243d565ed51c0be5.png

·将SDK包中weixin目录下的wxapi文件夹拷贝到您的工程的包目录下,然后修改WXEntryActivity的完整路径即可。例如social_sdk_example的包名为com.umeng.soexample, 因此将wxapi文件夹拷贝到com.umeng.soexample下即可。最终WXEntryActivity的完整路径为com.umeng.soexample.wxapi.WXEntryActivity。

·其中分享回调接口SnsPostListener中的onComplete方法的第二个参数代表分享的状态码,当值为200时表示分享成功;其余的值则为分享失败。

3 授权接口使用说明

3.1 授权接口说明

CCUMSocialSDK类中还提供了授权相关的接口,支持授权的平台有新浪微博、QQ空间、QQ、人人网、豆瓣、腾讯微博、facebook。授权接口使用说明如下 :

8f07bf1b19fce4debfb5d5f65761add9.png

3.2 授权回调说明

授权回调类型定义在CCUMTypeDef.h中,当授权成功时, 会将授权信息返回给开发者, 开发者可以通过遍历map来获取数据;

当授权失败, 会返回一个字段的数据, key为"msg", 值为错误的信息。如果是删除授权, 也是返回一个字段的数据, key为"msg", 值为"deleteOauth"。开发者可以通过判断返回码和map中的数据来进行相应的处理。

请不要在该回调中更新UI,友盟社会化组件Cocos2d-x SDK不保证在分享回调中更新UI一定会被顺利执行。

授权回调函数示例如下 :

fe0c51ae25f15a7ba7c278d62fdf002e.jpeg

4 添加更多平台 ( 按需集成 )

4.1 Android平台

4.1.1 集成来往和来往动态

添加所需jar和资源,将sdk包中laiwang文件夹下的libs、res目录下的文件拷贝到工程中对应的文件夹中。

通过CCUMSocialSDK类的setLaiwangAppId("")和setLaiwangAppKey()函数来分别设置来往和来往动态的App id、app key,然后在该类的supportPlatfrom函数中找到添加来往或者来往动态平台的代码段,将相应的注释去掉,并且导入(import)所需的类, 示例如下 :

添加来往平台

2953b0510ee3ea2a4e90ec6ec363db08.png

添加来往动态平台

af1b94a045371db849f172a70da8915d.png

4.1.2 集成易信和易信朋友圈

添加所需jar和资源,将sdk包中yixin文件夹下的libs、res目录下的文件拷贝到工程中对应的文件夹中。

通过CCUMSocialSDK类的setYiXinAppKey("")函数来设置微信的App key,然后在该类的supportPlatfrom函数中找到添加易信或者易信朋友圈平台的代码段,将相应的注释去掉,并且导入(import)所需的类, 示例如下 :

添加易信平台

bfedf083f4ef2d0b6342232c230022d1.png

添加易信朋友圈平台

e918bf137f0f5ac867749a693541d8e8.png

易信精确回调使用说明

如果在您的项目中集成了易信或者易信朋友圈,并且您需要准确的分享回调,则需要在AndroidManifest.xml中下注册下面的回调Activity。

15102475ad56b8bced2e8bc9a1dbd559.png

·将SDK包中yixin目录下的yxapi文件夹拷贝到您的工程的包目录下,然后修改YXEntryActivity的完整路径即可。例如social_sdk_example的包名为com.umeng.soexample, 因此将yxapi文件夹拷贝到com.umeng.soexample下即可。最终YXEntryActivity的完整路径为com.umeng.soexample.yxapi.YXEntryActivity。

·其中分享回调接口SnsPostListener中的onComplete方法的第二个参数代表分享的状态码,当值为200时表示分享成功;其余的值则为分享失败。

4.1.3 集成Facebook

添加所需jar和资源,将sdk包中facebook文件夹下的libs、res目录下的文件拷贝到工程中对应的文件夹中。并且在AndroidManifest.xml中添加facebook相关支持,见上文AndroidManifest.xml。

在com.umeng.social.CCUMSocialController中的supportPlatfrom函数中找到添加facebook平台的代码段,将相应的注释去掉,并且导入(import)所需的类, 示例如下 :

添加Facebook平台

af5a368edfbd16e1f8b5a7ef17aa8913.jpeg

4.1.4 集成Instagram

添加所需jar和资源,将sdk包中instagram文件夹下的libs、res目录下的文件拷贝到工程中对应的文件夹中。

在com.umeng.social.CCUMSocialController中的supportPlatfrom函数中找到添加instagram平台的代码段,将相应的注释去掉,并且导入(import)所需的类,示例如下 :

添加Instagram平台

423c5c499dadb8db8b95f988ed3b1a8e.png

4.2 iOS平台

iOS提供的包默认已经包含了QQ空间、手机QQ、微信、来往、易信、Facebook、Twitter、Instagram这些平台的库文件。 集成各个平台,只需要分别对各个平台进行设置.各平台的设置代码如下

4.2.1 集成来往和来往动态

集成来往平台需要将Xcode的other linker flag设置为-all_load

设置应用信息

efb40d3db2df2eddd5ae0d31a60782eb.png

若不需要集成来往,可以在Xcode中把UMSocial_Sdk_Extra_Frameworks下把LaiWang文件夹删除。并把UmSocialControllerIOS.h 头文件中把宏CC_ShareToLaiWang设置为0。

4.2.2 集成易信和易信动态

设置应用信息

3e73bb523a5a9ab899b82cb10f94d323.png

若不需要集成易信,可以在Xcode中把UMSocial_Sdk_Extra_Frameworks下把YiXin文件夹删除。并把UmSocialControllerIOS.h 头文件中把宏CC_ShareToYiXin设置为0。

4.2.3 集成Facebook

设置应用信息

438b8fd4b8839eabc1974bbbede99ddc.png

若不需要集成Facebook,可以在Xcode中把UMSocial_Sdk_Extra_Frameworks下把Facebook文件夹删除。并把UmSocialControllerIOS.h 头文件中把宏CC_ShareToFacebook设置为0。

4.2.4 集成Twitter

设置应用信息

207f30e335d1208460cde1e6162f7c0e.png

若不需要集成Twitter,可以在Xcode中把UMSocial_Sdk_Extra_Frameworks下把Twitter文件夹删除。并把UmSocialControllerIOS.h 头文件中把宏CC_ShareToTwitter设置为0。

4.2.4 集成Instagram

设置应用信息

b9fe28f6ea4c8800936a743a9f669bbd.png

若不需要集成Instagram,可以在Xcode中把UMSocial_Sdk_Extra_Frameworks下把Instagram文件夹删除。并把UmSocialControllerIOS.h 头文件中把宏CC_ShareToInstagram设置为0。

5. Android混淆

为了保证引用友盟Social SDK jar文件以及腾讯jar文件被混淆,请在proguard.cfg文件中添加以下代码避免被混淆.。

b3d0565a61b2902c64a0d72d42ab1356.png

efa528f615bcd1fa1879b18d89e06ec7.png

原地址请点击“阅读原文”,记得转给有需要的小伙伴们噢〜

90910201d9c83e47c330c72af84e6cae.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值