馳騁工做流引擎-CCMobile與安卓、IOS集成過程當中的問題與解決方案

CCMobile與安卓、IOS集成過程當中的問題與解決方案

前言:

         CCMobile(2019版本)是CCFlow&JFlow 的一款移動端審批的產品。系統基於mui框架開發,是一款能夠兼容Android與IOS的移動端工做流審批系統。因爲CCMobile僅僅侷限於移動端的流程審批,因此在其餘辦公功能方面不多,這時可能就須要在源碼上開發或者與其餘APP進行集成。web

         因爲Mui是一款h5的框架,並非原生的,因此在與原生APP集成時,會出現一些問題,主要集中在附件上傳下載、屏幕兼容等。本文章,將具體描述與其餘APP進行集成時出現的問題以及解決方法。服務器

 

與IOS進行集成                                  

1.主要問題彙總

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

2.返回(關閉)

         IOS操做系統不一樣於Android,不像Android具備back鍵。Android點擊back鍵時,能夠順序返回,直到返回首頁。IOS則沒有,若是從原生跳轉到CCMobile,IOS是不可能在CCMobile中返回到APP首頁的,只能結束APP,從新打開。因此,咱們在CCMobile的首頁中,添加返回(關閉)按鈕,點擊後,能夠關閉CCMobile,直接返回到APP指定的頁面。post

         在CCMobile中,咱們約定了一個返回(關閉)的調用方法,經過調用IOS原生方法,實現關閉(返回),調用代碼以下:ui

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

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

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

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

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

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

         爲了解決這樣的狀況,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是原生下載的方法名,附件的url是參數。

相關文章
相關標籤/搜索