H5+ 分享到微信、朋友圈代码示例
h5+分享到微信、朋友圈代码示例
在使用分享功能的时候会莫名的分享失败,debug时发现是图片过大的问题。
图片过大时ios平台上返回错误码-8,安卓上返回错误码-3(我测试是这样)
因此如果第一次分享失败时递归重新获取默认图片进行分享,这样就可以分享成功了。
如果使用七牛等云服务器存放图片,可以设置下载图片的大小,下载图片时在链接后加"!(你定义的大小或名称)",建议微信分享图片大小60*60,一般这样就能分享成功了
http://www.cnblogs.com/phillyx/
(function(window) {
var Share={};
Share.info = {
id: '',
name: '',
head_image: "_www/images/icon/A/144.png",
introduce: ''
};
/**
* 更新分享服务
*/
var shares = null;
function getSerivces() {
plus.share.getServices(function(s) {
shares = {};
for (var i in s) {
var t = s[i];
shares[t.id] = t;
}
}, function(e) {
console.log("获取分享服务列表失败:" + e.message);
});
};
function shareAction(id, ex) {
var s = null;
if (!id || !(s = shares[id])) {
console.log("无效的分享服务!");
return;
}
if (s.authenticated) {
console.log("---已授权---");
shareMessage(s, ex);
} else {
console.log("---未授权---");
//TODO 授权无法回调,有bug
s.authorize(function() {
console.log('授权成功...')
shareMessage(s, ex);
}, function(e) {
console.log("认证授权失败:" + e.code + " - " + e.message);
});
}
};
var sharecount = 0;
/**
* 发送分享消息
* @param
*/
function shareMessage(s, ex) {
plus.nativeUI.showWaiting();
setTimeout(plus.nativeUI.closeWaiting,5000);//TODO 5秒后自动关闭等待,否则如果用户分享出去后选择‘留在微信’,再手动回到app的时候,waiting无法关闭
var msg = {
extra: {
scene: ex
}
};
msg.href = "分享的网址" + "share?hid=" + Share.info.id;
msg.title = "我在xxxx等你——" + Share.info._name;
msg.content = Share.info.introduce;
//取本地图片
var img = plus.io.convertAbsoluteFileSystem(Share.info.head_image.replace('file://', ''));
console.log(img);
msg.thumbs = [img];
if (sharecount > 0) {
//如果本地图片过大,导致分享失败,递归时重新分享获取默认图片
msg.thumbs = ["_www/images/icon/A/144.png"];
}
console.log(JSON.stringify(msg));
s.send(msg, function() {
plus.nativeUI.closeWaiting();
var strtmp = "分享到\"" + s.description + "\"成功! ";
console.log(strtmp);
plus.nativeUI.toast(strtmp, {
verticalAlign: 'center'
});
sharecount = 0;
}, function(e) {
plus.nativeUI.closeWaiting();
if (e.code == -2) {
plus.nativeUI.toast('已取消分享', {
verticalAlign: 'center'
});
sharecount = 0;
} else if (e.code == -3 || e.code == -8) {
console.log(e.code);
if (++sharecount < 2) {
//TODO 分享失败可能是图片过大的问题,递归取默认图片重新分享
shareMessage(s, ex);
} else {
sharecount = 0;
plus.nativeUI.toast('分享失败', {
verticalAlign: 'center'
});
}
}else{
console.error('分享失败:'+JSON.stringify(e))
}
console.log("分享到\"" + s.description + "\"失败: " + e.code + " - " + e.message);
});
};
function share() {
bhref = true;
var ids = [{
id: "weixin",
ex: "WXSceneSession"
}, {
id: "weixin",
ex: "WXSceneTimeline"
}],
bts = [{
title: "发送给微信好友"
}, {
title: "分享到微信朋友圈"
}];
plus.nativeUI.actionSheet({
cancel: "取消",
buttons: bts
},
function(e) {
var i = e.index;
if (i > 0) {
shareAction(ids[i - 1].id, ids[i - 1].ex);
}
}
);
};
Share.share=share;
window.Share = Share;
mui.plusReady(function() {
getSerivces();
});
})(window)
H5+ 分享到微信、朋友圈代码示例的更多相关文章
- Android分享图文到朋友圈代码。
分享到微信朋友圈代码.不好用,最后选择了shareSdk. private static void shareToTimeLine(File file) { Intent intent = new I ...
- 实训六(Cocos2dx游戏分享到微信朋友圈----AppID的获取)
考虑把游戏分享到微信朋友圈,前面的博文已经写到,shareSDK是一个很好的选择,但是学习了几天时间,遇到了很多问题,与其在一棵树上吊死,还不如退一步海阔天空,先暂时放一放,于是我考虑了一下既然是分享 ...
- apiCloud 三方分享,微信好友分享,微信朋友圈分享,QQ分享,微博分享
首先查看我的这篇有关三方登录的博客,地址是http://www.cnblogs.com/gqx-html/p/8303567.html,配置完三方数据后可以从上一篇文章中的链接跳转到各个登录查看api ...
- 关于JS交互--调用h5页面,点击页面的按钮,分享到微信朋友圈,好友
关于js交互,在iOS中自然就想到了调用代理方法 另外就是下面的,直接上代码了: 如果你的后台需要知道你的分享结果,那么,就在回调里面调用上传到服务器结果的请求即可
- 纯html实现将网页页面分享到微信朋友圈添加缩略图图片的方法
在分享页面中的body中最前面添加一个隐藏的div,里面放一个300*300的正方形图片即可:如下 <div style="display:none"><img ...
- 分享:android图片浏览器—类微信朋友圈相片浏览【android代码下载】
今天给大家分享个android图片/相册浏览器,类似微信朋友圈相片浏览,可以左右滑动,可以双击放大,捏拉放大 效果如下:<ignore_js_op> device-2013-09-04-1 ...
- 微信朋友圈分享页面(JS-SDK 1.0)
微信更新sdk后大量分享朋友圈代码失效,标题 缩略图 描述无法自定义 新版SDK分享文章步骤 1.绑定域名 (方法参考 http://mp.weixin.qq.com/wiki/7/aaa137b55 ...
- Android第三方应用分享图文到微信朋友圈 & 微信回调通知分享状态
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAWQAAAKUCAIAAAC8A9XzAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWX ...
- 微信朋友圈如何同时分享(图片+文字) Android版
以下是:微信朋友圈SDK 分享图片的代码,但只能分享图片,不能分享文字,如何才能图片和文字同时分享?求各位大神指教! public class MainActivity extends Activit ...
随机推荐
- 2016年省赛 G Triple Nim
2016年省赛 G Triple Nimnim游戏,要求开始局面为先手必败,也就是异或和为0.如果n为奇数,二进制下最后一位只有两种可能1,1,1和1,0,0,显然异或和为1,所以方案数为0如果n为偶 ...
- MySQL系列(六)--索引优化
在进行数据库查询的时候,索引是非常重要的,当然前提是达到一定的数据量.索引就像字典一样,通过偏旁部首来快速定位,而不是一页页 的慢慢找. 索引依赖存储引擎层实现,所以支持的索引类型和存储引擎相关,同一 ...
- BZOJ 1099 树网的核
题面 解题思路 搞了三个多小时.... noip时的数据很水,直接暴力n^3过. 我们考虑优化,首先可以贪心,我们要在直径上选肯定越插长越好,所以n^2其实就可以解决.但这还不够,根据直径的最长性,我 ...
- bzoj 1800 [Ahoi2009]fly 飞行棋——模拟
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1800 原来只想到一个弧是一条边. 然后发现不是.差点不会做.经Zinn提醒,不用枚举那条边由 ...
- 洛谷2593 [ZJOI2006]超级麻将——可行性dp
题目:https://www.luogu.org/problemnew/show/P2593 发现三个连续牌的影响范围只有3.相同牌的影响范围只有1之后就可以dp了. O(100^7)T飞. #inc ...
- vim Tab的设置问题
VIM 中处理 TAB 异常的方便. 键盘上的 TAB 键,与文件中的 TAB 符号一定要区分开,这是两个概念. 显示当前文件中的 Tab /\t 实际上,就是查询 \t 符号. shiftwidth ...
- Django中的orm的惰性机制
惰性机制:Publisher.objects.all()或者.filter()等都只是返回了一个QuerySet(查询结果集对象)[https://www.cnblogs.com/chaojiying ...
- ucore 物理内存探测 lab2 附录A&B
探测物理内存分布的大小和方法 bootloader 增加的工作 bootasm.S 中对应了 probe_memory 到 finish_probe 的部分. 通过BIOS 中断 获取内存可调用参数为 ...
- NKOJ1469 通向自由的钥匙
P1469通向自由的钥匙 时间限制 : 10000 MS 空间限制 : 65536 KB 问题描述 通向自由的钥匙被放n个房间里,这n个房间由n-1条走廊连接.但是每个房间里都有特别 的保护魔 ...
- caffe 的docker安装过程及相关linux操作总结
一.caffe 和 docker的安装编译 docker pull caffe镜像(注意使用docker安装省去安装CUDA和cudnn的安装.) 安装相关依赖包 安装opencv3(使用源码安装) ...