移動端 JavaScript?

介紹?

在Odoo 10.0中,我們發布了一個移動應用程序,允許您訪問所有 Odoo應用程序 (甚至是您自定義的模塊)。

該應用程序是 Odoo Web本地移動組件 的組合。換句話說,它是在本地移動WebView容器中加載的Odoo Web實例。

本頁面記錄了如何通過Odoo Web(通過JavaScript)訪問移動本地組件,如相機、振動、通知和Toast。您不需要成為移動開發人員,只要了解Odoo JavaScript API,就可以訪問所有可用的移動功能。

警告

這些功能僅適用于 Odoo Enterprise 10.0+ 版本

它是如何工作的??

移動應用程序的內部工作原理:

../../../_images/mobile_working.jpg

當然,它是在移動本地Web容器中加載的網頁。但是,它被集成在一起,以便您可以從您的Web JavaScript訪問本地資源。

WebPages (Odoo Web) 位于每個層級的頂部,第二層是 Odoo Web (JS) 和本地移動組件之間的橋梁。

當 JavaScript 觸發任何調用時,它會通過 Bridge 傳遞,并由 Bridge 傳遞給本地調用程序來執行該操作。

當本地組件完成其工作后,它再次傳遞給橋接器,然后您可以在JavaScript中獲取輸出。

本地組件所需的處理時間取決于您從本地資源請求的內容。例如相機或GPS位置。

如何使用它??

就像Odoo Web框架一樣,移動API可以通過從 web_mobile.rpc 獲取對象在任何地方使用

../../../_images/odoo_mobile_api.png

移動 RPC 對象提供了可用方法的列表(僅適用于移動應用程序)。

檢查方法是否可用,然后執行它。

方法?

注解

每個方法都返回一個 JQuery Deferred 對象,該對象返回一個數據 JSON 字典

在設備上顯示Toast?

showToast()?
參數
  • args (object()) – 要顯示的 消息 文本

Toast 提供了一個小彈窗,簡單地反饋操作結果。它只占用了足夠顯示消息的空間,當前活動仍然可見和可交互。

mobile.methods.showToast({'message': 'Message sent'});
../../../_images/toast.png

震動設備?

vibrate()?
參數
  • args (object()) – 以指定的時間(毫秒)持續振動。

以給定的持續時間震動移動設備。

mobile.methods.vibrate({'duration': 100});

顯示帶有操作的 Snackbar?

showSnackBar()?
參數
  • args (object()) – ( 必填 ) Snackbar 中要顯示的 消息 ** 和操作 **按鈕標簽 (可選)

返回

如果用戶點擊操作按鈕,則為 True ,如果 SnackBar 在一段時間后自動消失,則為 False 。

Snackbars 提供有關操作的輕量級反饋。它們在移動設備屏幕底部或較大設備的左下角顯示簡短的消息。Snackbars 出現在屏幕上的所有其他元素之上,一次只能顯示一個。

mobile.methods.showSnackBar({'message': 'Message is deleted', 'btn_text': 'Undo'}).then(function(result){
    if(result){
        // Do undo operation
    }else{
        // Snack Bar dismissed
    }
});
../../../_images/snackbar.png

顯示通知?

showNotification()?
參數
  • args (object()) – title ** (第一行)通知的標題, ** message (第二行)通知的消息,在標準通知中。

通知是您可以在應用程序正常 UI 之外向用戶顯示的消息。當您告訴系統發出通知時,它首先會出現在通知區域中的圖標中。要查看通知的詳細信息,用戶打開通知抽屜。通知區域和通知抽屜都是系統控制的區域,用戶可以隨時查看。

mobile.showNotification({'title': 'Simple Notification', 'message': 'This is a test for a simple notification'})
../../../_images/mobile_notification.png

在設備中創建聯系人?

addContact()?
參數
  • args (object()) – 聯系人詳細信息的字典??赡艿逆I值有(姓名,手機,電話,傳真,電子郵件,網站,街道,街道2,國家ID,州/省ID,城市,郵編,父ID,職能和圖像)

使用給定的聯系人詳細信息創建新的設備聯系人。

var contact = {
    'name': 'Michel Fletcher',
    'mobile': '9999999999',
    'phone': '7954856587',
    'fax': '765898745',
    'email': 'michel.fletcher@agrolait.example.com',
    'website': 'http://www.agrolait.com',
    'street': '69 rue de Namur',
    'street2': false,
    'country_id': [21, 'Belgium'],
    'state_id': false,
    'city': 'Wavre',
    'zip': '1300',
    'parent_id': [8, 'Agrolait'],
    'function': 'Analyst',
    'image': '<<BASE 64 Image Data>>'
}

mobile.methods.addContact(contact);
../../../_images/mobile_contact_create.png

掃描條形碼?

scanBarcode()?
返回

從任何條形碼掃描了 code

條形碼 API 可以在設備上實時檢測任何方向的條形碼。

條形碼 API 可以讀取以下條形碼格式:

  • 一維條形碼:EAN-13,EAN-8,UPC-A,UPC-E,Code-39,Code-93,Code-128,ITF,Codabar

  • 二維碼:QR Code、Data Matrix、PDF-417、AZTEC

mobile.methods.scanBarcode().then(function(code){
    if(code){
        // Perform operation with the scanned code
    }
});

在設備中切換賬戶?

switchAccount()?

使用 switchAccount 在設備上切換賬戶。

mobile.methods.switchAccount();
../../../_images/mobile_switch_account.png