ionic2/3实战-开发微信公众号

微信的各种号

服务号,订阅号,企业号这三个号的配置和开发文档都是一样的.只是这三个号的拥有能力不一样,如服务号每个月只能推送三条消息.订阅号可以每天推送一条消息.更多不同看这里
小程序是微信新出的开发平台.开发需要用微信定义的语言规范,配置也和以上三个号差异大.这里不多说.文档可以看这里

微信开放平台是什么鬼?假如你公司有服务号也有小程序, 现在想要服务号和小程序有关系就要把服务号和小程序绑定在同一个微信开放平台帐号上
小明用他的微信登录你公司的服务号和小程序获取的OpenID(微信用户id)是不一样的.如果服务号和小程序都需要绑定手机号码,就需要小明绑定两次.
既然是同一个公司的产品,就应该区分出是同一个用户,这样同一个用户的资料就可以在不同的产品中共享.
当把服务号和小程序都绑定在一个微信开放平台账号下,就能获取到小明的UnionID.这个ID在服务号和小程序上获取到的值是一样的

  • 现在已经有5个号.分别是服务号,订阅号,企业号,小程序和微信开放平台

如果你用a@xxx.com邮箱申请了服务号,就不能用它申请其他号了
如果你用b@xxx.com邮箱申请了小程序帐号,现在公司要开发第二个小程序.那就需要用c@xxx.com邮箱再申请一个小程序帐号
微信开放平台,小程序等帐号可能需要微信认证.如果需要认证.每次认证费用是300元.如果有你公司有两个小程序需要认证,那你就乖乖交600元

微信公众号开发

  • 微信公众号的开发分两部分

1.公众号开发:公众号有发送消息,设置菜单等功能.这些功能都可以在公众号帐号中设置,也可以通过调用微信的接口用代码开发实现.由于运营公众号的人基本没有开发能力,现在公众号的设置功能已经很全面.没必要通过开发实现这些功能
2.公众号网页开发:公众号一般有许多菜单,有时候点击菜单需要跳转到一个网页.这个网页相当一个移动端web应用,需要完全自主开发.我们用ionic也就是开发这个网页应用

  • ionic微信网页开发主要需要实现的功能

1.调用微信授权.获取用户信息
2.调用微信js-sdk.实现拍照,定位,扫一扫等js-sdk提供的硬件功能

  • ionic微信网页开发需要熟读的文档

1.文档地址链接如果失效,请自行前往微信公众平台查看
2.需要熟读的文档如下图

开发环境准备

用微信扫描二维码即可生成测试帐号.如下图会看到appID和appsecret,这两个字符串用于我们的后台服务器请求微信的服务器.


  • 配置测试帐号的js安全域名

在命令行使用ipconfig查看本机ip地址,如下图我的ip是88.128.18.144


设置JS接口安全域名,如下图填写ip+端口.由于ionic项目默认启动端口是8100,为了方便我这里配置的端口也是8100.注意:不能以http,www开头,也不能以/结尾

如下图,页面滚动条往下拉,还要修改一个地方.

  • 所有需要测试的微信(包括你的)都需要关注测试二维码
  • 由于微信公众号授权和js-sdk等功能需要在微信环境下调用.所以需要下载微信web开发者工具,我下载下来启动白屏,可能和小程序开发工具冲突.于是使用小程序开发工具开发公众号,两个工具很类似

    微信web开发者工具

    小程序web开发工具

  • 用申请微信测试帐号的微信登录开发工具

ionic代码准备

本demo只提供ionic微信公众号基础开发功能和微信JsSdk调用demo,更多demo请查看ionic2_tabs

  • 使用ionic serve启动ionic2_wx模版项目,前提肯定是配置好了ionic开发环境
  • 默认启动地址是http://localhost:8100/.我们使用前面配置的js安全域名(ip+端口)在微信开发工具上访问
  • 初始化JsSdk需要的数据,需要我们自己的服务器请求微信服务器得到


