- 微信小程序内嵌webview相关知识点整理
前言 随着微信小程序的广泛应用,越来越多的商家选择将营销阵营选择迁移到了小程序中,但受其小程序体积限制的影响,不能够完全满足商户的要求,应运而生的web-view组件很好的解决的这一问题。一方面内嵌web-view能够直接运行在小程序中,大大减少了商户的开发成本,另一方面能够实现小程序与h5的跳转,有良好的扩展性,方便商户多端间引流。 一、web-view内嵌h5与传统小程序对比 通过查找相关资料发现,内嵌web-view和微信小程序在离线能力、页面切换体验、二次渲染,操作响应和开发灵活性上有如下对比,在不同场景下可能性能上有些许出入,仅供参考。 [图片] 表格来源:https://segmentfault.com/a/1190000017752299 从上表中可以对比出 H5 相较于小程序的优缺点,开发者可以根据实际需要选择。此外,使用web-view还有以下优点: (1)己方账号(第三方)与小程序openId/UnionId的关联绑定,实现免登陆 比如你是某门户网站,需要识别自己小程序上的用户与网站用户的关系,可以通过三种方法绑定关系,公众号,小程序原生,小程序web-view内嵌跳转三种方法。 (2)内嵌H5的富文本,减少重复开发 比如你是门户网站,社区,以往有大量的新闻和帖子,里面带了各种css样式的富文本,音视频自定义的点击事件等,小程序的原生组件可能无法兼容,这时候直接内嵌这些H5新闻,将会大大降低开发成本。 (3)热更新,减少发布审核 内嵌H5可以减少频繁提交小程序审核,商户只需要重新发布h5的版本,就可以更新内嵌web-view的内容。 <script type="text/javascript" src='//res.wx.qq.com/open/js/jweixin-1.4.0.js'></script 3.4 web-view和小程序间通信 官方给出了两种通信方法。 1、postMessage 通信 在 H5 中需要先用 wx.miniProgram.postMessage 接口,把需要分享的信息,推送给小程序。 在用户点击了小程序后退、组件销毁、分享这些特殊事件之后,小程序页面通过 bindmessage 绑定的函数读取 post 信息。 2、设置 web-view 组件的 URL 通信 H5 跳转小程序: // h5中跳转小程序 navigateToWeixin() { wx.miniProgram.navigateTo({url: '/pages/shop/index'}); } // 小程序跳转h5--第一步 <view> <web-view src="{{url}}" ></web-view> </view> // 小程序跳转h5--第二步:在小程序的 js 文件中设置通过 URL 以问号传参的方式传入参数到 H5中 if(!option.page){ this.setData({ url: `${this.data.url}?${test}` }); } else { this.setData({ url: `${this.data.url}${option.page}?${test}` }); } 四、内嵌web-view调试解决方案 首先通过微信开发者工具打开,这里url本地调试可以跟局域网链接,开发者工具可以实时显示,如果跟的是线上链接,可能只能通过预览扫码。 [图片] 右键点击页面,左上角会出现调试,可以在右图的调试器中对h5进行调试。 [图片] 五、踩过的小坑 (1)H5唤醒一些小程序API有一定的延时,0.3~1秒; (2)请调用小程序专用的JSSDK,公众号中的JSSDK不通用; (3)web-view一定是撑满全屏的,自定义顶部菜单,悬浮的都没用; (4)web-view后边跟的h5链接,必须要url转义,否则会和小程序自身的符号定义冲突,可能识别不到?后的参数; (5)H5控制小程序的跳转路径必须是“/”开头,如 “/pages/xxx/xxx”,且路径必须在app.json里有,地址错误的话,有时不报错。 (6)postMessage的json必须是data开始,不然接收不到数据。 (7)bindmessage相关: 小程序后退:使用接口名 wx.miniProgram.navigateTo,wx.miniProgram.navigateBack,wx.miniProgram.switchTab 等切换小程序页面/场景的API时候都会触发。分享:这个就是当你点分享小程序的时候,会接受到H5之前发送的postMessage。组件销毁,web-view组件销毁,类似 wx.miniProgram.redirectTo 都会触发。(8)内嵌h5跳转小程序是有严重缓存的,比如:h5页面有计时器,跳转小程序后计时器依然会计时,可以通过在url后面加时间戳的方式解决。 还有小程序已经关闭,H5自带的背景音乐仍然在手机后台播放,可以通过浏览器标签页被隐藏或显示的时候会触发visibilitychange(页面可见性状态)事件解决。 六、总结 看到这里,相信大家对于内嵌web-view已经有了大致的了解,我们主要对内嵌web-view与传统小程序进行对比,分析了内嵌web-view的优缺点,其次对如何配置内嵌web-view进行了阐述,然后对实战中内嵌web-view如何调试进行了示例,最后对实战中可能踩坑和注意的小点进行了友情提示。所以如果本篇文章有帮助到你的话,小编会非常欣慰,欢迎点赞和转发呦~
2020-06-16 - php使用img_sec_check内容安全接口实例
/* * 调用微信接口验证图片是否合法 * $data 数组 / public function Is_img() { $img_url = “通过网址访问的图片地址”; $tokenArr = json_decode($this->send_post_token(“GET”)); $access_token = $tokenArr->access_token; $info = $this->imgSecCheck($access_token,$img_url); if($info[‘errcode’]){ return false; }else{ return true; } } / * 检测图片 * $img 是可以通过网址访问的图片地址 * $access_token / public function imgSecCheck($access_token,$img) { $img = file_get_contents($img); $filePath = ‘/dev/shm/tmp1.png’; file_put_contents($filePath, $img); $obj = new \CURLFile(realpath($filePath)); $obj->setMimeType(“image/jpeg”); $file[‘media’] = $obj; $url = “https://api.weixin.qq.com/wxa/img_sec_check?acces s_token=$access_token”; $info = $this->http_request($url,$file); return json_decode($info,true); } / * 获取access_token */ function send_post_token($method=‘POST’) { //获取ACCESS_TOKEN $this->appid = ‘小程序appid’; $this->secret = ‘小程序的secret’; $url = “https://api.weixin.qq.com/cgi-bin/token?grant_type= client_credential&appid=”.$this->appid."&secret=".$t his->secret; $post_data = array(); $postdata = http_build_query($post_data); $options = array( ‘http’ => array( ‘method’ => $method, //or GET ‘header’ => ‘Content-type:application/x-www-form-urle ncoded’, ‘content’ => $postdata, ‘timeout’ => 15 * 60 // 超时时间(单位:s) ) ); $context = stream_context_create($options); $result = file_get_contents($url, false, $context); return $result; }
2019-10-12 - 如果我是微信产品经理,我有一个绝妙的点子……
微信一直在更新一直在优化,近期的微信7.0更算是微信少有的大动作。 有人说由于今日头条系产品的影响,微信已经不再克制或者说微信已经沉不住气了。 我认为这还完全不至于,但是不得不说微信为了保持轻巧的身材,有些必须微信自己来做的事却没有去做。 今天我想说的这个绝妙点子是:“微信群吧”。 简单来说,就是每个微信群内嵌一个百度帖吧。 微信群的重要性不言而喻。 现在许多网友离不开微信最重要的原因之一不是朋友圈而是微信群。 微信群已经成为最重要的微信生态组织部分之一。 然而微信群有一大遗憾:无法沉淀内容。 利用微信现有生态可以用小程序实现吗? 我认为可以做到,但是这件事第三方做效果终归不理想。 更应该微信自己去做,才能完美地与微信群相融合。 那么这个“微信群吧”具体可以实现哪些功能和起到哪些作用呢? 我这里略微总结了一下: 1、提取群聊精华,把优质内容沉淀为帖子永久保存,供群友随时查看。 2、打造群视频、群相册,增强群内的互动性,更加方便老百姓生活。 3、弥补了微信聊天记录无法即时保存的缺点,可以以群为单位收藏关键性内容。本来个人就有收藏功能,那么群收藏有何意义?咱们这么想,微信群可能是一个单位全体员工、可能是一个家庭全体成员、也可能是某个项目的讨论组成员,那么无论对于单位、家庭、还是项目来说,都是意义重大的。 上面说的是对网友的好处,那么微信自身去做这件事情有什么好处呢? 1、“微信群吧”可以成为与看一看信息流结合的重大入口。微信7.0的重头戏除了即可视频就是看一看,可是看一看说实话有几个人会点进去看一看呢?但是克制的微信又不能把看一看再放到更醒目位置,怕破坏微信现有生态(现在我就有些迷茫,我到底是看看一看还是看朋友圈呢?选择太多不是好事,现在的位置比较尴尬,感觉看一看微信会再度大更新)。 现在如果有了微信群吧,直接在帖子底部推荐看一看的内容就可以实现微信的信息流梦了。也可以干脆撇看现在的好友推荐看一看,打造微信群版看一看,根据群友兴趣推荐。 2、将会成为微信强大流量资源变现的一个不伤用户体验的绝佳入口。朋友圈广告植入的克制,足见微信对纯净生态保护的决心。公众号文章的广告已经做到文中内嵌广告了,但是效果还是不甚理想。而且公众号文章内部不宜太多推荐内容,这点我认同微信的做法。但同时应该看到,腾讯现在也是越来越重视广告业务了,相信这是一个很好的流量变现入口。 3、进一步增强微信平台内容生成和资源整合能力。相信微信公众号的运营者应该能感受微信对于原创的鼓励、对于专辑的不断改进等等举措,这都是为了在微信生态内能产生更优质内容。而今日头条无疑对微信内容生态是一大打击,越来越多的人刷今日头条的时间超过了微信朋友圈。尽管微信很努力,但是这一趋势还是无法避免。这使得许多优质内容都沉淀在了今日头条。而其实微信掌握着绝对优势的通讯工具,怎会如此?这是微信自身应该思考的。不得不说,今日头条沉淀优质内容的能力比微信强,两篇同样阅读量的文章,今日头条的评论数和质量绝对远超微信(微信公众号文章评论的先审后发也可能与监管有关)。微信群明明是微信的一大流量集中地,却无法沉淀出优质内容。微信的优质内容都集中在了公众号和小程序里,都是大部分自媒体创作者。人人都是自媒体,这句话,微信并没有兑现,没错,你身边有几个人开设了公众号呢?即使你开设了公众号,有人看吗?这是微信与今日头条的最大差别。当然,这与他们的生态模式有关,不再多说。不过这里要吐槽的是,微信群这样好的东西,都不利用好来让其自发性的沉淀内容,简直是浪费资源啊!! 最后有人可能会问,百度贴吧并不是什么新鲜事物,为什么要在这个时候重提?现在炙手可热的都是短视频、小程序、区块链之类的!我觉得,真正用心的产品,满足用户的需求,适合用户的需求才是最重要的。盲目去追热点,永远走在别人后面。 本人才疏学浅,欢迎大家来讨论,写下此文也是为了微信这个大平台越来越好用,也希望2019年微信生态越来越好,微信小程序越来越多人使用,谢谢!
2018-12-31 - 我是来吐槽的,顺便说一下官方文档的事,关于video标签的
相信已经有不少人被VIDEO这个标签坑惨了,很多人卡顿,无限加载的问题 官方回答:加个custom-cache="{{false}}"试试 确实加了之后就OK了 然后到现在还是没看到官方文档有更新video标签的这个属性,通篇找不到 我就被坑了好久 然后另一个坑 还是custom-cache="{{false}}" 有很多属性比如objectFit='cover',这种你这样写没问题 custom-cache="false"这样写。。。根本就不会生效! 写了这么久小程序我发现凡是关于boolen值的都必须采用"{{false}}"或者"{{true}}"这种写法 我估计不加大括号是不是就当成字符串啥的解析了? 不是我说官方有自己的一套规则不好 但是还是要注明一下吧 这种要自己试多少遍才知道哪里出了问题。。
2018-08-30