移動端 JavaScript?
介紹?
在Odoo 10.0中,我們發布了一個移動應用程序,允許您訪問所有 Odoo應用程序 (甚至是您自定義的模塊)。
該應用程序是 Odoo Web 和 本地移動組件 的組合。換句話說,它是在本地移動WebView容器中加載的Odoo Web實例。
本頁面記錄了如何通過Odoo Web(通過JavaScript)訪問移動本地組件,如相機、振動、通知和Toast。您不需要成為移動開發人員,只要了解Odoo JavaScript API,就可以訪問所有可用的移動功能。
警告
這些功能僅適用于 Odoo Enterprise 10.0+ 版本
它是如何工作的??
移動應用程序的內部工作原理:

當然,它是在移動本地Web容器中加載的網頁。但是,它被集成在一起,以便您可以從您的Web JavaScript訪問本地資源。
WebPages (Odoo Web) 位于每個層級的頂部,第二層是 Odoo Web (JS) 和本地移動組件之間的橋梁。
當 JavaScript 觸發任何調用時,它會通過 Bridge 傳遞,并由 Bridge 傳遞給本地調用程序來執行該操作。
當本地組件完成其工作后,它再次傳遞給橋接器,然后您可以在JavaScript中獲取輸出。
本地組件所需的處理時間取決于您從本地資源請求的內容。例如相機或GPS位置。
如何使用它??
就像Odoo Web框架一樣,移動API可以通過從 web_mobile.rpc 獲取對象在任何地方使用

移動 RPC 對象提供了可用方法的列表(僅適用于移動應用程序)。
檢查方法是否可用,然后執行它。
方法?
注解
每個方法都返回一個 JQuery Deferred 對象,該對象返回一個數據 JSON 字典
在設備上顯示Toast?
- showToast()?
- 參數
args (
object()
) – 要顯示的 消息 文本
Toast 提供了一個小彈窗,簡單地反饋操作結果。它只占用了足夠顯示消息的空間,當前活動仍然可見和可交互。
mobile.methods.showToast({'message': 'Message sent'});

震動設備?
- 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
}
});

顯示通知?
- showNotification()?
- 參數
args (
object()
) – title ** (第一行)通知的標題, ** message (第二行)通知的消息,在標準通知中。
通知是您可以在應用程序正常 UI 之外向用戶顯示的消息。當您告訴系統發出通知時,它首先會出現在通知區域中的圖標中。要查看通知的詳細信息,用戶打開通知抽屜。通知區域和通知抽屜都是系統控制的區域,用戶可以隨時查看。
mobile.showNotification({'title': 'Simple Notification', 'message': 'This is a test for a simple notification'})

在設備中創建聯系人?
- 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);

掃描條形碼?
- 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();
