在Android中使App快速、简单地支持新浪微博、微信、QQ、facebook等十几个主流社交平台的分享功能

限时加码!20+主流AI编程工具免费用 购周边加赠Coding Plan Lite,Claude Code、Cursor等即刻畅享,学习进阶更高效! 阅读详情

前言

在现在的APP或者游戏中,分享功能几乎已经成为标配。分享功能不但能够满足用户的需求,也能够为产品带来更多的用户,甚至可以对用户的行为、活跃度、年龄段等情况进行数据统计,使得软件公司可以对产品进行更精准的定位。今天我们就来简单剖析市场上一款优秀的分享SDK以及其集成过程,这款分享SDK就是友盟的社会化分享组件。

友盟社会化分享,帮助移动应用快速具备分享、登录、评论、喜欢等社交功能,提升用户粘度、助力产品推广,并提供实时、全面的社会化数据统计分析服务。


基本概念

根据友盟的集成文档,我们对于友盟社会化分享SDK的操作主要是通过UMSocialService接口来进行操作,一些相关的配置则需要通过SocialzieConfig类来进行配置,这个配置类通过UMSocialService的getConfig()函数来获得。在友盟社会化分享SDK中一个社交平台通过SHARE_MEDIA枚举来标识,比如新浪微博就是SHARE_MEDIA.SINA,微信就是SHARE_MEDIA.WEIXIN。通过这个平台枚举我们就知道了用户是要将内容分享到哪个社交平台,至于为什么是用枚举,我想可能是因为老代码的遗留问题吧。而为了增强平台的可扩展性,友盟又增加了一个UMSsoHandler ,通过这个类来包装社交平台的分享、SSO登录等操作。

因此,我们得到如下几张结构图:

  

图1

从图1中可以看出,SDK的核心控制类中含有一个配置类,该配置类管理SDK中的各个社交平台,因此如果我们要支持分享到某个平台,必须将该平台添加到SDK的配置类中。如果不需要某个平台,就将该平台从SDK配置类中删除即可。


        

图2 图3

图2和图3分别是授权和分享的基本流程。对于授权来说,如果该平台只有webview授权,那么就是用webview进行授权。如果该平台既支持webview授权又支持SSO授权 ( 即通过客户端来授权 ),在用户没有配置SSO授权的情况下是用webview授权,否则是用SSO授权。如果该平台只是SSO授权,那么在客户端的版本支持的情况就会是用SSO授权。而SSO授权都是通过UMSsoHandler这个类来进行操作的。再看图3,分享也是两个分支,即通过API进行分享和通过社交平台客户端分享,例如豆瓣只支持API分享,而微信只支持通过客户端进行分享。通过客户端进行分享也是通过UMSsoHandler这个类。

总结一下:

SDK中含有配置类,配置类管理各个社交平台。当用户要把内容分享到某个社交平台时,SDK内部进行处理,如果是通过API分享,那么直接底层分享。如果是通过客户端分享,那么通过平台找到对应的UMSsoHandler对象,然后再通过UMSsoHandler的相应方法跳转到社交平台或者IM软件的客户端进行分享。授权也是同样的原理。


集成过程

下面,我们就以新浪微博为例来讲解一下集成过程。

首先到新浪微博开放平台中创建一个新的应用,新浪微博开放平台


图 4

然后填写应用的相关信息后会进入到APP详细信息的配置页面。如下图所示:


5

在这里主要配置的是应用的包名和签名。应用的包名在AndroidManifest.xml中查看,package属性的值就是。

  1. <manifest xmlns:android="http://schemas.android.com/apk/res/android"  
  2.     package="com.example.sharedemo"  
  3.     android:versionCode="1"  
  4.     android:versionName="1.0" >  
应用签名即是应用的keystore的MD5值,但也不一定,比如facebook的签名就是keystore的SHA1加上分号,然后再加上应用包名。这里我们只讲解新浪微博的设置,我们可以通过eclipse查看应用的签名。如下图 : 

              

图6

