如你所见,这是一个关于小米手环7的含有伴生服务的小程序的开发教程
先让我们来了解一下伴生服务包含了什么
Messaging API ---- 伴生服务通过 Messaging API 模块使用 Zepp 蓝牙通信的能力,与设备应用进行通信
Fetch API ---- Fetch API 可以用于在 JS 中发送 HTTP 请求,「伴生服务」中的 fetch() 用法可以参考FetchAPI - MDN
Settings Storage API ---- settingsStorage API 可以将数据持久化存储于 Zepp App 中
其中,“设备应用”指的是在米环7上的应用,“伴生服务”指的是在Zepp App中静默运行的js代码,“设置应用”指的是应用在Zepp App上的设置页面
如何实现蓝牙通信
准备工作
将官方示例中任意一个的shared文件夹移到你的项目根目录中,以便调用
在app.js中加入以下代码:
建立连接
在app.js与app-side中对messageBuilder进行实例化,如下所示
app.js:
app-side:
不需要全抄,只需要参考
后续通信
连接建立之后,后续的通信基于事件机制,两端都有监听和派发的方法
page.js:
在顶端加入
监听伴生服务发来的信息:
发送信息到伴生服务:
App-side:
在顶端加入
发送信息到手环端
接收从手环端发来的信息
这是第一篇,明天从学校回来再更新后续两个api的用法,更新完之后可能会整合成一篇文章
二改:
墨伊知道可能有人找不到shared,所以帮你们打包好了,快说谢谢墨伊
先让我们来了解一下伴生服务包含了什么
Messaging API ---- 伴生服务通过 Messaging API 模块使用 Zepp 蓝牙通信的能力,与设备应用进行通信
Fetch API ---- Fetch API 可以用于在 JS 中发送 HTTP 请求,「伴生服务」中的 fetch() 用法可以参考FetchAPI - MDN
Settings Storage API ---- settingsStorage API 可以将数据持久化存储于 Zepp App 中
其中,“设备应用”指的是在米环7上的应用,“伴生服务”指的是在Zepp App中静默运行的js代码,“设置应用”指的是应用在Zepp App上的设置页面
如何实现蓝牙通信
准备工作
将官方示例中任意一个的shared文件夹移到你的项目根目录中,以便调用
在app.js中加入以下代码:
import './shared/device-polyfill'
建立连接
在app.js与app-side中对messageBuilder进行实例化,如下所示
app.js:
import './shared/device-polyfill'
import { MessageBuilder } from './shared/message'
// need to pass in the appId
const appId = 27280
const messageBuilder = new MessageBuilder({ appId })
App({
globalData: {
messageBuilder: messageBuilder,
},
onCreate(options) {
console.log('app on create invoke')
// establish connection
messageBuilder.connect()
},
onDestroy(options) {
console.log('app on destroy invoke')
messageBuilder.disConnect()
}
})
app-side:
import { MessageBuilder } from '../shared/message'
const messageBuilder = new MessageBuilder()
AppSideService({
onInit() {
// establish connection
messageBuilder.listen(() => {})
},
})
不需要全抄,只需要参考
后续通信
连接建立之后,后续的通信基于事件机制,两端都有监听和派发的方法
page.js:
在顶端加入
const { messageBuilder } = getApp()._options.globalData
监听伴生服务发来的信息:
messageBuilder.on('call',({payload : buf}) =>{
//buf是伴生服务传来的信息,此时还是二进制数据流,需要转换
const data = messageBuilder.buf2Json(buf)
}
发送信息到伴生服务:
messageBuilder.request({
method:'GET',
params:{
index:0
}
})
//根据后续需求决定是否需要异步获取返回的数据
App-side:
在顶端加入
import { MessageBuilder } from '../shared/message'
const messageBuilder = new MessageBuilder()
发送信息到手环端
messageBuilder.call({ text: 'Hello Zepp OS' })
接收从手环端发来的信息
messageBuilder.on('request',(ctx)=>{
//此时,ctx是从手环端发来的信息,同样是二进制数据流,需要转换
const payload = messageBuilder.buf2Json(ctx.request.payload)
//根据需求决定是否需要返回信息,返回使用ctx.response()
})
这是第一篇,明天从学校回来再更新后续两个api的用法,更新完之后可能会整合成一篇文章
二改:
墨伊知道可能有人找不到shared,所以帮你们打包好了,快说谢谢墨伊
附件
最后编辑: