作者:小飞燕 发布时间:2021-03-11 07:08:05
导语本文整理了全网深受用户关注的个怎样利用微信小程序蓝牙bug经验知识,可以帮助您全面了解代理怎么做,小白也能成为高手,跟随小编一起来看一看吧!
虽然微信小程序蓝牙的开启让很多人兴奋不已,毕竟它的开启让小程序的功能完善了一大步,但是因为蓝牙模块还处于起步阶段,所以还是有很多bug。如何才能利用微信小程序的蓝牙bug玩新花样?开发者还是需要熟悉和掌握蓝牙的相关知识,大家一起学习吧。
微信小程序蓝牙的开发是指基于蓝牙4.0的低功耗蓝牙开发。
通常在不懂蓝牙或者对蓝牙略知一二的朋友眼里,ble往往等同于蓝牙4.0,其实不然。
蓝牙4.0是协议,4.0是协议版本号,蓝牙4.0是sig 2021年6月发布的蓝牙标准。它有两种模式:
1.ble(bluetooth lower energy)只能与4.0协议设备通信,节能且只收发少量数据的设备(如手环、智能体温计)称为低功耗蓝牙;
2.br/edr(基本速率/增强数据速率),向后兼容(能与3.0/2.1/2.0通信),适用于收发数据较多的设备(如耳机、手机、平板等)。这种模式常被称为“传统蓝牙”或“经典蓝牙”;
可以理解为蓝牙4.0协议包含ble,属于蓝牙4.0协议的一部分。
对于小程序蓝牙相关的开发人员来说,要重点学习低功耗的蓝牙,即ble。
1.关贸总协定,当有人提到关贸总协定时,你可以想象它是可行的。
ble技术基于属性传输协议gatt进行通信。简单来说,可以看作是属性传输的应用层协议。
每个设备中有很多“服务”,服务中有很多“特征值”,每个特征有不同的权限(读、写、通知)。
在实际的微信小程序在蓝牙中的数据存储和交换中,是通过读取、写入和通知这些“特征”来实现的。
需要注意的是,除了蓝牙技术联盟定义为标准服务和特性的,硬件设备的开发者也可以自行定义,这是蓝牙开发过程中的一个难点。软件开发者需要从硬件开发者(厂商)那里了解服务的相关功能和特性,比如mi band。哪些服务和特性用来读取步数,哪些用来设置手环振动模式,这些都需要软件开发人员和硬件开发人员之间的沟通和合作。
ble功能的实现都需要特性的操作,主要包括三种类型:
1、读取特征值
2.写特征值
3.特征值变更通知
例如,mi波段的步进计数功能可以通过两种方式实现:
1.每隔一段时间读出步数。
2.实时显示步数,即每一步都更新。
显然,1是通过读取特征值实现的,2是通过通知特征值的变化实现的。分析值值后,即可得出相应的步骤。
了解了ble的基础知识后,可以通过mi band连接微信小程序的例子,进一步熟悉蓝牙小程序的开发:
1.因为我们不是小米的开发者,所以只能对小米运动app进行反编译,获取一些可用的特征数据(step uuid、power uuid、vibration uuid)。
2.通过wx.openbluetoothadapter初始化蓝牙设备。
3.通过wx.getbluetoothadapterstate获取本机蓝牙状态
4.通过wx搜索外设蓝牙。开始蓝牙设备搜索,因为外围设备中必须有其他蓝牙设备。
5.搜索到的蓝牙设备可以通过wx.onbluetoothdevicefound搜索回调事件获得。如果是mi波段生成(设备名称:mi1a),记录设备信息。
6.通过wx.createbleconnection连接到mi波段蓝牙设备
7.通过wx.getbledeviceservices获取蓝牙设备的所有服务服务
8.由于mi频段有很多业务服务,所以需要对每一个业务服务进行循环,通过wx.getbledevicecharacteristics进行格式化、打包、录制,获取业务服务的特性。
9.再次循环显示打包的服务和特性,并匹配上面提到的步骤uuid、power uuid和振动uuid。如果它们匹配,我们将分别记录相应的服务和特征数据。
10.根据上面得到的数据,我们可以在微信小程序和mi band之间交换数据,比如读取手环的步数,发送震动通知,读取手环的剩余电量等等。
以mi band为例,我告诉你如何使用微信小程序的蓝牙bug,而不是导致蓝牙小程序开发失败的bug。这样才能获得足够好的使用小程序的体验。激动吗?来试试吧!
这里是小程序表单提交和开发相关事宜开头的标题,这里是结尾的标题。
关于小程序的形式形式,小编之前已经介绍了开发步骤,但仍有一些重要问题需要注意。接下来我们来看一下小程序表单提交和开发的相关问题。
1.与之前的web php网站相比,小程序个人理解为只是把web放到微信上,使用小程序的固定格式进行布局、事件触发、数据传输和读取,服务器可以用后端语言编写,但所有数据都必须以json的形式返回给小程序。
2.昨天写了登录注册和忘记密码的功能,本质上是一个表单提交操作。所以拿注册函数来写这个例子。
3.目录地图
js文件是逻辑控制的,主要是因为它发送请求,接收数据,json用于此页面的本地配置,并覆盖全局app.json配置。
wxss用于页面样式设置。
wxml是一个页面,相当于html
4.样式和json文件暂时被忽略。我只想看一下表格的提交情况
5.wxml文件代码
注册
注册
忘记密码
6.需要理解几个关键点
a.a.form需要与submit事件绑定。在applet中,属性是bindsubmit。
bindsubmit="formsubmit "这里的formsubmit属性值可以命名为符合规范的任意值,相当于以前html中的onsubmit="formsubmit "。是一个函数名,提交时触发函数事件formsubmit,这个函数是用js写的。
b其他属性和前面的html类似。注意表单必须有name="value ",后端处理和之前一样。比如name="username" php可以用$ _ post ['username']来接收。
c.因为applet没有输入提交按钮,所以每个表单中都应该有一个提交按钮。
此按钮用于打开提交事件。
7.index.js代码
页面({
数据: {
},
formsubmit:函数(e) {
if(e . detail . value . mobile . length==0 | | e . detail . value . password . length==0){
wx.showtoast({
标题:“手机号码或密码不能为空!”,
图标: '加载',工期: 1500
})
settimeout(函数{
wx.hidetoast
},2000)
} else if(e . detail . value . mobile . length!=11){
wx.showtoast({
标题:“请输入11位数字的手机号码!”,
图标: '加载',工期: 1500
})
settimeout(函数{
wx.hidetoast
},2000)
} else if(e . detail . value . password . length 6 | | e . detail . value . password . length;20){
wx.showtoast({
标题:“请输入6-20个密码!”,
图标: '加载',工期: 1500
})
settimeout(函数{
wx.hidetoast
},2000)
} else if(e . detail . value . password!=e.detail.value.repassword){
wx.showtoast({
标题:“两次输入不一致的密码!”,
图标: '加载',工期: 1500
})
settimeout(函数{
wx.hidetoast
},2000)
}else{
wx.request({
url : ' https://shop . yun apply.com/home/log in/register ',header: {
内容类型' : ' application/x-www-form-url encoded '
},
方法: '发布',data : { mobile : e . detail . value . mobile,password : e . detail . value . password },成功:功能(res) {
if(res.data.status==0){
wx.showtoast({
title: res.data.info,图标: '加载',工期: 1500
})
}else{
wx.showtoast({
title: res.data.info,//登录成功。
图标: '成功',工期: 1000
})
}
}
})
}
},
})
8.应该指出的是
页面是放置js对象的必要方法,用于在加载页面时呈现效果
data: {},data对象,设置页面中的数据,前端可以通过读取这个对象中的数据来显示。
formsubmit:函数小程序中的方法都是方法名: function,其中函数可以传入一个参数作为触发当前时间的对象
下面是函数的执行。因为验证太多,我只拿出一部分来理解。
if(e . detail . value . mobile . length==0 | | e . detail . value . password . length==0){
wx.showtoast({
标题:“手机号码或密码不能为空!”,
图标: '加载',工期: 1500
})
e这里是触发当前事件的对象。类似于html onclick="foo (this)"这个对象,小程序封装了很多内置的调用方法。e.detail.value.mobile是名称为“mobile”的对象的值。e.detail.value.mobile.length就是这个值的长度。
showtoast类似js中的alert,有一个弹出框,其中标题是显示信息,图标是弹出的图标状态。目前只有加载和成功两种状态。杜阿特
ion是弹出框显示在屏幕上的时间。
9.重点来了
wx.request({
url : ' https://shop.com/home/log in/register ',header: {
内容类型' : ' application/x-www-form-url encoded '
},
方法: '发布',data : { mobile : e . detail . value . mobile,password : e . detail . value . password },成功:功能(res) {
if(res.data.status==0){
wx.showtoast({
title: res.data.info,图标: '加载',工期: 1500
})
}else{
wx.showtoast({
title: res.data.info,//登录成功。
图标: '成功',工期: 1000
})
}
},
fail:function{
wx.showtoast({
标题:“服务器网络错误!”,
图标: '加载',工期: 1500
})
}
})
wx.request({})是一个小程序发起的https请求。请注意http是不可接受的。
这里
a.url是您请求的url。例如,在前端,在post表单中,action=' index.php ',这里的index.php是相对路径,applet请求的url必须是网络的路径。
例如:https://shop.com/home/login/register
b.
header: {
内容类型' : ' application/x-www-form-url encoded '
},
因为post和get传输数据的方式不同,所以post的标头必须是
内容类型' : ' application/x-www-form-url encoded '
get的标头可以是“accept”:“application/json”
c.务必指定方法:“post”默认为“get”,并保持大写
data : { mobile : e . detail . value . mobile,password : e . detail . value . password },这里的数据是指通过邮件发送到服务器的数据是以{name:value}的形式传输的
d.成功的回调函数
成功:功能(res) {
if(res.data.status==0){
wx.showtoast({
title: res.data.info,图标: '加载',工期: 1500
})
}else{
wx.showtoast({
title: res.data.info,图标: '成功',工期: 1000
})
}
}
e.success:function是请求状态被成功触发时的事件,也就是在200,需要注意的是请求成功不是操作成功,请求只是这个程序和服务器之间的连接。
fail:function是由不成功的网络请求触发的事件。
f.if(res.data.status==0){
wx.showtoast({
title: res.data.info,图标: '加载',工期: 1500
})
}else{
wx.showtoast({
title: res.data.info,//登录成功。
图标: '成功',工期: 1000
})
}
这里的一段代码与php后端程序有关。具体流程如下。
1.post使用数据到https://shop.com/home/login/register.的接口如果你用过thinkphp你就知道是home模块登录控制下的注册方式
2.2.register方法根据来自post和数据库的数据执行二次验证。如果操作成功,返回什么,如果操作失败,返回什么?
3.后端php代码如下:
logincontroller.class.php主计长
/**
*用户注册
*/
公共功能寄存器
{
if (is_post) {
$ user=d(' user ');
if(!$ user-;create($_post,4)) {
$ this-;错误($ user-;geterror,”,true);
} else {
if($ user-;注册){
$ this-;成功('注册成功!','',true);
}else{
$ this-;错误('注册失败!','',true);
}
}
}
}
模型
usermodel.class.php的注册方法
公共功能寄存器
{
$ mobile=i(' post . mobile ');
$ password=i(' post . password ');
$ res=d(' user ')-;add(array(
mobile '=;$mobile,密码'=;md5($password),modify time '=;日期(' y-m-d h:i:s ')
));
return $ res
}
除了小程序表单表单的提交过程,以上提到了表单开发的一些要点,很重要。希望大家认真阅读学习。如果想获得更多相关信息,请关注源社网的小节目频道。
上一篇:微信小程序扫码支付功能怎么申请
下一篇:如何实现小程序商业价值
1702位用户关注
410位用户关注
865位用户关注
287位用户关注
929位用户关注
266位用户关注
78位用户关注
71位用户关注
78位用户关注
0位用户关注
32位用户关注
84位用户关注