下图中的MD5 fingerprint的值就是我们的APP签名,这个值不是直接填写到新浪开发平台官网的,而是需要将冒号去掉,并且将字母转换为小写。如上图5所示。然后填写完其它的信息,提交审核即可。此时,我们就有了新浪微博的app id和app key了。

通过审核我们可以到友盟官网创建应用并且绑定新浪微博的app id和app key了。如图7.

图 7

此时,我们就可以在工程中集成友盟社会化分享组件SDK了。

首先,下载SDK并且解压缩SDK。SDK目录如下。


图8

其中main文件夹下的为核心sdk的jar和资源,将jar包拷贝到libs目录下,并且添加到编译路径中,然后将res目录下的资源拷贝到你工程中对应的目录下即可。platforms目录下即为各个社交平台的jar包和资源。SDK默认添加了新浪微博、豆瓣、人人网、腾讯微博这几个平台,其他平台需要手动添加jar包、资源 ( 存放在platforms中对应的目录中 ),然后手写代码添加到SDK中。

图9

先看上图9 的左边,确保你所需要的jar包和资源都拷贝进了对应的目录,然后看右边的代码。首先声明一个UMSocialService的对象,这个对象就是整个SDK的控制器,通过这个控制器我们可以进行授权、分享等操作。我们通过相应的方法设置分享内容,然后设置各个平台在分享面板上的显示顺序( 不是必须 ), 最后我们在一个按钮的点击事件中调用了UMSocialService的openShare(context, listener)方法,这个方法就是打开分享面板。用户点击这个面板上的平台时就会将分享内容分享到这个平台( 如果没有授权则需要先授权一次 )。

最后,不要忘了将你获取到的友盟appkey等信息配置AndroidManifest.xml。配置AndroidManifest.xml参考友盟文档,友盟社会化组件文档

运行程序后,会得到如下的效果图。点击某个平台就可以进行授权,然后分享。

效果图



添加其他社交平台

在最新版的SDK中默认只添加了新浪微博、腾讯微博、豆瓣、人人网这四个平台,但是友盟社会化组件还支持微信、微信朋友圈、QQ、QQ空间、facebook、instagram、pinterest、来往、易信等十几个平台,其他的平台请参考友盟社会化组件官网。如果我们要使用除了默认四个平台的其他平台,那么需要我们手动添加到SDK中。下面我们就来演示如果将微信和微信朋友圈添加到SDK中。
首先将SDK解压缩包中Platforms/Android/weixin目录下的Libs目录和res目录下的相关文件拷贝到工程目录下对应的文件夹中,然后通过代码 把相关平台添加到SDK中,代码如下 : 
  1. // 微信平台  
  2. UMWXHandler wxHandler = new UMWXHandler(getActivity(), "你的微信app id""你的微信 app secret") ;  
  3. wxHandler.addToSocialSDK();  
  4.   
  5. // 微信朋友圈平台, 与微信共用一个app id, app secret  
  6. UMWXHandler circleHandler = new UMWXHandler(getActivity(),  "你的微信app id""你的微信 app secret") ;  
  7. circleHandler.addToSocialSDK();  

上面的微信app id和app secret都需要到 微信开放平台申请, 这一步最为麻烦,这里需要创建你的应用,然后填写应用的包名和MD5签名(针对于Android平台),注意,这里的包名和签名一定不能错,而且测试的时候要检查你安装后的apk的签名和你填写时候的签名是否一致,有的情况下我们使用eclipse自带的keystore来测试,打包的时候又成了别的keystore,这样就导致了签名不一致的情况,因此一定要注意签名的正确性问题。如果签名和包名有错误,那么你在使用app id和app secret来进行分享时则无法调出微信或者微信朋友圈的分享界面。出现这种情况你就需要复查你的apk的签名和包名是否与微信开放平台上填写的一致了。如果信息填写无误,那么提交审核即可。审核成功后即可进行分享。

