1. 程式人生 > >馳騁工作流引擎-CCMobile與安卓、IOS整合過程中的問題與解決方案

馳騁工作流引擎-CCMobile與安卓、IOS整合過程中的問題與解決方案

CCMobile與安卓、IOS整合過程中的問題與解決方案

前言:

         CCMobile(2019版本)是CCFlow&JFlow 的一款移動端審批的產品。系統基於mui框架開發,是一款可以相容Android與IOS的移動端工作流審批系統。由於CCMobile僅僅侷限於移動端的流程審批,所以在其他辦公功能方面很少,這時可能就需要在原始碼上開發或者與其他APP進行整合。

         由於Mui是一款h5的框架,並不是原生的,所以在與原生APP整合時,會出現一些問題,主要集中在附件上傳下載、螢幕相容等。本文章,將具體描述與其他APP進行整合時出現的問題以及解決方法。

 

與IOS進行整合                                  

1.主要問題彙總

         與IOS進行整合時,主要有3個問題,即:返回(關閉)、全面屏與劉海屏樣式相容、附件上傳與下載。

2.返回(關閉)

         IOS作業系統不同於Android,不像Android具有back鍵。Android點選back鍵時,可以順序返回,直到返回首頁。IOS則沒有,如果從原生跳轉到CCMobile,IOS是不可能在CCMobile中返回到APP首頁的,只能結束APP,重新開啟。所以,我們在CCMobile的首頁中,新增返回(關閉)按鈕,點選後,可以關閉CCMobile,直接返回到APP指定的頁面。

         在CCMobile中,我們約定了一個返回(關閉)的呼叫方法,通過呼叫IOS原生方法,實現關閉(返回),呼叫程式碼如下:

                   window.webkit.messageHandlers.backAction.postMessage("backActionStr");

這句程式碼的意思呼叫IOS原生的backAction方法,引數是backActionStr,這個引數沒有具體含義,只是為了方便判別。IOS原生的backAction方法就是關閉CCMobile,跳轉到指定頁面的方法,程式碼參考上圖中紅色框標識1。

         下圖中的 x 按鈕,就是關閉(返回)。

         https://uploader.shimo.im/f/McqOwoau7coOhicS.jpg!original

3. 全面屏與劉海屏樣式相容

         包括Android手機在內,絕大部分的手機都有全面屏與劉海屏,兩者的樣式區別就是劉海屏比全面屏的頂部,凹下去一塊,如果按照全面屏的顯示樣式來說,CCMobile沒什麼問題,但是遇到劉海屏,CCMobile的頂部,就會被蓋住一部分。

         為了解決這樣的情況,CCMobile沒有為具體機型制定樣式,而是在IOS程式碼中增加判斷和修改,如果是劉海屏的機型,增加了整個CCMobile到頂部的距離。

         IOS程式碼如上圖紅色框標識2所示。

4.附件上傳與下載

         H5的附件上傳,需要在IOS原生中將相關許可權開放,否則H5是無法呼叫手機相關功能的。如下圖:

        

        

         附件下載,由於在流程中上傳的附件上傳到伺服器中,因此在手機端進行附加下載時,需要將伺服器中的附件資訊提供給手機,才能供手機下載。

         因此,我們在這個地方,也約定了一個下載的方法名稱,setLoadUrl。

                   window.webkit.messageHandlers.setLoadUrl.postMessage(Url);

IOS原生程式碼中,需要新增這個setLoadUrl方法,引數是附件的url地址,IOS根據URL進行下載。具體下載程式碼如上圖紅框標識3所示。

 

 

與安卓(Android)進行整合

1. 主要問題彙總

         與IOS不同,CCMobile對安卓的支援相對好一些,有一些功能為了相容IOS,做了特殊處理,因此在展現方面,兩者有所不同,比如:選擇器(下拉選擇框)。

第一張圖為安卓展示效果,第二張圖為IOS顯示效果。

 

 

         雖然安卓不存在IOS返回(關閉)的問題,但是在整合時也存在全面屏與劉海屏樣式相容、附件上傳與下載兩個問題。

         安卓的螢幕相容問題,與IOS的解決思路一樣,在安卓原生中,判斷機型,自動計算並設定CCMobile到手機狀態列的具體距離,此處就不再詳細說明了。下面將具體講解附件上傳與下載的整合問題。

2. 附件上傳

         mui的視窗介面採用的webview模組,因此在webview中帶有 input file的控制元件時,在手機端中是無法點選的,因此,無法達到上傳附件,並且也不會調動手機相機的操作。

         為了解決這個問題,在安卓原生中需要做以下操作:

 

 

         第一步:重寫WebChromeClient。

         第二步:監聽ValueCallback。

         第三步:webview要新增相應的設定。

         第四步:建立onActivityResult。

 

         具體程式碼參考:https://blog.csdn.net/shuaiyou_comon/article/details/76262303

3.附件下載

         安卓的附件下載,與IOS的附件下載設計思路一樣,需要在安卓原生中,增加一個下載方法,供CCMobile使用。

         第一步,增加下載方法,程式碼參照如下:

         第二步,方法宣告,CCMobile可以使用原生程式碼進行呼叫。

 

CCMobile中呼叫原生介面的程式碼:

       window.Android.setAttachmentUrl(Url);

setAttachmentUrl是原生下載的方法名,附