收藏官网首页
查看: 20065|回复: 5

微信应用开发流程

562

主题

1222

帖子

8127

积分

版主

Rank: 7Rank: 7Rank: 7

积分
8127
跳转到指定楼层
楼主
发表于 2016-7-7 15:42:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
教您5分钟接入机智云,实现傻瓜式开发
一、微信应用开发流程概述
如果开发者有通过微信公众平台作为与最终消费者的交互界面的需求,您可以通过阅读本文档了解如何借助机智云以及微信公众号、微信硬件平台进行开发。由于基于微信公众号进行硬件设备的接入、控制需要与多个平台交互。所以,有必要对每个平台的作用有清晰的了解。
总体接入流程图


机智云
如图①在微信接入业务场景中,通过开发者中心(site.gizwits.com)的图形化界面定义设备功能,机智云自动生成设备MCU与通信模组之间的串口通信协议,开发者根据协议文档即可实现设备的联网能力。
如图②部分,设备接入机智云后,机智云提供了面向微信应用的API,提供传输设备数据到应用、应用向设备发起的控制信息的功能。
厂商服务器
厂商服务器是厂商为了满足自己的微信应用,独立部署的WEB系统。该系统通过机智云平台提供的API进行与设备的数据、控制的实时通讯,解决智能硬件接入的需求;通过访问微信公众号平台的API实现以微信为渠道服务厂商最终消费者的需求。
首先,开发者可以为自己的应用设计个性化的HTML交互界面与功能。(如图③④部分)

微信服务器
微信服务器主要为设备与厂商服务器之间的通信提供了一系列的接口,主要包括微信用户账号与设备的绑定/解绑定、接受/发送设备消息等,具体接口及使用方法可查看微信官方文档,微信最近推出了微信硬件平台,在做微信接入前需要仔细了解微信公众号与微信硬件平台,提供的功能要在不断完善。
微信客户端
微信客户端提供了最终与用户交互的操作界面,可以理解为就是一个运行在手机的浏览器,只不过是运行在微信公众号这套体系下。开发者可通过自己申请的公众号管理后台配置自定义的菜单


二、了解微信了解微信公众号平台
具体内容请参考微信公众平台

1、机智云QQ群: 287087942
机智云爱好者-APP开发群: 599735135
QQ群目前非常活跃,欢迎大家参与进来,交流,讨论,答疑,解惑~~
2、机智云微信公众号: 机智云 gizwits /   机智云智能宠物屋go-kit
关注机智云Gizwits官方公众号随时掌握最新资讯和活动信息

8

主题

38

帖子

1万

积分

论坛元老

Rank: 8Rank: 8

积分
19937
沙发
发表于 2016-9-4 22:41:46 | 只看该作者
有没有厂商服务器参考项目,或者服务器开源代码?

562

主题

1222

帖子

8127

积分

版主

Rank: 7Rank: 7Rank: 7

积分
8127
板凳
 楼主| 发表于 2016-9-5 09:27:57 | 只看该作者
夏天罂粟 发表于 2016-9-4 22:41
有没有厂商服务器参考项目,或者服务器开源代码?

基于机智云平台的WIFI产品微信应用快速开发指南
目录
1、前言        1
2、微信开发入门        2
2.1、微信开发准备        2
2.2、微信基础开发详细说明        2
3、微信与机智云相结合的硬件开发        4
3.1机智云硬件开发准备        4
3.2、微信硬件开发准备        4
3.3、硬件开发        5
附录一、微信开发及其机智云开发相关文档的集锦        6

1、前言
第一次接触微信开发,做的第一个应用在本人阅读了差不多十多万字的微信开发文档和硬件开发文档以及机智云平台的开发文档,同时在公司同事和身边做微信开发的朋友的帮助下终于搞定。在此表示感谢。
本文基于机智云平台作为第三方硬件云平台,以带有WIFI通讯模块的产品设备的应用开发为例,介绍整个微信硬件实际开发过程中需要注意的细节以及在开发过程中所遇到的值得大家注意的问题。本文不会照搬微信开发文档和机智云开发文档,故读者还是需要仔细阅读这些文档。

2、微信开发入门

2.1、微信开发准备
第一步、注册订阅类个人公众号,成为开发者。
第二步、成为开发者以后,进入开发者工具,申请一个公众平台测试账号,它拥有微信平台所有接口的权限。
第三步、进入测试号-接口配置信息对服务器进行配置。这里必须有一个可供外网访问的服务器资源。填写URL和自定义的token,点击“提交”按钮,如果服务器能正确响应验证,则配置成功。详细细节见3.2.1。

2.2、微信基础开发详细说明
2.2.1、微信消息入口与接口凭据
           1、微信的消息入口就是开发准备的第三步需要填写的URL。而且这个URL还是能可供外网访问的。首先我们在开发阶段就没必要去申请服务器和域名。这里我推荐使用一个反向代理的工具ngrok。
