解决友盟分享的报错的利器——debug模式

来源:互联网 发布:广联达软件下载教程 编辑:程序博客网 时间:2024/06/05 10:34

使用过友盟分享的朋友一定遇到过这样的情况,按照文档说明配置工程,可是依然不能分享或者分享失败。这主要是有一下几种原因:
1.有些文档的细节被忽略了
2.签名问题
3.不支持的分享内容,或开发者账号问题
第一种原因对于老用户或者熟练的开发者来说已经不是什么问题了。
反倒是第二种原因成为许多开发者的拦路虎,尤其初学的开发者,根本不知道什么叫签名,也不知道签名是什么,很多人问,为什么非要签名,难道不用不行吗?答案是肯定的,签名是由于三方平台(新浪,微信,facebook等)出于安全考虑设定验证的。如果去掉,可以使用intent打开客户端的方式分享,这样,就不支持较多的分享类型,而且体验也不好。所以签名是必须的。如果不了解的开发者可以参考这个签名文档 。
第三种原因可能是由于分享内容的不支持或开发者账号。由于许多开发者都是第一次使用分享,不了解三方平台的注册流程。例如三方平台的注册应用没有过审核就开始测试使用。明明分享的文字图片,为什么分享到平台之后只有图片,这都是由于对三方平台的分享策略不甚了解,对于不同平台可以分享哪些内容可以参照demo或者签名文档 。
说了这么多,可是切入到今天的主题——友盟分享的debug模式,看看这个神奇的功能如何帮助用户解决问题。

打开debug模式

debug模式现只支持android平台,且是6.1以后的版本。开发者只需要在你初始化sdk之前(设置各个平台的appkey的地方)用以下代码打开即可:

Config.DEBUG = true;

然后重新运行即可。但是要记得上线前关掉,这样才不会影响你的线上版本。
然后运行的时候,打开你的logcat,搜索umeng_tool,如下图所示:

Paste_Image.png

检查版本是否一致

许多开发者都会遇到这样的问题,配置都正确,仍然会crash,这可能是由于,你更新sdk,但是没有更新全,比如只更新了各个平台的包,没有更新main中的jar包,或者没有替换新的资源文件等

检查jar是否都一致

Paste_Image.png
有上图log可以看出,核心包版本号6.1.1,分享界面版本号6.1.1,新浪平台版本号6.1.1,可以确定jar运行没有问题

资源文件是否缺失

Paste_Image.png

如果缺少资源文件,会由上图的crash log打印出来,其中type 是资源类型,name为文件名或id的名字,方便用户查找。

检查分享内容

如果发现你分享的内容与展示内容不一致时,可以查看log中真正传入的内容,如下图所示,进行对比

Paste_Image.png

检查微信平台

签名不对

签名不对进行分享时,会回调错误,如下图所示:

Paste_Image.png
授权时如果调用后,一直没有跳转,可以检查log,会有如下提示:

Paste_Image.png
这时如果不是因为网络问题,请去根据打印的签名去微信后台检查。

这里要特别注意两件事
1.如果签名与后台确实一致无误,考虑是不是appid问题
2.如果签名与后台确实一致无误,卸载微信重新安装或,清理微信缓存文件,重新运行。这是由于你之前用错误的签名和同样的包名运行过,微信有缓存造成的。

回调activity的问题

微信需要设置回调activity,如果你开了debug模式,点击分享会有如下提示:

Screenshot_2016-12-10-13-48-37-491_UShareDemo.png
这是你就要参照文档,设置回调的Activity,否则没有回调。

检查QQ平台

Androidmainfest配置不正确

QQ需要在Androidmainfest中配置对应的activity,如果没有配置或者精简版完整版配置错误,会有一下提示:

Screenshot_2016-12-10-13-59-56-781_UShareDemo.png
这时需要参照文档进行配置。
或者你在Androidmainfest中配置了,但是每次分享回调都是取消,这是检查log,会有如下提示:

Paste_Image.png

这是因为你配置的AuthActivity不正确,如下图示:

Paste_Image.png

需要把箭头处设置为你qq的appid

检查后台包名

如果配合正确,仍然不能授权或者分享,可以根据打印的包名与qq后台的包名进行对比:

Paste_Image.png

检查回调

如果qq分享授权没有回调,可以检查log看是否有如下一行:

Paste_Image.png
如果没有,请检查你所使用的activity是否配置了:

@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {    super.onActivityResult(requestCode, resultCode, data);    UMShareAPI.get(this).onActivityResult(requestCode,resultCode,data);}

检查新浪平台

签名问题

如果新浪微博sso授权,界面由于一下问题不能进行授权,是由于新浪微博的签名问题造成,请检查签名问题。

Screenshot_2016-12-10-14-11-24-019_UShareDemo.png

回调地址问题与安全域名问题

如果授权仍有问题,请检查新浪后台的签名与设置的是否一致:

Paste_Image.png
如果您使用的是精简版,请特别注意
需要检查新浪微博的安全域名是否是sns.whalecloud.com

Paste_Image.png

其他说明

有开发者可能会问,每次分享的一个流程中需要检查这么多东西,效率会不会低,这肯定是不会的,因为你真正上线的版本是关闭debug模式的,不会再自检这些东西。

其他报错说明

还有一些特定原因也会显示在log中,开发者可以根据log的提示进行修改。

下载地址

介绍了这么多debug模式的功能,您再也不需要排队等待客服了,是不是感觉自己也能成为一个解决问题的能手了。好了,赶紧来一发吧,体验下debug模式带来的简便快捷。
下载地址 。

0 0
原创粉丝点击