基于安卓WebView封装的通信API框架及方法与流程

文档序号:30222452发布日期:2022-05-31 22:54阅读:448来源:国知局
基于安卓WebView封装的通信API框架及方法与流程
基于安卓webview封装的通信api框架及方法
技术领域
1.本技术涉及网络通信领域,特别涉及一种基于安卓webview封装的通信api框架及方法。


背景技术:

2.随着前端技术的高速发展越来越多的中小型平台都开始舍弃开发成本高、维护较难的原生应用开发,选择使用前端技术做跨平台开发,大前端时代到来;但因为前端javascript的局限性,不能直接调用像蓝牙、mqtt、socket、nfc这样的通信协议;现在了解到的前端使用mqtt协议是依靠websocket与后端通信后,后端开启mqtt然后后端再通过websocket将接收到的mqtt消息推送到前端。
3.现今这种前端调用mqtt的方案还需要后端针对前端去开启一个websocket的服务去进行mqtt的请求与监听,这需要消耗一定的后端资源还提高了维护成本,同时通过websocket做转发有websocket异常断开导致数据传输不到前端问题。
4.蓝牙这块因为需要设备支持前端根本不能调用。
5.nfc通信这块与蓝牙一样存在设备局限性,前端调用不了设备传感器。
6.socket通信的话前端有自己的websocket能够使用,但是websocket与socket还是存在不同,websocket不能和socket直接通信,所以前后端在编写完websocket服务的同时还需要编写socket服务来和其他终端设备交互,这也增加了后端开发和维护成本。


技术实现要素:

