Android好奇宝宝_12_社会化分享那些事

近期刚过完年,一回公司又赶着为项目添加分享功能,搞得焦头烂额,现在在这里记录一下过程中发生的问题,方便下次查阅。

首先,分享功能有两个方式实现:

1:到各个平台注册开发者、下载sdk、阅读文档、查看官方Demo、集成sdk、写代码测试、修复bug、优化。

好吧,看到这么一长串步骤,而且是每个想要集成的平台都得跑一遍流程,想死的心都有了,方案1直接放弃。

2:使用第三方已集成好各个平台的sdk。

这个方案也是现在绝大多数应用所采用的,原因很简单:免费!方便!快捷!

而第三方sdk也有几个可以选,用的比较多的是mob的ShareSdk、友盟的、好像百度也有。

我最终用了mob的,原因很简单,最多人用。

开始集成:

ShareSdk的集成很简单,我们按照官方文档说明直接走一遍流程就行了:

一、获取AppKey

注册Mob的账号并且填写一些你的应用的基本信息,获得AppKey,这个AppKey后面有用,先记着,注意最好是用公司的邮箱而不要用个人邮箱注册,说不定那天你就跑了呢。

二、下载sdk

这个没啥好说的,选好你想要的平台,然后点击“下载SDK”就行了

三、快速集成

3.1使用QuickIntegrate.jar

Mob提供了一个快速集成工具QuickIntegrate.jar来按照你选取的平台来快速生成所需要的代码和资源,关于QuickIntegrate.jar有两点要注意:

(1)无法打开QuickIntegrate.jar

文档上说在windows下配置好java环境后可以直接双击打开jar,反正我的电脑是不行。解决方法很简单,直接用命令行来打开就行了:cd 到QuickIntegrate.jar所在目录,运行“java -jar QuickIntegrate.jar”命令。QuickIntegrate运行成功后就会在其所在目录生成一个Sample文件夹,Sample文件夹下会有4个子文件夹:assets,libs,res,src。

把这4个子文件夹里的东西放复制到你的工程里就ok了!

(2)打开QuickIntegrate.jar后无任何平台可以选

这个是因为在第二步下载sdk时你选的是“下载官方demo”,这是虽然解压后文件夹里也有QuickIntegrate.jar,但是这个QuickIntegrate.jar用不了,你应该点的是”下载SDK“。

3.2配置AndroidManifest.xml

添加权限和Activity什么的直接复制就行了,注意权限不要重复(好像重复了也没事,不过检查一下也是个好习惯),有集成微信和易信的话需要注册额外的两个Activity,微信的WXEntryActivity和易信的YXEntryActivity。要注意name属性对应的包路径,官方文档上是直接用”.“开头,表示当前包名,一般为你的项目的包名,而这两个Activity放在cn.sharesdk.demo下,要不就改name属性为正确的包路径,要不就把这两个Activity放在你的项目中对应的包,不然会报ActivityNotFound异常。

其实这一步最烦的是最后一下步:替换mob后台申请的Appkey与各个平台申请的key

这一步你就得到各个你集成的平台去注册开发者了,当然你也可以直接用Mob申请的各个平台的AppKey,但这毕竟是别人的东西,难保不会出现问题,我现在除了一些注册开发者失败的平台用着Mob的Appkey之外,其它的都是自己去注册的。而且有些平台基于安全原因,会去验证签名,这些平台我们必须自己去注册,并且提交应用信息通过审核后才可以用。

各个平台的注册地址可以自行百度,或者在assets的ShareSDK.xml里有总结,或者查看网页版总结:应用信息注册地址列表

需要自己注册的:

(1)新浪微博SSO

SSO其实就是类似一键登录,如果你当前手机上已经装有新浪微博客户端的话,那么开启SSO可以直接进行简单的一键授权进行分享,而不用再进行账号密码的输入。虽然很方便,但是为了安全起见,新浪添加了对应用签名的验证。所以我们必须将我们的应用和签名信息提交给新浪并通过审核后才可以进行SSO免登陆功能。

