完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
名词解释
AliOS Things: 阿里云智能IoT团队自研的物联网操作系统 HaaS:全称是Hardware as a Service,阿里云智能IoT团队基于AliOS Things系统推出的硬件即服务 HaaS UI:全称是Hardware as a Service User Interface,是源自AliOS Things操作系统上的一套应用&图形解决方案,支持C/C++和 JS两种开发语言 HaaS UI JSAPI扩展 HaaS UI内置的JSAPI为虽然JS提供了调用底层系统能力的接口,例如数据存储、网络管理、文件操作等,但是这些内置的JSAPI不能满足用户所有的开发需求。HaaS UI提供了扩展JSAPI的方法,用户可以根据项目需求和平台能力实现不同的扩展,以满足不同的功能需要。用户如果想要自定义一些JSAPI,可以按照本教程进行扩展。 1. 扩展JSAPI教程 本节内容用于扩展HaaS UI的JSAPI,提供js的扩展能力,下面将介绍一个demo JSAPI的编写步骤。 接口编写时主要有以下步骤:
JSAPI工程目录: aos.mk用于在alios things编译 ├── aos.mk ├── jsapi_demo ├── ExtensionProxyBase.h ├── DemoApiExtension.cpp ├── DemoApiExtension.h └── aos.mk1.1 重要说明
所有扩展的JSAPI在使用前需通过REGISTER_JSAPI()方法注册: extensionProxy->REGISTER_JSAPI(&testApi, moduleName, testApi); 接口实现示例: DemoApiExtension.h,依赖于ExtensionProxyBase.h: #pragma once #include "ExtensionProxyBase.h" // 扩展jsapi时需要include该头文件 using namespace ariver::iot; namespace demo { /** * 异步方法 * @param callbackid naitve回调js方法时的回调id * @param params js调用native方法时的参数,json字符串 */ void testApi1(const std::string& callbackid, const std::string& params); /** * 同步方法 * 同步方法和异步方法写法一模一样,区别在于上层js调用时是同步还是异步. * @param callbackid naitve回调js方法时的回调id * @param params js调用native方法时的参数,json字符串 */ void testApi2(const std::string& callbackid, const std::string& params); /** * jsapi注册方法 * */ extern "C" void testapi_init_jsapis(); }; } // namespace demo DemoApiExtension.cpp: #include "DemoApiExtension.h" namespace falcon { /** * @param callbackid 用于回调js * @param params (必现是json格式) */ void testJSApi1(const std::string& callbackid, const std::string& params) // 异步方法 { /* user code */ printf("Native testJSApi1 called params(%s).n", params.c_str()); /* user code */ // callback ariver::iot::ExtensionProxyBase* extensionProxy = ariver::iot::getJSApiExtensionProxy(); // 必须回调,成功返回成功,失败返回错误码 extensionProxy->postCallback(callbackid, ariver::iot::API_Success, "{"result": "testJSApi1 call success"}"); } /** * @param callbackid 用于回调js * @param params (必现是json格式) */ void testApi2(const std::string& callbackid, const std::string& params) // 同步方法 { printf("%s", ("testApi2 params:" + params + "n").c_str()); /* * 同步方法和异步方法写法一模一样,区别在于上层js调用时是同步还是异步. */ std::string cbParams = "{"paramsToJs":"result2", "otherOutput":222}"; // 必须回调,成功返回成功,失败返回错误码 mProxy->postCallback(callbackid, API_Success, cbParams); } // extern给容器调用初始化 extern "C" void testapi_init_jsapis() { ariver::iot::ExtensionProxyBase* extensionProxy = ariver::iot::getJSApiExtensionProxy(); // call from js like: // import testapi from "$jsapi/testapi"; // testapi.testJSApi1({}, r => {}); extensionProxy->REGISTER_JSAPI(&testJSApi1, testapi, testJSApi1); // param1: apiFunction, param2: module, param3: apiName } } ExtensionProxyBase.h: #pragma once #include #include #include |
|
相关推荐
|
|
只有小组成员才能发言,加入小组>>
【平头哥Sipeed LicheeRV 86开发板试用体验】Waft初体验
15375 浏览 1 评论
13407 浏览 4 评论
【平头哥Sipeed LicheeRV 86开发板试用体验】四、烧写waft系统&搭建waft测试环境
19384 浏览 2 评论
58402 浏览 19 评论
【限时福利】加入芯片开发社区,领100G电子工程师资料大礼包
85494 浏览 120 评论
【平头哥Sipeed LicheeRV 86开发板试用体验】SDK下载及交叉编译
6301浏览 1评论
【平头哥Sipeed LicheeRV 86开发板试用体验】Waft初体验
15375浏览 1评论
【平头哥Sipeed LicheeRV 86开发板试用体验】开箱和试运行2
4453浏览 1评论
RVB2601 Gravity扩展板上线啦!!!全IO引脚扩展支持,专为RVB2601定制
1662浏览 0评论
【平头哥Sipeed LicheeRV 86开发板试用体验】lvgl初体验
4110浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-4-18 22:43 , Processed in 0.649912 second(s), Total 62, Slave 52 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号