移动端 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()) – message text to display

Toast 提供了一个小弹窗,简单地反馈操作结果。它只占用了足够显示消息的空间,当前活动仍然可见和可交互。

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

震动设备

vibrate()
参数
  • args (object()) – 以指定的时间(毫秒)持续振动。

以给定的持续时间震动移动设备。

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

显示带有操作的 Snackbar

showSnackBar()
参数
  • args (object()) – (必填) 消息 在 snackbar 中显示和操作 按钮标签 在 snackbar 中显示 (可选)

返回

True if the user clicks on the Action button, False if SnackBar auto dismissed after some time.

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 (first row) of the notification, message (second row) of the notification, in a standard notification.

通知是您可以在应用程序正常 UI 之外向用户显示的消息。当您告诉系统发出通知时,它首先会出现在通知区域中的图标中。要查看通知的详细信息,用户打开通知抽屉。通知区域和通知抽屉都是系统控制的区域,用户可以随时查看。

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

在设备中创建联系人

addContact()
参数
  • args (object()) – 联系人详细信息的字典。可能的键值有(姓名,手机,电话,传真,电子邮件,网站,街道,街道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