当然使用国内ngrok响应比较快,这里我推荐链接http://www.qydev.com/
附加说明一下:os x系统开发时启用ngrok命令时去掉“=”用空格代替即可成功执行。
同时吐槽一下,百度ngrok关键词,排名第一的Sunny-ngrok千万别用,已经被微信加入黑名单啦。
          验证URL地址有效性,如果你是用Java开发的,请百度一下,就会有很多现成示例代码参详。
          然后接收微信发送过来的消息入口都在此下面,除验证URL地址有效性,微信使用的GET请求,其他的所有均使用POST请求。
微信消息的接收与推送为xml格式,其中主要关注MsgType与Event即可。
        2、接口凭据 access_token
        微信基础参数,很多接口都会用到这个。注意access_token的刷新。还是引用一段微信文档中的原文吧。如果第三方不使用中控服务器,而是选择各个业务逻辑点各自去刷新access_token,那么就可能会产生冲突,导致服务不稳定。故刷新是可以专门用一个服务去刷新access_token。推荐参考一个用Python编写的自动刷新access_token的超轻量级服务TokenBoy。源码及其服务使用方法参见https://github.com/alexazhou/TokenBoy

2.2.2、创建自定义菜单
微信开发文档说得很详尽,但是本人开发的时候遇到一点点小挫折,我是拿网上的示例代码直接运行创建菜单,不过我是一直打开测试公众号的,不过却怎么也没有。后来请教同事后才知道,需要清除一下缓存,重新打开微信进入测试公众号就有啦。如果不清除缓存,你可以先取消关注,再重新关注一下测试公众号进入就能看到刚创建的菜单啦。

2.2.3、网页授权
         首先在网页服务-网页账号-OAuth2.0网页授权中配置,取接口配置的域名部分即可,注意该域名不用加http。测试公众号可以使用ip地址,但正式的公众号就仅支持域名。
同样网页授权的步骤开发文档也讲得非常详尽,但是如何引导用户进入授权页面进行授权,微信开发文档并没有说得很清楚。下面是本人的两种处理方式。第一种,在创建菜单的时候,把view类型的每个菜单都定义成回调redirect_uri的微信规定的格式;第二种便是URL请求到达服务器,有服务器自行请求微信服务器执行网页授权的处理,这样可以免去创建那么长一大堆字符串URL地址的麻烦。
        在这里本人遇到的坑是我在使用ngrok反向代理的时候,使用了sunny提供的服务,域名为ngrok.cc。一级页面都可以使用微信正常访问,从该页面跳转到另一个页面的时候却出现了“非微信官方网页 将由微信转换为手机预览模式”这样的提示。经过了几天的资料查询,朋友的询问,甚至把OAuth2.0的授权都了解得彻彻底底,还是无法解决。不过最后只是灵光一闪,我换了一个qydev.com的域名代理,一切问题都迎然而解。

2.2.4、微信开放的JS接口
如果要使用微信开发的js接口,请先配置JS接口安全域名。根据开发文档说明通过config接口注入权限验证配置。这是需要用到jsapi_ticket与微信基础的access_token一样需要定时更新,实现方式与access_token完全一样,同样也可以使用TokenBoy服务。
这里需要特别说明的是因为是硬件开发,需要用到微信硬件开发的js api。微信硬件jsapi必须在config中配置beta:true这个选项, 这里需要注意,因为是微信开发文档中没有提及的。

3、微信与机智云相结合的硬件开发
3.1、机智云硬件开发准备
第一步、创建机智云开发者账号
第二步、点击创建新产品按钮根据提示创建产品。
第三步、在设备列表中选择刚创建的产品,点击进入后选择数据点,按要求新建数据点。注:机智云中数据点即与该设备相关的数据属性。

3.2、微信硬件开发准备
第一步、功能服务-设备功能-设置进入设备管理界面,点击添加产品。
第二步、添加产品相关信息并提交。其中需要注意在“选择接入方案”请选择第二个“平台基础接入方案”,因为本文我们是以对接机智云第三方硬件平台进行开发。注意后面的说明-设备不对接微信硬件云,设备消息将以xml格式发送到开发者在公众平台/基本配置填写的服务器地址。即在设备成功接入微信的那一刻会把设备的相关信息以xml的形式发送到服务器。本文以WIFI产品为例,那连接类型自然选择wifi,产品连接能力选择wifi和局域网发现。
第三步、产品添加成功后会自动生成一个相应的产品编号product_id,使用该编号对该产品进行授权即可。

