移动 JavaScript

简介

在 Odoo 10.0 中,我们发布了一款移动应用程序,允许您访问所有 Odoo 应用程序 (甚至包括您的自定义模块)。

该应用程序是 Odoo Web原生移动组件 的结合。换句话说,它是一个加载在原生移动 WebView 容器中的 Odoo Web 实例。

本文档说明了如何通过 Odoo Web(使用 JavaScript)访问移动设备的原生组件,例如相机、振动、通知和消息提示。为此,您无需成为移动开发人员,只要熟悉 Odoo JavaScript API,就可以访问所有可用的移动功能。

警告

这些功能仅适用于 Odoo Enterprise 10.0 及以上版本

它是如何工作的?

移动应用程序的内部工作原理:

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

当然,这是一个加载在移动原生 Web 容器中的网页。但它被集成得如此巧妙,以至于您可以从 Web JavaScript 中访问原生资源。

网页(Odoo Web)位于每一层的顶部,而第二层是 Odoo Web(JS)与原生移动组件之间的桥梁。

当 JavaScript 触发任何调用时,它会通过桥接器传递,桥接器将其传递给原生调用器以执行相应操作。

当原生组件完成其工作后,结果会再次传递回桥接器,并在 JavaScript 中获得输出。

原生组件的处理时间取决于您向原生资源请求的内容。例如,相机或 GPS 定位。

如何使用它?

与 Odoo Web 框架类似,可以通过从 web_mobile.rpc 获取对象,在任何地方使用移动 API。

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

移动 RPC 对象提供了一个可用方法列表(这仅适用于移动应用程序)。

检查方法是否可用,然后执行它。

方法

注解

每个方法都返回一个 JQuery Deferred 对象,该对象返回一个数据 JSON 字典。

在设备上显示消息提示

showToast()
参数
  • args (object()) – message 要显示的文本

消息提示(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;如果 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()) – 标准通知中的 标题 (第一行)和 消息 (第二行)。

通知是您可以在应用程序常规 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()
返回

从任何条形码中扫描的 代码

条形码 API 可以在设备上实时检测条形码,并支持任意方向。

条形码 API 可以读取以下条形码格式:

  • 一维条形码:EAN-13、EAN-8、UPC-A、UPC-E、Code-39、Code-93、Code-128、ITF、Codabar

  • 二维条形码:QR 码、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