本来是想写Java的,但是吧昨天正好一朋友问了我关于使用MUI开发应用分享的问题(先是死活分享不了,后是图片分享有问题)!其实在Hello H5+ 里面是有关于分享的demo的,所以由于时间的原因配置环节,如何正确的配置我就直接上代码了,最后总结下朋友关于分享图片偶尔失败的原因,以及容易出现的问题!
---------------------------------------------以下正文----------------------------------------------------

先上一波参考资料:

HTML5+ Share模块(管理客户端的社交分享功能)

http://www.html5plus.org/doc/zh_cn/share.html

MUI官方分享插件开发指南

http://ask.dcloud.net.cn/article/36

时间太晚了,我就先直接上js代码了

var shares=null,share_bhref=false;
var share_img='';//分享图片
var share_thumb_img=''//缩略图
var share_content='';//内容
var share_href='';//链接
var share_title='';//标题
var bussType = '';//类型
var bussId = '';//业务单号
var wrhShare = function(){return {/*** 初始化分享服务*/init : function(){plus.share.getServices( function(s){shares={};for(var i in s){var t=s[i];shares[t.id]=t;}}, function(e){mui.toast( "获取分享服务列表失败:"+e.message );} );},/*** 分享操作* @param {Object} id* @param {Object} ex*/shareAction : function(id,ex){var s=null;if(!id||!(s=shares[id])){mui.toast( "无效的分享服务!" );return;}if ( s.authenticated ) {wrhShare.shareMessage(s,ex);} else {s.authorize( function(){wrhShare.shareMessage(s,ex);},function(e){mui.toast( "认证授权失败:"+e.code+" - "+e.message );});}},shareShow : function(){var ids=[{id:"sinaweibo"},{id:"weixin",ex:"WXSceneSession"},{id:"weixin",ex:"WXSceneTimeline"},{id:"qq"}],bts=[{title:"分享到新浪微博"},{title:"发送给微信好友"},{title:"分享到微信朋友圈"},{title:"分享到QQ"}];plus.nativeUI.actionSheet({cancel:"取消",buttons:bts},function(e){var i=e.index;if(i>0){wrhShare.shareAction(ids[i-1].id,ids[i-1].ex);}else{}});},/*** 打开分享操作列表* @param {Object} bussType_param 业务类型 必填 业务类型枚举类 BusinessTypeEnum* @param {Object} bussId_param 业务Id 必填* @param {Object} title_param 标题 必填* @param {Object} content_param 内容 必填* @param {Object} img_param 图片 可选 格式:album/2018081312555_519.JPG,不需要加图片域名 * @param {Object} href_param 链接 可选,格式:'http://simple.com'*/sendShare : function(bussType_param,bussId_param,title_param,content_param,img_param,href_param){wrhShare.init();bussType = bussType_param;bussId = bussId_param;share_title = title_param;share_content = content_param;if(img_param != ''){share_img = imgServer+img_param;share_thumb_img = imgServer+img_param+'@80w_80h_0e';}share_href = href_param;if(share_href == ''){share_bhref=false;}else{share_bhref=true;}wrhShare.shareShow();},/*** 发送分享消息* @param {Object} s* @param {Object} ex*/shareMessage : function(s,ex){var msg={extra:{scene:ex}};msg.content = share_content;msg.title = share_title;msg.thumbs=[share_thumb_img];msg.pictures=[share_img];var sendMessage = function(){console.log(JSON.stringify(msg)); var params = {bussType:bussType,bussId:bussId,content:share_content,title:share_title,href:share_href,img:share_img,type:s.id};//保存分享记录var addShare = function(){wrhFunc.ajax('/userShare/addShare', params, 'post', function(data){});}s.send( msg, function(){mui.toast("分享到\""+s.description+"\"成功! ");console.log("分享到\""+s.description+"\"成功,返回应用 ");//分享给qq好友,微信好友如果不返回应用,无法监听到分享成功回调params.status = 0;addShare();}, function(e){console.log("分享到\""+s.description+"\"失败! "+e.code+" - "+e.message);params.status = 1;params.message = e.code+e.message;addShare();} );}if('sinaweibo' == s.id){//新浪微博无法分享链接,不传递href,不能写href='',否则无法显示图片if(plus.os.name=="Android"){//Android 不能分享网络图片//下载图片到本地mui.toast("下载图片中,即将打开新浪微博分享...");var dtask = plus.downloader.createDownload();var localPictures = '';function onStateChanged( d, status ) {switch(d.state){case 4:if(status == 200){console.log("图片下载完成:" + d.filename);localPictures = plus.io.convertLocalFileSystemURL(d.filename);msg.thumbs=[localPictures];msg.pictures=[localPictures];sendMessage();} else {mui.toast("下载图片失败");}break;case 1:console.log("下载开始");break;case 2:console.log("请求已响应"); break;case 3:console.log("下载进行中");break;default:console.log("state: " + d.state);break;}}mui.each(msg.pictures, function(i, n){// 创建下载任务var dtask = plus.downloader.createDownload( n );dtask.addEventListener( "statechanged", onStateChanged, false );dtask.start();});}}else{msg.href=share_href;sendMessage();          }}}}();

以上的代码就是配置js的代码

那天朋友遇到的问题是在分享网络图片的问题:

分享到QQ,微信的网络图片有时候会莫名其妙的出现分享失败的情况!后面和他探讨测试之后发现出现这种情况一般都是分享较大的图片会出现这种问题,关于问题后面找到了解决的方法,有两种

①:下载图片到本地

②:进行图片裁剪(网上看到有网友用的是阿里云存储图片,在分享的时候追加参数,这种追加参数由于条件有限就没有测试)

最后朋友采用了第一种方式,下载到本地再分享!但是个人觉得这种方式对于用户体验有影响,不怎么推荐。

常见的分享失败的问题(部分来自mui问答社区)

新浪微博回调地址问题:

Hbuilder打包配置文件中,回调地址属性是redirect_uri 不是 redirect_url(第一次的时候就被这坑过,url写顺手了)。

新浪开放平台配置的授权回调页和取消授权回调页 http://域名/app/userShare/shareCallBack,打包manifest.json 文件中redirect_uri也配置为这个就可以了。

图片分享到新浪微博完全不支持网络路径

解决办法,下载图片到本地,然后再分享,请参照 http://ask.dcloud.net.cn/article/183

微信分享一闪关闭并回到APP

Android包名与签名不一致导致,一定要先打包好正式的APP,然后再用签名生成工具生成签名,并配置到对应开放平台。

转载于:https://my.oschina.net/u/3903095/blog/1926678

使用MUI开发移动应用 QQ、微信、新浪微博分享的总结相关推荐

  1. 调用QQ/微信/新浪微博 实现登录

    调用QQ/微信/新浪微博的第三方登录接口(开发者端口) 官方文档写的很明确了,不过在这里总结一下,方便小白了解下具体接入流程和情况 总体大致流程: 其中: 1.微信登录可省去获取用户标识ID这一步,获 ...

  2. 微信网页开发,禁止右上角微信复制分享链接JS

    禁止微信右上角分享链接 开发网页时,为了提高网页链接的安全,不想让别人分享链接给别人 一般微信打开网页后,点击右上角是这样的 想要网页不能被复制,不能分享给其他人 效果图: 资源文件下载地址 下载地址 ...

  3. iOS 第三方登录(QQ 微信 新浪微博)

    一.QQ登录 1.登录腾讯开放平台,创建一个应用,获取APP_KEY和APP_ID 2.下载对应的SDK 3.下载 iOS SDK环境搭建 1.导入SDK,配置工程 1.下载SDK到本地后,将SDK拖 ...

  4. mui开发项目流程_【经验分享】用HBuilder开发的基于MUI和H5+的APP开发及上架经历...

    一.写在前面 2017年,个人最大的收获,是第一次完成了这一款APP的开发并顺利上架,同时获得了还算可观的收益. 这是我前公司的项目,公司的主营业务是旅游,并不是什么科技公司,我之前一直在公司任职技术 ...

  5. 短视频开发,Android 应用接入新浪微博分享

    短视频开发,分享功能占据着重要的地位,主流的社交APP进行分享是一种很常见的推广.使用场景,微博是被分享的众多渠道之一,下面介绍一下,短视频开发Android APP是如何接入微博分享的. 首先,进行 ...

  6. [deviceone开发]-QQ分享、微信分享和新浪微博分享

    一.简介 该demo主要实现QQ分享.微信分享和新浪微博分享.(调试包请到论坛扫描对应二维码下载) 二.效果图 三.相关讨论 http://bbs.deviceone.net/foru... 四.源码 ...

  7. 友盟的微信登录,QQ,新浪微博登录功能和分享功能

    在这里我用的是友盟的登录,需要的请参考本文,直接撸代码, 提示:微信登录在一段时间内,只授权一次(只能调起一次登录页面),除非更换用户,才可以再调起登录页面. 0.本文需要导入jar包导完后鼠标右键A ...

  8. js实现QQ、微信、新浪微博分享功能

    使用js实现QQ.微信.新浪微博分享功能. 微信分享需要手机扫描二维码,需要对url进行编码.在https协议下,扫描二维码时,浏览器打不开可能是没有安全证书导致的. js代码: 1 var shar ...

  9. PJzhang:查看你的微信、QQ、新浪微博都授权给过谁

    猫宁!!! ​​   个人信息的保护,需要时刻关注,不能有丝毫懈怠.   保护个人信息,有两个方向,一个是减少个人信息外泄,另一个是上传大量鱼龙杂的个人信息,难以分辨,混淆视听.   这里不谈第二个, ...

最新文章

  1. 树网的核 Vijos1362 NOIP2007 树结构 直径 暴搜
  2. 五 Python之socket网络编程
  3. oracle视图执行脚本,Sh脚本中查询Oracle v$视图时需要在$号前加转义符“\”
  4. 第一家云创大数据产业学院在佛山职业技术学院挂牌
  5. java 传递bean_Java:如何将值从类/ bean传递给servlet
  6. Tour West Australia by Motorcycle
  7. 当前五大浏览器内核及简史
  8. 虚化4独立游戏开发第一章:策划案
  9. H5页面和微信小程序的优劣对比
  10. 【Tableau server日常维护9.0】window server2016 Tableau server保姆教学安装
  11. 寂寞的季节C调吉他谱 - 陶喆
  12. 简单,充实,幸福——2015-2016年终总结
  13. Qt数据库应用11-通用数据生成器
  14. 英尺 厘米_在35,000英尺处重建747
  15. 【LeetCode】275. H指数 II
  16. GetLastError()函数
  17. 用于Android开发的免费类库和工具集合
  18. Python turtle绘图(星之卡比)
  19. 【C#】记录一次上位机软件界面闪退分析及解决方案
  20. Bochs源码分析 - 20: 开启保护模式

热门文章

  1. SOCKET类的设计和实现
  2. Android 录屏时的帧率控制
  3. 评测TFN PM3900 高性能台式无线电综合测试仪性能
  4. Unity 开发MR HoloLens1或2 的发布问题
  5. apqp过程流程图及编写规则_APQP流程图及详解.pdf
  6. 【Java之多线程篇】——吐血整理Java多线程详解(知识点+代码)
  7. 为什么很多新人猎头都坚持不下去?
  8. 2020年生态红线调整技术方案----解读
  9. 游戏开发中的物理之射线投射
  10. 企业3A信用评级证书,如何应用于市场活动中?