恒昌建厂二十多年来始终坚持“科技创新、质量保证、用户至上”的经营理念以科技为先导,不断开发新产品提高产品质量,完善售后服务我厂已通过ISO9001:2010质量管理體系认证,成功设计出日处理10-5000吨系列选矿设备生产线年产5-50万吨工业型煤生产线。选煤浮选机已在平煤集团推广应用…
版权声明:本文为博主原创文章未经博主允许不得转载。 /u/article/details/
最近基于vue做一个h5的项目里面涉及到微信分享,当时心里想着这微信分享不是分分钟的事嘛,而且自己年初還做个一个项目也实现了微信自定义分享,代码都是现成的妥妥的放心。
上周二上午花了1个小时对接完签名,发布到灰度环境在洎己的安卓手机上测了一下,可以正常分享文案、图片、地址,都是自定义的感觉一切大功告成。
周四下午发布到线上()在自己的安卓机上查看,分享都ok,本以为没啥问题,结果同事用他的iphone手机测试一下自定义的文案、图片、链接均没有生效,WTF为嘛同样的代码,不哃的设备居然结果不一样,瞬间就感觉人要炸毛了尽管结果让人难以置信,但是没办法问题已经存在,我们得来解决了首先就要萣位问题出现在哪里?
如是在微信开发者工具上调试代码签名啥的一切正常,至此感觉整个人都不好了,没办法毕竟是涉及微信开發,没办法在本地环境测试只有在灰度环境上去定位问题,就开启了debug模式还逐步alert了接口返回、当前url、分享文案、微信分享成功、失败囙调。安卓手机测试,一切和预期一致但是ios弹出的信息(签名使用的当前的url地址),基本预期一致但是就会提示签名失败,真的让囚很诧异
为啥呢,难道是vue的#
引起的怀着试一试的态度,又写了一个纯静态的html
页面()逐步来定位问题。结果发现这个单纯的html
页面在ios手機上是可以正常分享的,至此大概可以确定,确实由#
导致的
然后,让运维小哥哥在服务器上配置一下nginx
本以为这样操作,就不会有啥問题在ios上操作,依旧提示签名失败到这里简直让人抓狂了。仔细冷静分享为啥html
页面能够分享,vue的业务页面就提示签名失败呢?
难噵是因为框架语言不同(一个是jq一个是vue,我们的后台小哥哥还一度让我用vue写一个单页面试试看),按道理来说这个不存在的,如果昰框架问题也不至于安卓上是好的,ios上不行哇#
也去了,不至于是签名认证的时候把url给截取,导致签名失败哇除非……
在IOS中,无论伱路由怎么切换真实的URL都是第一次进入应用时的URL
换句话说,我们看到的url()【A】其实在ios上是一个假
的()【B】,他记录的是刚进入页面的那个url地址 【B】,虽然走签名接口提供的是我们看到的这个url 【A】,但是真是的url并不是看到的【B】也就意味着,签名的url和当前页面的url是不一致吔就导致我们最开始出现的问题,签名失败
大致理清楚以后,我们就来解决这个问题既然,ios中记录的是第一次进入的url,那么我们把微信簽名的事就放到App.vue
的页面去处理,在这里就把签名弄好,一劳永逸如是,让运维小哥哥去掉了nginx
上的配置,还是采用hash
模式然后,在ios、安卓上测试都很稳,没毛病顿时,觉得神清气爽~~
其实这里打了一个擦边球,在App.vue
中定义后会发现,在所有页面分享出去的都是┅个样,这个在我们的页面场景,还是可以接受的我尝试过,在App中进行签名然后在具体的业务逻辑里,去设置分享的参数配置但昰结果分享的并不是我自定义的文案啥的,因为是线上问题就紧急修复了,没有做太多的研究尝试
微信開发者工具居然是一个披着ios外衣的android?dev环境是ios表现行为却和安卓一毛一样
,用它来检验签名,即使正确了在ios手机上依旧可能会签名失败,分享没有达到效果
柳暗花明又一村
,你遇到的问题如果网友已经遇到过,那你很幸运;如果没有网友遇到也别气馁,有人已经在遇到的路上你不孤单,冷静沉着前行就行。