近期刚过完年,一回公司又赶着为项目添加分享功能,搞得焦头烂额,现在在这里记录一下过程中发生的问题,方便下次查阅。
首先,分享功能有两个方式实现:
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点
各个平台的内容格式参考:不同平台分享内容的详细说明
这一篇是纯文字版的,因为各个平台的页面总是换来换去的,发图片也没啥意思。