然后把压缩包中的Platforms/Android/weixin目录下的wxapi放到你的根包的目录下,例如我的工程的包名为
com . example . sharedemo,那么wxapi的路径就是 com . example . sharedemo . wxapi。这一点不能错,否则微信分享可能无法成功。如图:


然后在AndroidManafest.xml中注册微信的这个 WXEntryActivity,如下 : 
  1. <activity  
  2.    android:name=".wxapi.WXEntryActivity"  
  3.    android:theme="@android:style/Theme.Translucent.NoTitleBar"  
  4.    android:configChanges="keyboardHidden|orientation|screenSize"  
  5.    android:exported="true"  
  6.    android:screenOrientation="portrait" />  
这样,集成就完成了。但是想要成功分享还得微信开放平台的审核通过,这需要一些时间,因此为了节省时间,填写包名和签名时尽量保证没有问题。审核通过后,即可分享成功。


这样微信和微信朋友圈就集成成功了。



其他的平台集成也是这么一个步骤。
1、到对应的开放平台创建应用;
2、如果需要填写签名和包名,那么填写这些信息;
3、拿到应用的app id, app secret( 有的是 app key )等信息,填写到友盟对应的Handler中,例如UMWXHandler。
4、调用handler的addToSocialSDK()方法将平台添加到SDK中;
5、在AndroidManifest.xml中注册Activity等,使得分享时可以跳转到目标activity中。


自定义平台

如果友盟社会化分享组件中没有你想要的平台,那么你可以把自己的平台添加到友盟的SDK中,整个过程也很简单。示例如下 :
  1. // 构造平台,参数1为平台名字,参数2为平台图标  
  2.     CustomPlatform myCustomPlatform = new CustomPlatform("我的平台",  
  3.             R.drawable.ic_launcher);  
  4.     // 平台点击事件处理  
  5.     myCustomPlatform.mClickListener = new OnSnsPlatformClickListener() {  
  6.   
  7.         @Override  
  8.         public void onClick(Context arg0, SocializeEntity arg1, SnsPostListener arg2) {  
  9.             // 在这里处理平台的点击事件,一般为调用目标设计平台的分享或者授权方法.  
  10.         }  
  11.     };  
  12.   
  13.     // 将平台添加到SDK中  
  14.     mController.getConfig().addCustomPlatform(myCustomPlatform);  
这样就添加成功了。注意,此时如果你需要设置各个平台在分享面板中的顺序,那么你就不要使用
  1. mController.getConfig().setPlatforms(SHARE_MEDIA.SINA, SHARE_MEDIA.TENCENT,  
  2.                            SHARE_MEDIA.DOUBAN, SHARE_MEDIA.RENREN)  
来进行排序了,因为你有了自定义平台,通过上面的设置方法的话自定义平台则无法显示在分享面板上。此时,应该使用如下方法。
  1. mController.getConfig().setPlatforms(SHARE_MEDIA.SINA.toString(), SHARE_MEDIA.TENCENT.toString(),,  
  2.                   SHARE_MEDIA.DOUBAN.toString(),"我的平台" ) ;  
效果如下 :



总结

看似整个过程比较的复杂,其实这也都是各个设计平台为了用户信息的安全所设置的一些安全机制导致的。例如应用的包名和签名、审核机制等,这些机制导致了集成的失败率大大增加。而各个平台的申请、接口不一致也导致了SDK设计上存在一些不合理的问题。总的来说,友盟社会化组件还是不错的。集成时只要遵循如下顺序则失败率会大大减小。

1、到各个平台的开发平台申请应用,获得app id, app key等信息,如果要填写包名和签名时千万要保证正确性,否则会消耗很多时间在上面;
2、得到app id, app key等信息到友盟官网看看该平台是否需要绑定这些信息,一般来说通过客户端分享的平台都不需要绑定,例如微信;而通过api进行分享的基本上都需要绑定,例如人人网、新浪等;
3、将平台添加到sdk中(通过各种友盟的Handler);
4、在AndroidManifest.xml中注册权限或者activity。




来源:http://blog.csdn.net/bboyfeiyu/article/details/40400023