注意填写应用信息时要求填写签名的MD5值,跟其它MD5值一样,这是你的签名的唯一标识,在生成签名文件KeyStone时可以看到,如果你当时没记下来的话,也可以用新浪或者微信等开发的一个简单应用去获取。新浪工具的git-hub地址:点击打开链接

注意不管你是用新浪的还是微信的还是其它的平台提供的工具,你的签名MD5值只有一个,你用哪个工具得到的结果都一样,你提取一次然后记住就可以在各个平台上用了。

(2)微信、微信朋友圈

微信和其朋友圈同样要对应用签名进行验证,并且是验证过后才给你AppId。在你分享内容时会在服务器端对你的包名和签名进行对应验证,如果在微信服务器端没有你的包名和签名信息或者对应不上的话,就会报错导致分享失败。

注意在测试微信分享时要先用你在微信上填的那个签名文件签完名后打包才进行测试,像上面说过的,微信会验证你的包名和签名,不这样做的话微信不让你分享。

(3)易信,易信朋友圈

基本跟微信一样。

注意要通过审核,不然的话会对分享内容进行限制或者根本不让你分享。微信的我通过审核了,新浪的和易信的还没通过(好吧,写到一半新浪的也审核通过了,就差易信了),如果失败的话会告诉你原因,多申请几次吧。

3.3开始添加分享代码

简单的一键分享代码很简单,把文档上的示例代码直接复制过来用都行。注意如果你的应用还没通过审核的话,最好关闭sso授权。

做完上面几步基本就实现简单的分享功能了,但是我觉得有一个高级自定义功能很有必要实现,就是为不同平台定义差异化分享内容:

不同平台的分享内容格式不同,比如微博只支持图文分享,微信和易信支持网页分享等。所以最好为不同平台设置不同的分享内容。

Mob的sdk也提供了一个简单的回调接口来实现这个功能。

具体参考:官方文档的第6点

各个平台的内容格式参考:不同平台分享内容的详细说明

这一篇是纯文字版的,因为各个平台的页面总是换来换去的,发图片也没啥意思。

时间: 2024-10-29 14:58:36

Android好奇宝宝_12_社会化分享那些事的相关文章

Android好奇宝宝_04_一个有3个功能的Adapter

感觉Android好奇宝宝这个系列是脱离不了ListView和GridView了... 这一篇呢来分享点好东西 一个自定义Adapter,可以快速实现三个功能: (1)自动缓存处理 好吧,这个功能不是我实现的.我只是照搬鸿洋大大的,我会简单说下,不过还是请先看下他的原文,再来看我添加的两个功能,传送门 (2)支持item的不同布局 提供一个接口来通过position和该position的数据来设置不同的布局 (3)局部刷新 只刷新指定item的某个子View,避免一直调用notifyDataSe

Android好奇宝宝_番外篇_看脸的世界_08

