位置: 编程技术 - 正文

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

编辑:rootadmin
前言

推荐整理分享在Android中使App快速、简单地支持新浪微博、微信、QQ、facebook等十几个主流社交平台的分享功能(使用androidx),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:android中使用_______的方式来管理任务中的活动实例,在android中使用Menu时可能需要重写的方法有 (),android中使用_______的方式来管理任务中的活动实例,在android中使用menu时可能需要重写的方法有,android软件怎么使用,在android中使用menu时可能需要重写的方法有,在android中使用Menu时可能需要重写的方法有 (),在android中使用Menu时可能需要重写的方法有 (),内容如对您有帮助,希望把文章链接给更多的朋友!

在现在的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软件的客户端进行分享。授权也是同样的原理。

集成过程

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

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

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

图 4

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

图 5

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

[html] view plaincopy<manifest xmlns:android=" package="com.example.sharedemo" android:versionCode="1" 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/weixin目录下的Libs目录和res目录下的相关文件拷贝到工程目录下对应的文件夹中,然后通过代码把相关平台添加到SDK中,代码如下 : [java] view plaincopy// 微信平台 UMWXHandler wxHandler = new UMWXHandler(getActivity(), "你的微信app id", "你的微信 app secret") ; wxHandler.addToSocialSDK(); // 微信朋友圈平台, 与微信共用一个app id, app secret UMWXHandler circleHandler = new UMWXHandler(getActivity(), "你的微信app id", "你的微信 app secret") ; circleHandler.setToCircle(true); 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,如下 : [html] view plaincopy<activity android:name=".wxapi.WXEntryActivity" android:theme="@android:style/Theme.Translucent.NoTitleBar" android:configChanges="keyboardHidden|orientation|screenSize" android:exported="true" android:screenOrientation="portrait" /> 这样,集成就完成了。但是想要成功分享还得微信开放平台的审核通过,这需要一些时间,因此为了节省时间,填写包名和签名时尽量保证没有问题。审核通过后,即可分享成功。图这样微信和微信朋友圈就集成成功了。其他的平台集成也是这么一个步骤。1、到对应的开放平台创建应用;2、如果需要填写签名和包名,那么填写这些信息;3、拿到应用的app id, app secret( 有的是 app key )等信息,填写到友盟对应的Handler中,例如UMWXHandler。4、调用handler的addToSocialSDK()方法将平台添加到SDK中;5、在AndroidManifest.xml中注册Activity等,使得分享时可以跳转到目标activity中。自定义平台如果友盟社会化分享组件中没有你想要的平台,那么你可以把自己的平台添加到友盟的SDK中,整个过程也很简单。示例如下 :[java] view plaincopy// 构造平台,参数1为平台名字,参数2为平台图标 CustomPlatform myCustomPlatform = new CustomPlatform("我的平台", R.drawable.ic_launcher); // 平台点击事件处理 myCustomPlatform.mClickListener = new OnSnsPlatformClickListener() { @Override public void onClick(Context arg0, SocializeEntity arg1, SnsPostListener arg2) { // 在这里处理平台的点击事件,一般为调用目标设计平台的分享或者授权方法. } }; // 将平台添加到SDK中 mController.getConfig().addCustomPlatform(myCustomPlatform); 这样就添加成功了。注意,此时如果你需要设置各个平台在分享面板中的顺序,那么你就不要使用[java] view plaincopymController.getConfig().setPlatforms(SHARE_MEDIA.SINA, SHARE_MEDIA.TENCENT, SHARE_MEDIA.DOUBAN, SHARE_MEDIA.RENREN) 这种方式来进行排序了,因为你有了自定义平台,通过上面的设置方法的话自定义平台则无法显示在分享面板上。此时,应该使用如下方法。[java] view plaincopymController.getConfig().setPlatforms(SHARE_MEDIA.SINA.toString(), SHARE_MEDIA.TENCENT.toString(),, SHARE_MEDIA.DOUBAN.toString(),"我的平台" ) ; 效果如下 :图总结看&#;整个过程比较的复杂,其实这也都是各个设计平台为了用户信息的安全所设置的一些安全机制导致的。例如应用的包名和签名、审核机制等,这些机制导致了集成的失败率大大增加。而各个平台的申请、接口不一致也导致了SDK设计上存在一些不合理的问题。总的来说,友盟社会化组件还是不错的,包含了目前的主流平台,即使没有包含你所需要的平台也可以通过自定义平台来实现,这样就保证了扩展性。集成时只要遵循如下顺序则失败率会大大减小:1、到各个平台的开发平台申请应用,获得app id, app key等信息,如果要填写包名和签名时千万要保证正确性,否则会消耗很多时间在上面;2、得到app id, app key等信息到友盟官网看看该平台是否需要绑定这些信息,一般来说通过客户端分享的平台都不需要绑定,例如微信;而通过api进行分享的基本上都需要绑定,例如人人网、新浪等;3、将平台添加到sdk中(通过各种友盟的Handler);4、在AndroidManifest.xml中注册权限或者activity。图