7.本技术提供了一种基于安卓webview封装的通信api框架及方法,由于直接利用jsapi去调用安卓对应接口,不存在网络波动导致在安卓与h5进行数据传输时数据丢失,所以在数据传输的稳定性上得到较大的提高。
8.本技术第一方面提供了一种基于安卓webview封装的通信api框架,包括:
9.webview,jsapi以及java api封装类;
10.所述webview与所述jsapi进行通信,所述jsapi与所述java api封装类进行通信;所述webview通过所述jsapi直接调用所述java api封装类,以使得所述java api封装类与终端设备建立通信来获取jsapi数据。
11.可选的,所述java api封装类包括:
12.mqtt api,蓝牙api,socket api以及nfc api;
13.所述mqtt api、所述蓝牙api、所述socket api以及所述nfc api分别与所述jsapi直接进行通信。
14.可选的,所述mqtt api是通过调用java已有的mqtt方法对连接、读写、订阅、取消订阅、发布、断开连接等操作进行封装,继而再通过jsapi封装完成的。
15.可选的,所述socket api是通过java已有的socket方法对连接、读写、订阅、取消订阅、发布、断开连接等操作进行封装,继而再通过jsapi封装完成的。
16.可选的,所述蓝牙api是通过终端对蓝牙功能进行授权,进而再调用原生蓝牙api对初始化蓝牙适配器、打开关闭蓝牙、开启关闭扫描、连接蓝牙、读写数据、状态监听进行封装,最后使用jsapi封装来完成的。
17.可选的,所述nfc api是通过终端对nfc功能进行授权,进而调用终端nfc api对nfca、ndef标签的读写操作进行封装,最后使用jsapi封装来完成的。
18.本技术第二方面提供了一种基于安卓webview封装的通信方法,包括:
19.前端页面接收来自的jsapi数据,其中所述的jsapi数据是所述前端页面直接通过jsapi直接调用java api封装类,进一步所述java api封装类与终端设备建立通信并从所述终端设备上获取的;
20.所述前端页面将所述jsapi数据进行可视化展示。
21.可选的,所述前端页面接收来自的jsapi数据之前,所述方法还包括:
22.前端页面开启数据监听,并根据所述数据监听调用jsapi,以使得所述jsapi获取jsapi数据。
23.可选的,所述前端页面将所述jsapi数据进行可视化展示,包括:
24.所述前端页面通过渲染数据将所述jsapi数据进行可视化展示。
25.可选的,所述java api封装类包括mqtt api,蓝牙api,socket api以及nfc api。
26.本技术的一种基于安卓webview封装的通信api框架包括webview,jsapi以及java api封装类;所述webview与所述jsapi进行通信,所述jsapi与所述java api封装类进行通信;所述webview通过所述jsapi直接调用所述java api封装类来进行与所述java api封装类通信。本发明直接利用jsapi去调用安卓对应接口,不存在网络波动导致在安卓与h5进行数据传输时数据丢失,所以在数据传输的稳定性上得到较大的提高。
附图说明
27.图1为本技术中基于安卓原生webview封装的h5端的网络通信api框架示意图;
28.图2为本技术中基于安卓原生webview封装的h5端的网络通信api框架使用时序示意图。
具体实施方式
29.本技术实施例提供了一种基于安卓webview封装的通信api框架,由于直接利用jsapi去调用安卓对应接口,不存在网络波动导致在安卓与h5进行数据传输时数据丢失,所以在数据传输的稳定性上得到较大的提高。
30.以下结合附图对本发明的实施例作进一步详细说明。
31.请参阅图1和图2,本技术实施例中基于安卓webview封装的通信api框架一个实施例包括:
32.在本实施例中,如图1通信api框架包括web view,jsapi以及java api封装类;其中jsapi包括了mqtt api,蓝牙api,socket api以及nfc api。
33.webview与jsapi进行通信,mqtt api、蓝牙api、socket api以及nfc api分别与jsapi直接进行通信;webview通过jsapi直接调用java api封装类来进行与java api封装类通信。
34.网络通信api框架是利用java对蓝牙、mqtt、socket、nfc等协议进行封装,进一步的通过安卓的webview的javascriptinterface注解和webview对javascript运行注入的方法将封装的协议拆分成不同的jsapi接口,最后前端运行在本框架中时就可以通过调用已经提供的各个协议的jsapi去调用蓝牙、mqtt、socket、nfc协议与终端进行数据交互。
35.在网络通信api框架中对蓝牙、mqtt、socket、nfc的封装详细过程如下:
36.在本实施例中,蓝牙和nfc的封装方式相似,具体的:
37.(1)授权
38.由于该两种通信方式分别需要依赖安卓手机蓝牙和nfc模块,而安卓手机对这些通信模块有着比较严格的权限管控,首先在编写封装接口时需要在对应调用界面进行对应的运行时权限处理,同时得在用户拒绝授权的前提下提示和引导用户进入手机设置授权。
39.(2)java api封装
40.蓝牙:调用安卓原生蓝牙api对初始化蓝牙适配器、打开关闭蓝牙、开启关闭扫描、连接蓝牙、读写数据、状态监听等操作进行封装。
41.nfc:调用安卓nfc api对nfca、ndef(暂时支持两种,后期按需求拓展)标签的读写操作进行封装。
42.(3)jsapi封装
43.这层的封装基本上基于java api层,只是在将api提供给h5使用时需要对封装的方法进行细分处理(比如蓝牙读写可分为开始写入、写入监听、开启通知、读取监听等)和防止anr等处理。本层因为javascriptinterface无法直接处理回调与直接return参数到前端,所以采用了webview的loadurl方法直接调用前端已注册好的方法进行回调传参。
44.在本实施例中,socket、mqtt的封装方式相似,具体的:
45.(1)java api封装
46.调用java已有的socket与mqtt方法对连接、读写、订阅、取消订阅、发布、断开连接等操作进行封装。
47.(2)jsapi封装
48.在对socket、mqtt的jsapi封装上与蓝牙/nfc的jsapi封装相同,此处不在赘述。
49.当使用本实施例中的网络通信api框架时,如图2所示,前端页面在开启数据监听的前提下,当前端页面监听到了数据时就会调用已经注入的jsapi,此时jsapi就会直接调用封装好的java api(即mqtt api,蓝牙api,socket api以及nfc api),而这些java api就通过发送连接请求和数据交互请求来直接与终端设备进行连接和数据交互,当终端设备接收到连接请求和数据交互请求的时候,终端设备则直接将jsapi数据返回至前端页面;前端页面接收到jsapi数据后,将接收到的jsapi数据和前端的渲染数据结合排版进行可视化展示。
50.本发明依托与安卓系统调用协议交互,减少了后端服务器压力,同时因为本方案是直接利用jsapi去调用安卓对应接口,不存在网络波动导致在安卓与h5进行数据传输时数据丢失,所以在数据传输的稳定性上大大优于前者。因安卓系统搭载有蓝牙模组,所以在进行蓝牙操作时还能有较大的可扩展性。
51.所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
52.在本技术所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
53.所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
54.另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
55.所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1