废话少说,先上效果图: (左侧的图片是我用window画图软件1分钟画的,所以就不要嫌丑了,You can you up no bb.) 这是我发过最挫的效果图了,不过这是由于没有图片素材导致的,就不要在意这些细节了,知道实现原理后完全可以发挥你的想象去实现更美观的效果. 这个效果也是有开源库的,不过我又把名字给忘了,不过我记得原理,于是就试着自己写了一下. 其实原理很简单,我在另一篇博客(一个有吃豆人删除动画的ListView)也说过了,这一篇当做兑换那些年少轻狂不更事时许下的诺言(是不是瞬间

Android第三期 - sharesdk社会化分享组件

网站分享比较简单的一句js就可以了,但是手机就没有这么简单了,要有点小复杂,刚学Android两个月了,也再用第三方的Android开发组件,现在介绍给大家sharesdk.直接上代码!! 第一步:下载ShareSDK 官网 http://share.sharesdk.cn/Download 第二步:集成ShareSDK 进入ShareSDK解压目录,打开"Share SDK for Android"目录,可以找到"QuickIntegrater.jar",这个就是

Android集成友盟社会化分享功能

1.  产品概述 友盟社会化组件,可以让移动应用快速具备社会化分享.登录.评论.喜欢等功能,并提供实时.全面的社会化数据统计分析服务. 指南将会手把手教你使用社会化组件SDK,用5分钟为APP增加新浪微博.腾讯微博.人人网分享功能. 注意:本文示例代码均针对最新版SDK,如果你所用SDK的类名或方法名与此文不符合,请使用你所用SDK的随包文档.或者下载使用最新版SDK. 2.  获取友盟Appkey 如果你之前已经在友盟注册了应用,并获取到了Appkey,可以继续使用它. 如果你尚未在友盟注册开

Android好奇宝宝_11_SwipeRefreshLayout原理浅析

上一篇文章写了一个RecyclerView的Demo,然后就想加个下拉刷新功能进去试试,由于RecyclerView算比较新的东西,所以暂时找不到什么开源库使用.于是想到了官方提供的SwipeRefreshLayout,号称能为任何View添加下拉刷新功能. SwipeRefreshLayout的使用很简单: (1)将要下拉刷新的View嵌套到SwipeRefreshLayout中: <jjj.demo.newstuffdemo.JJJSwipeRefreshLayout android:id=

Android好奇宝宝_06_聊一聊Android里的动画

这一篇我们来聊一聊高大上的动画效果. 首先说一个常识,一个对理解动画最重要的概念,亦是动画的本质: 动画的原理是利人眼的视觉暂留的特性,即如果一帧帧图像切换的足够快的话,人眼就察觉不到停顿,看起来就像连续的动画了. 动画的原理很简单,就是让图像进行快速的切换.动画的难点是计算出每两帧之间的差异,比如一个位移动画,对于每一帧你都必须计算出它的位置,如果是直线匀速的.很容易计算,但如果是曲线的而且还是有加速度(即移动的速度是会变化的)的,那么计算就会变的复杂了. 总结一下,动画有两个要素,一个是若干

Android好奇宝宝_09_Handler Looper Message

发现自己讲的东西都是UI相关的,这一篇就来讲讲Android很重要的知识点:Handler Looper Message. 废话少说,直接入正题. (1)存在的意义: 我一直把Handler Looper Message 这几个类当成几个可以搭配使用的工具类,特别之处在于系统提供了这些工具类,并且系统自己也使用了这些类. 既然是工具类,那么其功能是什么呢? 答:在当前线程建立一个唯一的消息队列,通过Handler可以向消息队列添加消息,Looper不断从消息队列取出消息,再转发给发送该消息的Ha

Android好奇宝宝_番外篇_看脸的世界_06

简单实现波纹效果 其实这一篇的效果实现很简单,写这篇博客重点是为了说另一件事,剧透一下:有关内存泄露的. 先说下效果的实现: 原理: 原理只有一个,就是Shader的使用.Shader我看别人翻译成着色器,其实它的作用就是为画笔增加颜色的渐变,画笔默认是一个颜色画到底,但是使用Shader可以实现从一个颜色渐变到另一个颜色. 想了解更多关于Shader的姿势,推荐博客:传送门 有了Shader,就能很简单的画出波纹的效果了,至于动画效果,只是动态改变画的大小而已. 高清源码: (1)初始化 重写

Android好奇宝宝_08_乱侃触摸事件传递

讲解触摸事件传递原理的网上有一大把,有从源码角度讲的,有从实际例子角度讲的.我这里呢只是记录下自己的理解,讲的可能没其他大牛透彻,有错误的跪求评论指正. 直接上图,对照图解和文字来分析触摸事件的传递. (1)乱七八糟图解版: (2)看图说话: (2.1)上图并不包含Activity,Activity没有onInterceptTouchEvent方法,默认实现都是直接往下传递. (2.2)讲解3个触摸事件控制方法的含义及其返回值的意义: <1>onInterceptTouchEvent onIn