Android主界面连续两次点击物理返回键退出应用功能实现 部分应用中有在主界面中指定时间内连续点击返回键退出应用的功能,实现的思路自然是监听back键,如果连续两次点击间隔时间小于指定时间,则退出

Android 网络通信框架Volley简介(Google IO ) Volley主页

Google Volley使用之基础 开源项目链接VolleyAndroidDeveloper文档Volley主页:

标签: 使用androidx

本文链接地址:https://www.jiuchutong.com/biancheng/387442.html 转载请保留说明!

上一篇:android 计算所在周所在月的前后日期(androidsdk的计算机)

下一篇:Android主界面连续两次点击物理返回键退出应用功能实现(android 界面切换)

  • 设备进项税额转出会计分录
  • 全年没有超过起征点需要汇算吗
  • 个体户转一般纳税人怎么做账
  • 红字发票可以只开金额没有数量吗
  • 无形资产开发阶段
  • 预收账款负数重分类调整
  • 员工福利费可以公账出吗
  • 应交税费销项税在借方还是贷方
  • 周转材料核算科目是什么
  • 怎么不用关税
  • 钉钉报销费用明细怎么写
  • 购买毛巾的费用是多少
  • 增值税专用发票电子版
  • 企业报销发票都需要什么
  • 重新建账要以前的期初余额吗
  • 出租房屋的房产税怎么算
  • 啤酒消费税的计税基础
  • 不得核定征收企业所得税的行业
  • 收到分红款企业所得税怎么填报
  • 小规模纳税人增值税超过30万怎么纳税
  • 预缴所得税多交了汇算时可以抵扣下一年的所得税吗
  • 地方教育附加什么时候交
  • 计提债券本年利息分录
  • 不动产租赁如何缴纳增值税
  • php怎么把数组变成字符串
  • php api
  • 报错代码678什么意思
  • 应交消费税影响当期损益吗
  • 劳保用品会计科目进什么科目
  • css中文字垂直排列
  • 【深度学习】AI一键换天
  • nbtstat命令的用法
  • ci框架的优缺点
  • php的输出语句主要有哪些
  • 结算应付职工薪酬影响当期损益吗
  • 旅行社的增值税怎么算
  • 公司租赁车辆的保险费可以扣除
  • 织梦标签工具
  • System.Data.SQLite 数据库详细介绍
  • 购买项目用设备计入什么科目
  • 政府奖励收入要交所得税吗
  • 小微企业所得税税率
  • 内账中采购另付的税点算成本还是费用
  • 新租赁准则承租人租金用什么科目
  • 加计扣除减免政策
  • 医院购买医疗器械
  • 普通发票记账联丢了怎么解决
  • 工会会员缴纳的医疗互助金列工会什么科目
  • 红字发票销项税额账务处理
  • 员工迟到扣款如何做账
  • 出售投资性房地产的收入计入什么科目
  • 存货换入无形资产账务处理
  • 一般纳税人购入固定资产进项抵扣
  • 固定资产清理如何计算
  • 个人独资企业交什么税
  • 解除非正常户罚款调整操作
  • 听妈妈讲那过去的事情讲课
  • 加工企业三种商业模式
  • mysql5.6 创建用户
  • win10重置登录
  • thinkpadx230i5
  • linux系统中用户可以分为三种
  • mac怎么管理字体大小
  • 如何关闭office开机自启动
  • linux开启samba服务
  • win10双击应用程序没反应
  • win10预览体验三个选项
  • 笔记本自带的win8
  • 奇门遁甲实例详解
  • android camera preview
  • 自制u盘杀手
  • python pdf操作
  • jquery onready
  • 防止shell脚本重复执行
  • jquery控制css样式
  • unity 3d游戏开发
  • unity与android交互详细
  • 小微企业税务优惠政策
  • 个税完税证明在电子税务局哪里打印
  • 昱铭这个公司名字怎么样
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设