Android中使App快速 简单支持新浪微博 微信 QQ facebook十几个主流社交平台分享功能 阅读详情

相关推荐

shopro 商城,2025年新申请的微信支付提示失败,支付提示 Get Wechat Public Cert Error 问题的修复办法

shopro 商城,最近新申请的微信支付商户 支付提示 Get Wechat Public Cert Error 问题的修复办法

行走的卡路里 1218

第三方集成之社会化分享组件

第三方集成之社会化分享组件:新浪微博、腾讯微博、微信、人人网以及豆瓣。    第三方集成--新浪微博 新浪微博开放平台的体系参考了Twitter,两者非常类似,包括接口、参数的定义以及请求方式等等,如果熟悉Twitter的API,基本可以同样的适用到新浪微博开放平台上,同时此文档技术部分的信息也可以同样适用于Twitter(百度百科)。   新浪微博开放平台:http

Developer_Zhang的专栏 1480

HUMAnN 3.0 (alpha)安装及使用

文章目录简介安装数据库下载运行参考 简介 安装 conda install humann humann_test (~1 minute) 数据库下载 humann_databases --download chocophlan full /path/to/databases --update-config yes humann_databases --download uniref uniref90_diamond /path/to/databases --update-config yes humann_

dys的博客 9457

uniapp分享朋友圈功能 实现社交分享

在这里,我们选择了 weixin 作为分享平台,WXSenceTimeline 作为分享的场景,type 设置为 5 表示网页分享,同时传入了分享的链接、图片、摘要和标题。在这里,我们选择了 weixin 作为分享平台,WXSceneSession 作为分享的场景,type 设置为 5 表示网页分享,同时传入了分享的链接、图片、摘要和标题。首先,我们需要使用uni的社交分享插件uni-share来实现社交分享功能。以上就是在Uniapp中实现社交分享和朋友圈功能的具体代码示例。希望本文对您有所帮助!

csdndddsd的博客 1138

几种社会化分享工具总结

社会化分享工具开发网站时为了推广页面,或者获得更多的回访和流量,会在网站页面添加“分享到”插件,用来发布到某些社交网站。本人用过的几种插件如下:一、jiaThis插件这是一个在线插件,使用很方便,首先选择想要的分享格式,获取js代码,就可以拿来使用。 将JiaThis的JS代码放到页面的最底部(标签结束前)。因为js要在线下载,放在此处是为了不影响页面的打开速度。 官网: jiaThis

mrli113的专栏 1748

社会化分享组建(一)

社会化分享模块在PC端已经有ShareThis、JiaThis这样的公司在做,在移动端ShareSDK,友盟,百度。

做一个不断积累的人 513

[置顶] 在Android中使App快速简单支持新浪微博微信QQfacebook十几个主流社交平台分享功能

前言 在现在的APP或者游戏中,分享功能几乎已经成为标配。分享功能不但能够满足用户的需求,也能够为产品带来更多的用户,甚至可以对用户的行为、活跃度、年龄段等情况进行数据统计,使得软件公司可以对产品进行更精准的定位。今天我们就来简单剖析市场上一款优秀的分享SDK以及其集成过程,这款分享SDK就是友盟的社会化分享组件。 友盟社会化分享,帮助移动应用快速具备分享、登录、评论、喜欢等社交功能

ly985557461的专栏 2338

ShareSDK实现授权登录和分享功能

由于公司项目的需要,要实现在项目中使用第三方授权登录以及分享文字和图片等这样的效果,几经波折,查阅了一番资料,做了一个Demo。实现起来的效果还是不错的,不敢独享,决定写一个总结的教程,供大家互相交流、学习和参考,博主只求能和大家共同进步。希望能多多支持!         这篇文章中,我们使用到了Share SDK,它是为iOS、Android、WP8的APP提供社会化功能的一个组件,目前支

chansong5582的博客 2634

实现第三方授权登录、分享以及获取用户资料

