interface BaseView { } interface BarcodeSuccessCallback { /** * @param type 识别到的条码类型 与Barcode对象定义的条码类型常量一致。 * @param code 识别到的条码数据 扫码识别出的数据内容,字符串类型,采用UTF8编码格式。 * @param file 扫码成功的截图文件路径 扫码识别到的截图,png格式文件,如果设置为不保存截图,则返回undefined。 */ (type: number, code: string, file?: string): any; } interface BarcodeErrorCallback { (error: DOMException): any; } interface BarcodeStyles { /** * 条码识别控件背景颜色 * * @description 颜色值支持(参考CSS颜色规范):颜色名称(参考CSS Color Names)/十六进制值/rgb值,默认值为红色。 */ background?: string; /** * 扫码框颜色 * * @description 颜色值支持(参考CSS颜色规范):颜色名称(参考CSS Color Names)/十六进制值/rgb值,默认值为红色。 */ frameColor?: string; /** * 扫码条颜色 * * @description 颜色值支持(参考CSS颜色规范):颜色名称(参考CSS Color Names)/十六进制值/rgb值,默认值为红色。 */ scanbarColor?: string; /** * Barcode扫码控件左上角的垂直偏移量 * * @description 可取值: 像素值,如"100px"; 百分比,如"10%",相对于父Webview窗口的高度; 自动计算,如"auto",根据height值自动计算,相对于父Webview窗口垂直居中。 */ top?: string; /** * Barcode扫码控件左上角的水平偏移量 * * @description 可取值: 像素值,如"100px"; 百分比,如"10%",相对于父Webview窗口的高度; 自动计算,如"auto",根据height值自动计算,相对于父Webview窗口垂直居中。 */ left?: string; /** * Barcode扫码控件的宽度 * * @description 可取值: 像素值,如"100px"; 百分比,如"10%",相对于父Webview窗口的宽度。 默认值为"100%"。 */ width?: string; /** * Barcode扫码控件的高度 * * @description 可取值: 像素值,如"100px"; 百分比,如"10%",相对于父Webview窗口的宽度。 默认值为"100%"。 */ height?: string; /** * Barcode扫码控件在Webview窗口的布局模式 * * @description 可取值: "static" - 静态布局模式,如果页面存在滚动条则随窗口内容滚动; "absolute" - 绝对布局模式,如果页面存在滚动条不随窗口内容滚动; 默认值为"static"。 */ position?: 'static' | 'absolute'; } interface BarcodeOptions { /** * 是否保存扫码成功时的截图 * * @description 如果设置为true则在扫码成功时将图片保存,并通过onmarked回调函数的file参数返回保存文件的路径。 默认值为false,不保存截图。 */ conserve?: boolean; /** * 保存扫码成功时图片保存路径 * * @description 可通过此参数设置保存截图的路径和名称,如果设置图片文件名称则必须指定文件的后缀名(必须是.png),否则认为是指定目录,文件名称则自动生成。 */ filename?: string; /** * 扫码成功时是否需要震动提醒 * * @description 如果设置为true则在扫码成功时震动设备,false则不震动。 默认值为true。 */ vibrate?: boolean; /** * 扫码成功时播放的提示音 * * @description 可取值: "none" - 不播放提示音; "default" - 播放默认提示音(5+引擎内置)。 默认值为"default"。 */ sound?: 'none' | 'default'; } interface Barcode extends BaseView { /** * 取消扫码识别 * * @description 结束对摄像头获取图片数据进行条码识别操作,同时关闭摄像头的视频捕获。 结束后可调用start方法重新开始识别。 */ cancel: () => any; /** * 关闭条码识别控件 * * @description 释放控件占用系统资源,调用close方法后控件对象将不可使用。 */ close: () => any; /** * 操作闪光灯 * * @description 设置扫码识别控件在扫码时是否开启摄像头的闪光灯,默认值为不开启闪光灯。 * * @param open true表示打开闪光灯,false表示关闭闪光灯。 */ setFlash: (open: boolean) => any; /** * 设置扫码识别控件的样式 * * @description 用于动态更新扫码识别控件的显示样式参数。 */ setStyle: (styles: BarcodeStyles) => any; /** * 开始扫码识别 * * @description 调用设备的摄像头在控件中预览,并获取捕获数据进行扫码识别,当识别出条码(二维码)数据时触发onmarked事件返回扫码结果。 * * @param options 扫码识别的参数 */ start: (options?: BarcodeOptions) => any; /** * 扫码识别成功事件 */ onmarked: BarcodeSuccessCallback; /** * 扫码识别错误事件 */ onerror: BarcodeErrorCallback; } interface BarcodeWrapper { /** * QR二维码 * * @description 1994年由日本Denso-Wave公司发明,QR来自英文Quick Response的缩写,即快速反应的意思,源自发明者希望QR码可让其内容快速被解码。 目前使用最广泛的二维码。 */ QR: 0; /** * EAN条形码标准版 * * @description 国际物品编码协会在全球推广应用的商品条码,是由13位数字组成。 目前使用最广泛的一维条形码。 */ EAN13: 1; /** * ENA条形码简版 * * @description 国际物品编码协会在全球推广应用的商品条码,是由8位数字组成。 */ EAN8: 2; /** * 扫码识别图片中的条码 * * @description 输入图片文件进行扫码识别,成功扫描到条码(一维码或二维码)后通过successCallback回调返回,失败则通过errorCallback回调返回。 * * @param path 要扫码的图片路径 必须是本地文件路径,如URLType类型(如以"_www"、"_doc"、"_documents"、"_downloads"开头的相对URL路径)或者系统绝对路径。 * @param successCB 扫码识别成功回调函数 * @param errorCB 扫码识别失败回调函数 * @param filters 条码类型过滤器 */ scan: (path: string, successCB: BarcodeSuccessCallback, errorCB?: BarcodeErrorCallback, filters?: number[]) => any; /** * 创建扫码识别控件对象 * * @description 此方法创建扫码识别控件并不会显示在页面中,需要调用plus.webview.Webview窗口对象的append方法将其添加到Webview窗口中才能显示。 注意:需要设置styles参数的top/left/width/height属性指定扫码识别控件的位置及大小,否则可能无法正确显示。 * * @param id 扫码识别控件的标识 可用于通过plus.barcode.getBarcodeById()方法查找已经创建的扫码识别控件对象。 * @param filters 条码类型过滤器 条码类型常量数组,默认情况支持QR、EAN13、EAN8类型。 通过此参数可设置扫码识别支持的条码类型(注意:设置支持的条码类型越多,扫描识别速度可能将会降低)。 * @param styles 扫码识别控件样式 */ create: (id: string, filters?: number[], styles?: BarcodeStyles) => Barcode; /** * 查找扫码识别控件对象 * * @description 根据指定的id(标识)查找扫码控件对象,可跨页面进行查找。 * * @param id 扫码识别控件的标识 */ getBarcodeById: (id: string) => Barcode | null; } interface WebviewObject extends BaseView { /** * Webview窗口的标识 * * @description 在打开或创建Webview窗口时设置,如果没有设置窗口标识,此属性值为undefined。 */ id: string; /** * 在Webview窗口中添加子窗口 * * @description 将另一个Webview窗口作为子窗口添加到当前Webview窗口中,添加后其所有权归父Webview窗口,当父窗口关闭时子窗口自动关闭。 */ append: (view: BaseView) => any; /** * 移除子Webview窗口 * * @description 从当前Webview窗口移除指定的子Webview窗口,若指定的webview对象不是当前窗口的子窗口则无任何作用。 移除后子Webview窗口不会关闭,需要调用其close方法才能真正关闭并销毁。 */ remove: (view: BaseView) => any; } interface WebviewWrapper { /** * 获取所有Webview窗口 * * @description 获取应用中已创建的所有Webview窗口,包括所有未显示的Webview窗口。 返回WebviewObject对象在数组中按创建的先后顺序排列,即数组中第一个WebviewObject对象用是加载应用的入口页面。 */ all: () => WebviewObject[]; /** * 获取当前窗口的WebviewObject对象 */ currentWebview: () => WebviewObject; /** * 获取屏幕所有可视的Webview窗口 * * @description 仅在屏幕区域显示的Webview窗口,如果Webview窗口显示了但被其它Webview窗口盖住则认为不可视。 */ getDisplayWebview: () => WebviewObject[]; /** * 查找指定标识的WebviewObject窗口 * * @description 在已创建的窗口列表中查找指定标识的Webview窗口并返回。 若没有查找到指定标识的窗口则返回null,若存在多个相同标识的Webview窗口,则返回第一个创建的Webview窗口。 如果要获取应用入口页面所属的Webview窗口,其标识为应用的%APPID%,可通过plus.runtime.appid获取。 */ getWebviewById: (id: string) => WebviewObject | null; /** * 获取应用首页WebviewObject窗口对象 */ getLaunchWebview: () => WebviewObject; } interface RuntimeWrapper { /** * 当前应用的APPID */ appid: string; /** * 客户端的版本名称 * * @description 字符串类型,在编译环境中设置的apk/ipa版本名称。 Android平台对应AndroidManifest.xml中的android:versionName属性值; iOS平台对应Info.plist中的CFBundleShortVersionString字段值。 */ version: string; /** * 客户端的版本号 * * @description 字符串类型,仅包含数字。 Android平台对应AndroidManifest.xml中的android:versionCode属性值; iOS平台对应Info.plist中CFBundleVersion字段值。 */ versionCode: string; /** * 退出应用 * * @description 5+APP:退出应用,返回系统桌面; 流应用:在“流应用”中调用则退出当前流应用,返回进入应用前的界面(如应用列表)。 */ quit: () => any; /** * 重启当前的应用 */ restart: () => any; /** * 设置程序快捷方式图标上显示的角标数字 */ setBadgeNumber: (num: number) => any; /** * 调用第三方程序打开指定的URL */ openURL: (url: string, err?: (e: DOMException) => any, identity?: string) => any; /** * 使用内置Webview窗口打开URL */ openWeb: (url: string) => any; } interface ShareMessage { /** * 内容见 https://www.html5plus.org/doc/zh_cn/share.html#plus.share.ShareMessage */ type?: 'web' | 'text' | 'image' | 'music' | 'video'; /** * 分享消息的文字内容 */ content?: string; /** * 分享消息的图片 * * @description 分享消息中包含的图片路径,仅支持本地路径。 若分享平台仅支持提交一张图片,传入多张图片则仅提交第一张图片。 如果未指定type类型,优先级顺序为:pictures>content(即设置了pictures则认为分享图片类型)。 */ pictures?: string[]; /** * 分享消息的缩略图 * * @description 分享消息中包含的缩略图路径,支持本地路径及网络路径。 若分享平台仅支持提交一张图片,传入多张图片则仅提交第一张图片。 如果分享平台的信息不支持缩略图,若没有设置消息的图片(pictures)则使用缩略图,否则忽略其属性值。 注意:图片有大小限制,推荐图片小于20Kb。 */ thumbs?: string[]; /** * 分享的多媒体资源 * * @description 分享的多媒体资源地址,当type值为"music"、"video"时有效。 注意: 微信分享平台支持音乐、视频类型,仅支持网络地址(以http://或https://开头); QQ分享平台支持音乐类型,仅支持网络路径(以http://或https://开头); 新浪微博分享平台支持视频类型,仅支持本地文件路径。 */ media?: string; /** * 分享独立的链接 * * @description 分享资源地址,仅支持网络地址(以http://或https://开头)。 如果未指定type类型,优先级顺序为:href>pictures>content(即设置了href则认为分享网页类型)。 */ href?: string; /** * 分享消息的标题 * * @description 仅微信分享网页、音频、视频、小程序类型时支持。 */ title?: string; } interface ShareWrapper { /** * 使用系统组件发送分享 */ sendWithSystem: (message: ShareMessage, successCB: () => any, errorCB?: (err: DOMException) => any) => any; } type AppKeyType = | 'backbutton'; interface AppKeyEvent { keyCode: number; keyType: AppKeyType; } interface KeyWrapper { /** * 添加按键事件监听器 */ addEventListener: (event: AppKeyType, listener: (event: AppKeyEvent) => any) => any; /** * 移除按键事件监听器 */ removeEventListener: (event: AppKeyType, listener: (event: AppKeyEvent) => any) => any; } interface H5Plus { barcode: BarcodeWrapper; webview: WebviewWrapper; runtime: RuntimeWrapper; share: ShareWrapper; net: { XMLHttpRequest: XMLHttpRequest }; key: KeyWrapper; } interface Window { g_app: any; plus: H5Plus; }