移动JavaScript¶
介绍¶
在 Odoo 10.0 中,我们发布了一个移动应用程序,允许您访问所有 **Odoo 应用程序**(甚至是您的自定义模块)。
该应用程序是 Odoo Web 和 Native Mobile 组件 的组合。换句话说,它是一个加载到本机移动 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 将其传递给本机调用程序以执行该操作。
当本机组件完成其工作后,它会再次传递到 Bridge,您将获得 JavaScript 的输出。
本机组件所花费的处理时间取决于您从本机资源请求的内容。例如相机或 GPS 位置。
如何使用?¶
就像 Odoo Web 框架一样,通过从 web_mobile.rpc 获取对象,可以在任何地方使用 Mobile API
移动 RPC 对象提供可用方法列表(这只适用于移动应用程序)。
检查该方法是否可用,然后执行它。
方法¶
注解
每个方法都会返回一个 JQuery Deferred 对象,该对象返回一个数据 JSON 字典
在设备中显示 Toast¶
- showToast()¶
- 参数
args (
object()) – 消息 要显示的文本
Toast 在小弹出窗口中提供有关操作的简单反馈。它仅填充消息所需的空间量,并且当前活动保持可见和交互。
mobile.methods.showToast({'message': 'Message sent'});
振动装置¶
- vibrate()¶
- 参数
args (
object()) – 在指定的时间段(以毫秒为单位)内持续振动。
在给定的时间内振动移动设备。
mobile.methods.vibrate({'duration': 100});
显示带操作的小吃栏¶
- showSnackBar()¶
- 参数
args (
object()) – (必需)**消息**显示在小吃栏中和操作**按钮标签**在小吃栏中(可选)
- 返回
Trueif the user clicks on the Action button,False如果 SnackBar 一段时间后自动关闭。
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()) – 在标准通知中,通知的**标题**(第一行),通知的**消息**(第二行)。
通知是您可以在应用程序正常 UI 之外向用户显示的消息。当您告诉系统发出通知时,它首先会在通知区域中显示为图标。要查看通知的详细信息,用户打开通知抽屉。通知区域和通知抽屉都是系统控制的区域,用户可以随时查看。
mobile.showNotification({'title': 'Simple Notification', 'message': 'This is a test for a simple notification'})
在设备中创建联系人¶
- addContact()¶
- 参数
args (
object()) – 带有联系方式的词典。可能的键(姓名、手机、电话、传真、电子邮件、网站、街道、street2、country_id、state_id、city、zip、parent_id、function 和 image)
使用给定的联系方式创建新的设备联系人。
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 码、Data Matrix、PDF-417、AZTEC
mobile.methods.scanBarcode().then(function(code){
if(code){
// Perform operation with the scanned code
}
});
在设备中切换帐户¶
- switchAccount()¶
使用 switchAccount 在设备上从一个帐户切换到另一个帐户。
mobile.methods.switchAccount();