由于公司项目的需要,要实现在项目中使用第三方授权登录以及分享文字和图片等这样的效果,几经波折,查阅了一番资料,做了一个Demo。实现起来的效果还是不错的,不敢独享,决定写一个总结的教程,供大家互相交流、学习和参考,博主只求能和大家共同进步。希望能多多支持!         这篇文章中,我们使用到了Share SDK,它是为iOS、Android、WP8的APP提供社会化功能的一个组件,目前支

heng615975867的专栏 2万+

使用第三方授权登录以及分享文字和图片

实现在项目中使用第三方授权登录 文章摘自:http://www.apkbus.com/android-125666-1-1.html 要实现在项目中使用第三方授权登录以及分享文字和图片等这样的效果,几经波折,查阅了一番资料,做了一个Demo。实现起来的效果还是不错的,不敢独享,决定写一个总结的教程,供大家互相交流、学习和参考,博主只求能和大家共同进步。希望能多多支持!     

aiguoguo000的博客 2381

Android APP分享功能实现

由于公司项目的需要,要实现在项目中使用第三方授权登录以及分享文字和图片等这样的效果,几经波折,查阅了一番资料,做了一个Demo。实现起来的效果还是不错的,不敢独享,决定写一个总结的教程,供大家互相交流、学习和参考,博主只求能和大家共同进步。希望能多多支持!         这篇文章中,我们使用到了Share SDK,它是为iOS、Android、WP8的APP提供社会化功能的一个组件,目前支

qq_29158381的博客 2397

Android应用开发详解】第01期:第三方授权认证(一)实现第三方授权登录、分享以及获取用户资料

Android应用开发详解】第01期:第三方授权认证(一)实现第三方授权登录、分享以及获取用户资料 转载请注明出处:http://blog.csdn.net/yangyu20121224/article/details/9057257         由于公司项目的需要,要实现在项目中使用第三方授权登录以及分享文字和图片等这样的效果

u010507199的专栏 1039

Android APP第三方授权登陆,分享功能合集

这篇文章中,我们使用到了Share SDK,它是为iOS、Android、WP8的APP提供社会化功能的一个组件,目前支持QQ微信新浪微博、腾讯微博、开心网、人人网、豆瓣、网易微博、搜狐微博、facebook、twitter、google+等国内外主流社交平台。 一、实现的效果图                主界面效果图                           

keep_moving12138的博客 1647

一个库搞定各种分享--ShareSDK

ShareSDK是为iOS、Android、WindowsPhone提供社会功能的一个组件,开发者只需10分钟即可集成到自己的APP中,它不仅支持分享QQ好友、微信好友、微信朋友圈、新浪微博、腾迅微博等以及facebook、twitter、google 等国内外主流社交平台,还有强大的社会化分享统计分析管理后台. ps:不熟悉分享的朋友也可以相对比较轻松的实现社会化分享功能。 官网地址 转...

weixin_30580341的博客 226

iOS-ShareSDK的使用(转)

官方下载ShareSDK iOS:http://sharesdk.cn/ ShareSDK社会化分享 包含“社会化分享组件”“社会化登录组件”“第三方评论和赞”三大模块,并有详尽的数据统计后台,助力移动开发者接入第三方平台实现快速成长。 ShareSDK产品介绍 ShareSDK是为iOS、AndroidApp提供社会化功能的一个组件,开发者仅需10分钟即可集成到自己的 ...

Watchmen0320的博客 388

第三方登录

帖子原文URL: http://blog.csdn.net/yangyu20121224/article/details/9057257 由于公司项目的需要,要实现在项目中使用第三方授权登录以及分享文字和图片等这样的效果,几经波折,查阅了一番资料,做了一个Demo。实现起来的效果还是不错的,不敢独享,决定写一个总结的教程,供大家互相交流、学习和参考,博主只求能和大家共同进步。希望能多多

细心程度决定你的成败 1596
上一篇: Android 自定义控件实现刮刮卡效果 真的就只是刮刮卡么
下一篇: java加密解密研究8、MAC算法家族
SpeedyCoder
博客等级 码龄14年 415粉丝 7原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值