一種移動APP與Web頁面通訊方法及系統與流程
2023-10-09 07:05:24 2

本發明屬於移動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)如果有相關的消息流水號,將消息流水號協同消息字符串一起發送。
以上所述,僅是本發明的較佳實施例,並非對本發明作任何形式上的限制,凡是依據本發明的技術實質對以上實施例所作的任何簡單修改、等同變化與修飾,均仍屬本發明技術方案的保護範圍。