分享下最近企业微信开发踩的坑

1,580 阅读3分钟

障眼法需求

某个平平无奇的早上接到一个需求,产品经理不知道从哪给我截来一个图说要做这功能。h5 页面需要自定义按钮 弹出这个框可以各种分享。我心想这不就是手动触发 右上角菜单么。这波操作简单啊,接!

image.png

image.png

查文档

一顿操作猛如,第一时间去翻看企微api文档

  1. 界面操作 有隐藏、显示指定等api,就是没看到打开菜单弹窗。继续搜查文档。。。。 结果翻遍文档都没有找到这个api。嗯,人家都实现了这个功能了,一定是我方式不对。于是老方案,先去社区提问一波。结果很快收到回复说企微目前的确没有开发这个功能。

    顿时有些泄气,果断让产品经理给我发来链接让我验证。一开始我猜想会不会是自己做的弹窗,然后仿照右上角菜单栏样式,再手动触发各种分享,但是页面上出现一行 “网页有xxx提供”,马上打消我念头。人家不至于傻到连这句话都要写出来吧。于是再继续琢磨企图发现玄机。不断切换右上角菜单 。终于发现 取消 这两个字有差异。

    对于程序员而已,只有0 跟 1,于是马上启用开发者工具审查元素,结果。。。真的是自己写的弹窗。然后再仔细看图标大小间距 还有字体颜色,其实还是很容易看出来的。你细品,是真的骚。

  2. 分享接口。确定了之后我就开始找ui切图然后写样式。三下五除二终于可以去调用分享api了。分享微信好友的时候我踩了一个雷。这里要提示下

image.png 一开始我是没太能区分 获取按钮跟自定义的区别。所以直接调用了 wx.onMenuShareWechat,发现没生效,然后换了才生效wx.invoke( "shareWechatMessage")这个时候才意识到。获取按钮指代 右上角菜单那些按钮的触发,而不是我自定义的按钮,自定义要调用的api 基本都是wx.invoke开头的(也许全网只有我踩了这个坑)。

分享到微信朋友圈

到这里一切都还很顺利。最后一个api,分享到微信朋友圈。翻阅全网,没有找到这个api。于是开始各种推测。客户朋友圈叫timeLine,微信好友shareWechat开头的,那惯性来说就是 shareWechatTimeLine。结果全网没有搜到这个api。尼玛这居然不按常规出牌。这时将目标转移到了人家的编码上,作为程序员要具备良好的爬虫能力。最后在大佬的带领下,终于找到了jsApiList属性。还是从timeLime下手,马上搜到了 shareTimeLime,很是欣慰,感觉离成功只有一步之遥了。然后再去企微文档 全局搜索shareTimeLime,还是没有找到。脑海中第一个想到微信文档,毕竟一家人嘛。好家伙,微信分享到朋友圈的api 是onMenuShareTimeline,有几分相似了。那就上代码去测试。结果 验证了api 就是shareTimeLime

// 自定义转发到微信朋友圈
wx.invoke( "shareTimeline", 
    {...}, 
    function(res) {
    if (res.err_msg == "shareTimeline:ok") {
        //
    }
  }
);

来个人给我解释下吧,为啥文档没有这个api。。。

额外大礼包

  • mac环境下,企微侧边栏分享消息到当前会话,小程序类型的imgUrl属性,假如图片地址包含中文,需要encode一下,否则分享出去的小程序链接,图片无法展示。

  • window 环境下,企微JS文件1.4.0 版本,报错 agentConfig方法找不到