后台说明

  • 我们开发的微信公众号请求的后台是我们自己的服务器,我们的后台服务器通过appIDappsecret去访问微信的服务器,最终还是我们自己的服务器给我们开发的微信公众号返回微信信息
    对微信来说我们的服务器就是第三方.所以在看微信开发文档的时候,第三方指的是我们自己的服务器
  • 微信Java SDK开发文档-微信公众号开发文档
  • 我的测试号配置如下

  • java代码获取微信JsSdk配置代码demo
    @ApiOperation(value = "获取jssdk配置")
    @PostMapping("/jsConfig")
    public ResultBean<WxJsapiSignature> jsConfig(@ApiParam(value = "页面完整url,js安全域名", required = true) @RequestBody String url) {
        WxMpInMemoryConfigStorage config = new WxMpInMemoryConfigStorage();
        config.setAppId("wx8e82d2ea44552544");
        config.setSecret("51e019a9bc09b4a46fb852bfab64d67e");
        WxMpService wxMpService = new WxMpServiceImpl();
        wxMpService.setWxMpConfigStorage(config);
        try {
            WxJsapiSignature wxJsapiSignature = wxMpService.createJsapiSignature(url);
            return ResultBean.success(wxJsapiSignature);
        } catch (WxErrorException e) {
            e.printStackTrace();
        }
        throw new BusinessException("配置生成失败");
    }
  • 在微信开发者工具上调试,如下图微信JsSdk初始化成功就可以调用硬件功能了


微信真机调试

在微信开发工具上调试JsSdk功能有限,如扫一扫,添加照片功能都是模拟

  • 由于微信安全限制,在真机微信上打开ip+端口地址会跳出微信环境使用普通浏览器模式打开页面.如下图1.所以需要域名访问,
  • 配置域名映射到本地ip,如何配置?方法1:看访问自定义的域名
  • 方法2:如下图2,使用natapp生成域名映射到本地ip
  • 域名映射到本地ip后,记得一定要修改js安全域名,否则会报"微信授权回调域名出错"上面已经说了要修改哪里.如下图3,修改完成微信访问域名进行调试.
    图1

    图2

    图3

常见问题

点击返回按钮会退出ionic微信应用

这个问题是因为ionic是单页面应用.默认就是只有一个页面,在微信上点击返回就退出了
解决这个问题要使用ionic3提供的@IonicPage()注解,使用了@IonicPage()的组件,可以使用字符串跳转页面.如 this.navCtrl.push('字符串');

使用域名调试访问很慢

ionic是单页应用,单页应用其中一个缺点就是首屏加载文件大,导致加载慢.
如果你觉得用域名调试加载慢,那就使用npm run build --prod压缩代码.压缩后的代码在www目录下
用tomcat作为服务器访问压缩后的代码.第一步修改tomcat启动端口为8100,第二步修改tomcat默认启动路径为ionic项目www目录绝对路径.如何使用和配置tomcat?看Tomcat使用教程

如何发布ionic微信公众号项目

1.使用npm run build --prod压缩代码,压缩后的代码在www目录下
2.以生产环境用tomcat服务器为例.把整个www目录下的文件拷贝到tomcat目录下.如webapps目录或ROOT目录.Tomcat-简易使用教程
3.真机微信访问tomcat应用发布地址即可

项目发布到了正式环境有bug,怎么调试

用微信开发工具访问正式环境地址进行调试

另外一个同事也想在他的电脑上调试

方式1:修改JS接口安全域名和网页授权回调页面域名为他的电脑ip,并且他的微信要关注测试号二维码
方式2:他自己开通一个新的测试帐号.注意一定要让后台修改appIDappsecret为他新申请的

缓存问题(应用更新后,但是刷新页面没有看到更新,怎么办?)

  • 如下图调用脚本根据文件内容生成hash值,这样每次更新内容生成的文件名不一样,就不存在缓存了。脚本源码

  • 如下以nginx为例服务端配置静态资源缓存策略:不缓存html,长期缓存js、css

# 让html不缓存,js、css和图片长期缓存
# 设置expires会给请求同时添加Cache-Control和Expires请求头

if ($request_filename ~* \.html$){
    expires     -1;
}
if ($request_filename ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$){
    expires    max;
}
  • 最后可以把脚本加入到package.json文件的scripts中,可以使用webstorm的快捷方式运行,可以使用npm run build:prod:browser运行
    "build:prod:browser": "ionic build --prod --engine browser && node ./scripts/use-hashname.js"
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,392评论 25 707
  • title: 微信公众号开发:获取openId和用户信息 tags: 微信公众号 categories: 笔记 ...
    行径行阅读 140,153评论 5 63
  • 开发前首先我们要知道一些概念 各公众号区别:1、订阅号:为媒体和个人提供一种信息传播方式,主要偏于为用户传达资讯(...
    CoderZS阅读 3,179评论 1 19
  • 老猫不是一只猫,老猫是个老头子,一个很早之前就死了老伴的老头子。这一片几个小区的人都认识老猫,因为他是个闲人,而且...
    斑斑的四喜丸子阅读 547评论 0 2
  • 现在是2016年9月17日凌晨一点四十六分,我失眠了。昨晚乔任梁死亡的消息占据了各大网站的热搜,原本我是不相信的...
    微半微半阅读 336评论 0 2