由于项目是放在微信公众号中运行,所有用到微信js-sdk,做图片上传、跟支付。下面是使用过程中碰到的一些问题。
1、首先,是引入微信js-sdk,因为ionic2 用的是typeScript,文件是.ts,所以引入js-sdk也是个问题。我们在src/index.html引入微信js-sdk
![](https://img.haomeiwen.com/i6259044/2ecd7471a200cac7.png)
2、在src/app目录下创建wechat.d.ts文件(自定义)
![](https://img.haomeiwen.com/i6259044/13904a7f01dccdef.png)
在wechat.d.ts中声明全局变量 declare var wx:any;
![](https://img.haomeiwen.com/i6259044/eb819027c366833b.png)
3、在需要使用到微信图片上传的页面引入wechat.d.ts文件
![](https://img.haomeiwen.com/i6259044/5eb78c01a94e2216.png)
注意三个‘///’,还有文件的路径。打印我们声明在wechat.d.ts中的wx
![](https://img.haomeiwen.com/i6259044/c86109737db2b46c.png)
4、在使用的页面中首先使用config接口验证配置
![](https://img.haomeiwen.com/i6259044/dc3cc849f8dc5c48.png)
成功,可以在控制台中查看jweixin-1.2.0.js返回的信息
![](https://img.haomeiwen.com/i6259044/6a50d93e101bfbc5.png)
而且开启调试模式会弹出{“errMsg”:“config:ok”}
5、使用wx.chooseImage调起微信图库、拍照接口
![](https://img.haomeiwen.com/i6259044/079b6071b5e9c65b.png)
这里需要注意两个地方,第一是__self__我把当前类赋值给它,方便我们给模板传值,如果在wx.chooseImage中直接用this,会调用wx对象的属性或者方法。
第二是bypassSecurityTrustResourceUrl(localIds);这个是用来通过ionic2 模板赋值的安全机制。使用它我们才能正确的显示图片。因为localIds是可以直接拿来给img 的src赋值的。
不过滤掉安全机制,传到页面的src就会变成<imgsrc="unsafe:wxLocalResource://imageid123456789987654321",给我们的路径多个unsafe,而我们需要的是它后面的只就可以里,加上它图片是坏的。
那么我们怎么使用bypassSecurityTrustResourceUrl()呢
第一个import {DomSanitizer} from '@angular/platform-browser';
![](https://img.haomeiwen.com/i6259044/620336c0ec16c3e8.png)
第二个在构造函数中声明 public sanitizer:DomSanitizer。就像这样
![](https://img.haomeiwen.com/i6259044/1d7da3ff69828956.png)
6、微信后端可能用到的app签名,需要与在微信公众号填写的app签名一致。
打开微信.开放平台官网 在资源中心--资源下载中找到Android资源下载
![](https://img.haomeiwen.com/i6259044/701238b5883ed51b.png)
拉到最下面
![](https://img.haomeiwen.com/i6259044/244673193c24cccc.png)
这是一个手机应用,需要安装到手机。成功安装并打开
![](https://img.haomeiwen.com/i6259044/7998cd18c00b8ea4.png)
要查签名,需要用到app的包名,查看app的包名在项目config.xml中查看
![](https://img.haomeiwen.com/i6259044/709a701f131569ff.png)
最后把包名输入微信app签名查看工具(需要打包成app并安装到手机才能看到。)
![](https://img.haomeiwen.com/i6259044/e1548905a6cfca14.png)
使用支付功能,直接使用wx.chooseWXPay接口
![](https://img.haomeiwen.com/i6259044/c766ba7679943759.png)
网友评论
服务器只放WWW的文件,没有启动屏,有也不要
main.js 只有800多K
图片尽量切小
还可以压缩软件压缩代码
如果还是不行,那就没辙了
<img src="{{imgs[i]}}">
<img [src]="img" tappable >
我尝试过这两种写法,都不行。
1.给js后面加时间戳;
2.加个刷新按钮,点击的时候调用 window,location.reload(true)也不行
3.我把js名字改了也是不行
4.微信的自带的刷新也不行