SAP UI5 BarcodeScannerButton 的初始化邏輯 - Cordova API 檢測等邏輯

JerryWang_汪子熙發表於2022-03-23

sap.ndc.BarcodeScannerButton:用於啟動條碼掃描過程的按鈕控制元件(顯示條碼圖示)。 如果本機掃描功能不可用或未授予相機功能,則該按鈕要麼被隱藏,要麼通過開啟帶有輸入欄位的對話方塊來提供後備,可以在其中手動輸入條形碼。BarcodeScanner 被載入之後,執行 init 方法:

    //    * Feature vector (sap.Settings.isFeatureEnabled) is available
    //  * Barcode scanner is enabled by the Feature Vector
    //  * Barcode scanner Cordova plug-in (cordova.plugins.barcodeScanner) or zxing-js (ZXing.BrowserMultiFormatReader) is available

available 屬性預設為 true:

native device capabilities should be by default enabled if there is no feature vector available to restrict the capability.

瀏覽器裡檢測不到 cordova API:

然後嘗試獲取 ZXingAPI. 這是一個非同步過程。

oZXingScannerAPI 可用。

點選 barcode 按鈕之後,執行下圖第 129 行程式碼的 scan 方法。

如果條碼掃描功能不可用,則啟動條碼掃描過程,顯示來自攝像頭的實時輸入或顯示對話方塊以直接輸入值。

條碼掃描是非同步完成的。 當它被觸發時,該函式返回而不等待掃描過程完成。 應用程式必須提供回撥函式來對成功掃描、掃描期間的錯誤以及對話方塊上的實時輸入事件做出反應。

fnSuccess 傳遞了一個具有文字、格式和取消屬性的物件。 text 是條碼資料的文字表示,format 是檢測到的條碼型別,cancel 是使用者是否取消掃描。 fnError 給出了錯誤,fnLiveUpdate 被傳遞了在對話方塊的輸入欄位中輸入的新值。

只有當 CordovaScannerAPI 可用時,才進入 584 行下面的分支:

否則進入 618 行,彈出對話方塊。

SAP Fiori Client 是 SAP Fiori 應用程式的原生移動應用程式執行時容器。 SAP Fiori Client 允許使用者以線上模式訪問其 SAP Fiori 應用程式。後續我會介紹如何在 Fiori client 裡解決這個 cordova 外掛不可用的問題。

相關文章