更新 -20190120: jweixin-1.4.0.js 存在ios分享失败,安卓ok的情况,
第一步:先将jssdk切回1.2.0版本,使用1.2.0版本里面的方法分享方法,并将1.4.0里的方法注释掉;目前1.2.0里的方法未被废除,都可以成功分享;(你可以理解为降级版本,其实到这步并没有使用1.4.0版本)
第二步:(注释1.2.0版本引入文件及方法切换为1.4.0版本及方法)如果切版本分享ios未成功,尝试更换后台url 为公众号js安全域名【只有域名不附带参数的域名】(此方法肯定会报错,无法正常分享,在手机上触发一下错误),之后切换为正常的url ,iphone上就可以分享了
第三步:(兼容1.4.0版本)上面俩步做完后释放1.2.0版本的引入及方法;(此时页面里将有1.2.0和1.4.0版本的jssdk文件及两个版本所包含的分享方法);
注意点:确保你分享的链接是正确的,链接中有多余的参数和字符都会造成异常
针对1.2.0版本jssdk,尽快弃用1.0.0版本
其实Android和iOS是一样的,关键是要按微信的标准执行,泪的教训。。。。
##答主分享几个开发时的注意点:(JS-SDK)
1.对于分享图标不显示问题:最好在html中引入图片文件(不需要显示的可以选择隐藏),之后按照微信js-sdk进行配置,配置时要注意图片域名要与网站域名一致,否则无法显示。
2.对于分享文字不显示问题:分享链接(link)和分享描述(desc)采用动态传参,所以说分享描述不显示多半是因为没有取到参数。
关注微信开发者手册-JS-SDK最下面的常见问题
以下代码是我项目中的部分,紧紧是把重要的截取出来了(spa)
动态读取url
function _touchNotice(notice) {
var url = '';
if (notice.url.indexOf("http://", 0) == -1) {
url = "http://" + notice.url;
} else {
url = notice.url;
}
$window.location.href = url;
}
function _initConfig(wechat,url){
.......
wx.config配置
-----------
wx.config({
debug: GLOBAL_CONFIG.DEBUG, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
appId: wechat.app_id, // 必填,公众号的唯一标识
timestamp: wechat.timestamp, // 必填,生成签名的时间戳
nonceStr: wechat.nonceStr, // 必填,生成签名的随机串
signature: wechat.signature,// 必填,签名,见附录1
jsApiList: ['chooseWXPay',
'onMenuShareAppMessage',
'onMenuShareTimeline',
'onMenuShareAppMessage',
'onMenuShareQQ'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
});
将参数封装到对象中,以便调用,这个很重要
------------------------------------------------------------------------
var shared_link = url;
var title=$scope.title;
var desc=$scope.desc;
wx.ready( function() {
wx.onMenuShareTimeline({
title: title, // 分享标题
desc:desc,
link:shared_link, // 分享链接
type:'link',
imgUrl: '分享图标的url,以http或https开头', // 分享图标
success: function () {
// 用户确认分享后执行的回调函数
},
cancel: function () {
// 用户取消分享后执行的回调函数
}
});
wx.onMenuShareAppMessage({
title: title, // 分享标题
desc:desc,
link:shared_link, // 分享链接
type:'link',
imgUrl: '分享图标的url,以http或https开头', // 分享图标
success: function () {
//$scope.toast(desc);
// 用户确认分享后执行的回调函数
},
cancel: function () {
// 用户取消分享后执行的回调函数
}
});
.......
}
补充一点
###不知道是微信服务器的问题还是我这边服务器的缘故,要执行一下分享成功和取消分享的回调函数,才能使整个分享流程走通。
具体原因未知,有遇到的可以留言讨论下。