3.3、硬件开发3.3.1、新的微信设备授权接口
之所以为新的设备授权接口是因为以前微信授权是要针对每个设备的deviceid都进行授权,而新的授权接口同一类型设备有微信自动生成一个相同的微信的deviceid及其二维码,然后在进行设备的授权,注意授权用到的did是微信生成的deviceid。请注意op_type为0的时候,必须填写 product_id 字段,请开发者必须注意。

3.3.2、机智云开发
1.匿名注册,与设备绑定
使用微信的OpenId作为唯一标识,生成匿名用户提供uid与token,获取访问机智云的访问凭证。只有完成的第一步才能进行后面绑定设备的操作。机智云绑定设备的接口中的appid为机智云平台对于设备产品绑定的应用appid,而其中header参数的X-Gizwits-Signature 中签名算法所涉及的product_secret即云平台对应产品的产品密钥。
注意,设备绑定的时候请选择使用mac地址绑定方式,老的passcode绑定方式不适合wifi 产品,如果是虚拟设备的mac地址为“virtual:site”,不会经过机智云的mac校验的,也是可以绑定成功的。

2、与云端进行Web Socket交互
通过机智云开发的接口获取用户绑定的设备列表,然后点击在线的设备,即可直接通过web socket连接云端获取该设备的数据。
现在简单介绍一下获取设备数据的一个流程:
Ø 确认设备在线,通过web socket方式与云端连接。
Ø 用户订阅了已绑定的设备,才可以获取机智云相关设备的数据。
Ø 使用"cmd": "c2s_read"(前提是在用户登录的时候 "p0_type"为"attrs_v4")指令就可以使客户端浏览器与云端进行交互,及时获取设备数据,设备数据有任何变化,客户端也会实时收到其设备变化的数据。
Ø 若需要修改设备的某些数据,或者控制设备,可以使用机智云的gizwits open api。
Ø 若业务中需要统计设备的某些数据,甚至根据数据做出一些提示的需求,有些需求可以直接使用gizwits open api,如果还不能满足需求的话可以使用gdms中的Enterprise Api。或者使用服务器在每日结束的时候记录设备相关数据。

附录一、微信开发及其机智云开发相关文档的集锦
让开发者可以快速而准确地有目的性地阅读与开发相关的重要性的文档。
1) 服务器配置及URL的地址验证的开发文档参考链接:https://mp.weixin.qq.com/wiki?t= ... 9&token=&lang=zh_CN
2) 获取接口凭据 access_token的开发文档参考链接:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140183&token=&lang=zh_CN
4) 接收和推送微信消息的开发文档参考链接:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140453&token=&lang=zh_CN
7) 基于机智云开发的微信应用开发指南文档参考链接:http://docs.gizwits.com/hc/kb/article/144497
8) 机智云open api  详细说明文档链接1:http://site.gizwits.com/zh-cn/document/openplatform/i_05_openapi/                               链接2:http://docs.gizwits.apiary.io/#reference/api-for-apps
9) 机智云web socket api  说明文档链接:http://site.gizwits.com/zh-cn/document/openplatform/i_051_websocket_api/
10) 机智云Enterprise api 说明文档链接:http://docs.gdms.apiary.io/#reference/4/wifi/retrieve-aggregated-data
11) 机智云微信应用快速开发指南参考链接:http://club.gizwits.com/forum.php?mod=viewthread&tid=2729&extra=page%3D1
附件说明:该文档中与设备交互的开发流程图值得参考。文中有部分开发过程与本文有出入,比如授权使用的是新的授权接口,mac地址也没有设置成与设备id相同。文中所涉及的封装的sdk 地址如下https://github.com/gizwits
使用Java作为服务器开发微信应用的开发人员可以参考一下openapi-sdk-java与gizwits-wechat-js-sdk两个项目。

1、机智云QQ群: 287087942
机智云爱好者-APP开发群: 599735135
QQ群目前非常活跃,欢迎大家参与进来,交流,讨论,答疑,解惑~~
2、机智云微信公众号: 机智云 gizwits /   机智云智能宠物屋go-kit
关注机智云Gizwits官方公众号随时掌握最新资讯和活动信息

8

主题

38

帖子

1万

积分

论坛元老

Rank: 8Rank: 8

积分
19937
地板
发表于 2016-9-5 14:00:34 | 只看该作者
Genius 发表于 2016-9-5 09:27
基于机智云平台的WIFI产品微信应用快速开发指南目录1、前言        12、微信开发入门        22.1、微信 ...

谢谢!!

0

主题

2

帖子

6

积分

新手上路

Rank: 1

积分
6
6#
发表于 2016-10-28 13:35:30 | 只看该作者
谢谢楼主,我在想,能不能找一个帮我开发把我的硬件连接到微信上面的人。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

加入Q群 返回顶部

版权与免责声明 © 2006-2024 Gizwits IoT Technology Co., Ltd. ( 粤ICP备11090211号 )

快速回复 返回顶部 返回列表