本发明属于移动app的技术领域,具体地涉及一种移动app与web页面通讯方法及系统。
背景技术:
由于移动app(即移动终端上的应用软件)是要区分android、ios等设备的,因此安全限制与通讯方法标准均不一致,这就使得app与web页面的交互过程非常繁琐。
目前,app和web的原生api(applicationprogramminginterface,应用程序编程接口)只提供单工调用方法,即“app调用web”或“web调用app”,而且因为这种调用是同步调用,会阻塞线程,影响性能。为了支持复杂业务场景及高性能要求,亟需实现“app与web的全双工异步通讯”。
技术实现要素:
本发明的技术解决问题是:克服现有技术的不足,提供一种移动app与web页面通讯方法,其实现了移动app与web页面的全双工异步通讯,避免了阻塞线程,不会影响移动设备的性能。
本发明的技术解决方案是:这种移动app与web页面通讯方法,包括以下步骤:
(1)包装原生api,使其实现半双工调用;
(2)拒绝回调,取消同步阻塞;
(3)自定义通讯流水号;
(4)收到异步返回结果时,根据指令类型分别处理;
(5)如果有匹配的流水号,则确定这个消息是app曾经发送的某个指令的异步返回的结果,跳转到步骤(4)。
本发明通过包装原生api,使其实现半双工调用,拒绝回调,取消同步阻塞,自定义通讯流水号,收到异步返回结果时,根据指令类型分别处理,如果有匹配的流水号,则确定这个消息是app曾经发送的某个指令的异步返回的结果而进行处理,从而实现了移动app与web页面的全双工异步通讯,避免了阻塞线程,不会影响移动设备的性能。
还提供了采用这种方法的系统,其包括:
包装模块,其配置来包装原生api,使其实现半双工调用;
设置取消模块,其配置来拒绝回调,取消同步阻塞;
定义流水号模块,其配置来自定义通讯流水号;
处理模块,其配置来收到异步返回结果时,根据指令类型分别处理;
并且如果有匹配的流水号,则确定这个消息是app曾经发送的某个指令的异步返回的结果,根据指令类型分别处理。
附图说明
图1示出了根据本发明的移动app与web页面通讯方法的流程图。
具体实施方式
如图1所示,这种移动app与web页面通讯方法,包括以下步骤:
(1)包装原生api,使其实现半双工调用;
(2)拒绝回调,取消同步阻塞;
(3)自定义通讯流水号;
(4)收到异步返回结果时,根据指令类型分别处理;
(5)如果有匹配的流水号,则确定这个消息是app曾经发送的某个指令的异步返回的结果,跳转到步骤(4)。
本发明通过包装原生api,使其实现半双工调用,拒绝回调,取消同步阻塞,自定义通讯流水号,收到异步返回结果时,根据指令类型分别处理,如果有匹配的流水号,则确定这个消息是app曾经发送的某个指令的异步返回的结果而进行处理,从而实现了移动app与web页面的全双工异步通讯,避免了阻塞线程,不会影响移动设备的性能。
另外,该方法包括移动app端处理方法和web页面端处理方法。
另外,所述移动app端处理方法包括向web发消息和接收来自web的消息;
向web发消息包括以下步骤:
(a1)将消息对象转为消息字符串;
(a2)为消息分配通讯流水号;
(a3)获取app内嵌的web浏览器句柄;
(a4)通过web浏览器句柄获取通讯api;
(a5)将通讯流水号、消息字符串传给web页面;
接收来自web的消息包括以下步骤:
(b1)注册接收web消息的方法;
(b2)接收来自web的消息字符串;
(b3)将消息字符串解析成json对象;
(b4)分发并处理消息;
(b5)如果找到了匹配的消息流水号,则将此消息当作异步处理返回
结果来处理。
另外,所述web页面端处理方法包括接收来自app的消息和向app发消息;
接收来自app的消息包括以下步骤:
(c1)根据约定创建方法接收来自app的消息;
(c2)接收消息字符串;
(c3)记录消息流水号;
(c4)将消息字符串解析成消息对象;
(c5)分发并处理消息;
向app发消息包括以下步骤:
(d1)创建向app发送消息的方法;
(d2)获取消息对象;
(d3)将消息对象序列化为消息字符串;
(d4)发送消息字符串;
(d5)如果有相关的消息流水号,将消息流水号协同消息字符串一起发送。
本领域普通技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,包括上述实施例方法的各步骤,而所述的存储介质可以是:rom/ram、磁碟、光盘、存储卡等。因此,与本发明的方法相对应的,本发明还同时包括一种移动app与web页面通讯系统,该系统通常以与方法各步骤相对应的功能模块的形式表示。使用该方法的系统,其包括:
包装模块,其配置来包装原生api,使其实现半双工调用;
设置取消模块,其配置来拒绝回调,取消同步阻塞;
定义流水号模块,其配置来自定义通讯流水号;
处理模块,其配置来收到异步返回结果时,根据指令类型分别处理;并且如果有匹配的流水号,则确定这个消息是app曾经发送的某个指令的异步返回的结果,根据指令类型分别处理。
另外,该系统包括移动app端处理单元和web页面端处理单元。
另外,所述移动app端处理单元执行以下步骤:
向web发消息包括以下步骤:
(a1)将消息对象转为消息字符串;
(a2)为消息分配通讯流水号;
(a3)获取app内嵌的web浏览器句柄;
(a4)通过web浏览器句柄获取通讯api;
(a5)将通讯流水号、消息字符串传给web页面;
接收来自web的消息包括以下步骤:
(b1)注册接收web消息的方法;
(b2)接收来自web的消息字符串;
(b3)将消息字符串解析成json对象;
(b4)分发并处理消息;
(b5)如果找到了匹配的消息流水号,则将此消息当作异步处理返回结果来处理。
另外,所述web页面端处理单元执行以下步骤:
(c1)根据约定创建方法接收来自app的消息;
(c2)接收消息字符串;
(c3)记录消息流水号;
(c4)将消息字符串解析成消息对象;
(c5)分发并处理消息;
向app发消息包括以下步骤:
(d1)创建向app发送消息的方法;
(d2)获取消息对象;
(d3)将消息对象序列化为消息字符串;
(d4)发送消息字符串;
(d5)如果有相关的消息流水号,将消息流水号协同消息字符串一起发送。
以上所述,仅是本发明的较佳实施例,并非对本发明作任何形式上的限制,凡是依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与修饰,均仍属本发明技术方案的保护范围。