概述
友盟社会化组件,可以让移动应用快速具备社会化分享、登录、评论、喜欢等功能,并提供实时、全面的社会化数据统计分析服务。
本指南将会手把手教你使用友盟社会化组件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目录下对应的文件夹中, 如图所示 :
2.1.2 拷贝类文件
将Platforms/Android/controller目录下的com文件夹拷贝到您的Cocos2d-x项目Android平台的src目录下(所有文件的编码为utf-8,如有乱码,请开发者自行进行转码。), 如图所示 :
在jni/Android.mk中的LOCAL_SRC_FILES下添加如下配置 (注意格式,否则会编译出错) :
2.1.3 配置AndroidManifest.xml
2.1.4 添加Android平台的初始化代码
在您的Cocos2dxActivity子类的onCreate方法下添加如下代码:
2.1.5 覆写Cocos2dxActivity子类的onActivityResult方法
在onActivityResult添加如下代码 :
完成以上步骤以后,并且您不需要集成分享到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文件夹.
确认勾选了“Copy items to destination's group folder”选项,并选择你要添加到的Target:
现在应该是这样的效果:
UMSocial_Sdk_x.x.x 文件夹的目录结构
UMSocial_Sdk_Extra_Frameworks 文件夹的目录结构
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
2.2.5 在AppDelegate实现系统回调方法
在Xcode工程中的ios文件夹下的AppController.mm文件,实现下面的系统回调
然后您就可以到在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的子类,当用户点击该按钮时将会打开友盟的分享面板。 集成代码如下 :
方式二 :
开发者可以使用CCUMSocialSDK类来完成分享、授权、删除授权等操作, 实际上UMShareButton就是包装了CCUMSocialSDK以实现相关的功能。具体功能请参考CCUMSocialSDK中的注释。 开发者可以自行定义某个按钮,然后在该按钮的点击事件中通过CCUMSocialSDK来进行相应的操作,示例代码如下 :
方式三 :
开发者也可以自行定义某个按钮,然后在该按钮的点击事件中通过CCUMSocialSDK的directShare函数来进行直接分享到某个平台的操作,该接口为api分享接口,不会弹出分享面板和内容编辑界面,用户授权之后直接分享。示例代码如下 :
特别说明 :
使用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得到支持。
最后,点击对应的按钮则会弹出如下界面 :
分享回调的为如下形式 :
请不要在该回调中更新UI,友盟社会化组件Cocos2d-x SDK不保证在分享回调中更新UI一定会被顺利执行。
微信精确回调使用说明
如果在您的项目中集成了微信或者微信朋友圈,并且您需要准确的分享回调,则需要在AndroidManifest.xml中下注册下面的回调Activity。
·将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。授权接口使用说明如下 :
3.2 授权回调说明
授权回调类型定义在CCUMTypeDef.h中,当授权成功时, 会将授权信息返回给开发者, 开发者可以通过遍历map来获取数据;
当授权失败, 会返回一个字段的数据, key为"msg", 值为错误的信息。如果是删除授权, 也是返回一个字段的数据, key为"msg", 值为"deleteOauth"。开发者可以通过判断返回码和map中的数据来进行相应的处理。
请不要在该回调中更新UI,友盟社会化组件Cocos2d-x SDK不保证在分享回调中更新UI一定会被顺利执行。
授权回调函数示例如下 :
4 添加更多平台 ( 按需集成 )
4.1 Android平台
4.1.1 集成来往和来往动态
添加所需jar和资源,将sdk包中laiwang文件夹下的libs、res目录下的文件拷贝到工程中对应的文件夹中。
通过CCUMSocialSDK类的setLaiwangAppId("")和setLaiwangAppKey()函数来分别设置来往和来往动态的App id、app key,然后在该类的supportPlatfrom函数中找到添加来往或者来往动态平台的代码段,将相应的注释去掉,并且导入(import)所需的类, 示例如下 :
添加来往平台
添加来往动态平台
4.1.2 集成易信和易信朋友圈
添加所需jar和资源,将sdk包中yixin文件夹下的libs、res目录下的文件拷贝到工程中对应的文件夹中。
通过CCUMSocialSDK类的setYiXinAppKey("")函数来设置微信的App key,然后在该类的supportPlatfrom函数中找到添加易信或者易信朋友圈平台的代码段,将相应的注释去掉,并且导入(import)所需的类, 示例如下 :
添加易信平台
添加易信朋友圈平台
易信精确回调使用说明
如果在您的项目中集成了易信或者易信朋友圈,并且您需要准确的分享回调,则需要在AndroidManifest.xml中下注册下面的回调Activity。
·将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平台
4.1.4 集成Instagram
添加所需jar和资源,将sdk包中instagram文件夹下的libs、res目录下的文件拷贝到工程中对应的文件夹中。
在com.umeng.social.CCUMSocialController中的supportPlatfrom函数中找到添加instagram平台的代码段,将相应的注释去掉,并且导入(import)所需的类,示例如下 :
添加Instagram平台
4.2 iOS平台
iOS提供的包默认已经包含了QQ空间、手机QQ、微信、来往、易信、Facebook、Twitter、Instagram这些平台的库文件。 集成各个平台,只需要分别对各个平台进行设置.各平台的设置代码如下
4.2.1 集成来往和来往动态
集成来往平台需要将Xcode的other linker flag设置为-all_load
设置应用信息
若不需要集成来往,可以在Xcode中把UMSocial_Sdk_Extra_Frameworks下把LaiWang文件夹删除。并把UmSocialControllerIOS.h 头文件中把宏CC_ShareToLaiWang设置为0。
4.2.2 集成易信和易信动态
设置应用信息
若不需要集成易信,可以在Xcode中把UMSocial_Sdk_Extra_Frameworks下把YiXin文件夹删除。并把UmSocialControllerIOS.h 头文件中把宏CC_ShareToYiXin设置为0。
4.2.3 集成Facebook
设置应用信息
若不需要集成Facebook,可以在Xcode中把UMSocial_Sdk_Extra_Frameworks下把Facebook文件夹删除。并把UmSocialControllerIOS.h 头文件中把宏CC_ShareToFacebook设置为0。
4.2.4 集成Twitter
设置应用信息
若不需要集成Twitter,可以在Xcode中把UMSocial_Sdk_Extra_Frameworks下把Twitter文件夹删除。并把UmSocialControllerIOS.h 头文件中把宏CC_ShareToTwitter设置为0。
4.2.4 集成Instagram
设置应用信息
若不需要集成Instagram,可以在Xcode中把UMSocial_Sdk_Extra_Frameworks下把Instagram文件夹删除。并把UmSocialControllerIOS.h 头文件中把宏CC_ShareToInstagram设置为0。
5. Android混淆
为了保证引用友盟Social SDK jar文件以及腾讯jar文件被混淆,请在proguard.cfg文件中添加以下代码避免被混淆.。
原地址请点击“阅读原文”,记得转给有需要的小伙伴们噢〜