完善资料让更多小伙伴认识你,还能领取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初体验
15655 浏览 1 评论
13703 浏览 4 评论
【平头哥Sipeed LicheeRV 86开发板试用体验】四、烧写waft系统&搭建waft测试环境
19620 浏览 2 评论
59026 浏览 19 评论
【限时福利】加入芯片开发社区,领100G电子工程师资料大礼包
87687 浏览 121 评论
邀请函 | 3月2日 来上海参加平头哥“玄铁RISC-V生态大会”
742浏览 0评论
读书分享会 | 玄铁RISC-V处理器入门与实战电子书免费下载!
631浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 06:05 , Processed in 0.671318 second(s), Total 71, Slave 54 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号