概述

ff-jssdk是firefly平台面向WEB前端开发者提供的基于firefly原生客户端内的网页开发工具包。

安装

# --registry 为 npm 私有仓库的地址
$ npm install ff-jssdk --registry=http://xxx.x.x.x

接口调用说明

ff-jssdk默认导出Native构造函数,可以通过new Native()的方式创建实例,所有的接口通过该实例对象来调用。每个接口除了本身需要传递的参数之外,还有以下通用参数:

  • success:接口调用成功时执行的回调函数
  • fail:接口调用失败时执行的回调函数
  • complete:接口调用完成时的回调函数,无论接口调用成功与否
  • processing:包含进度信息的接口在执行中调用的函数,例如文件的上传和下载

以上通用回调函数均接收一个参数,参数为一个对象,包括code和data两个字段。code代表接口调用状态,拥有如下通用状态值:

  • 0:调用成功
  • -1:调用失败

其他状态码在接口文档中会有说明。data的值是一个对象,包含接口的返回值

示例

import Native from 'ff-jssdk'

const native = new Native()

// 下载文件到本地
native.downloadFile({
    url: 'api/downloadSth',
    filePath: 'download',
    success: (ret) => {
        // 成功后的回调
    },
    fail: (ret) => {
        // 失败后的回调
    },
    processing: (ret) => {
        // 下载过程中的回调函数
        const { code, data: { progress } } = ret

        console.log(progress) // 下载进度
    },
    complete: (ret) => {
        // 接口调用完成后的回调函数
    }
})


ff-jssdk接口定义

网络

下载文件资源到本地:downloadFile()

客户端发起一个 HTTP GET 请求

参数

属性 类型 默认值 必填 说明
url string 下载资源的
filePath string 指定文件下载后存储的路径

回调参数

属性 类型 说明
progress string 下载进度
filePath string 下载文件后存储路径

状态码说明

状态码 说明
-1 其他错误
0 成功
1 下载中
100 非法url
101 参数json格式错误

示例代码

import Native from 'ff-jssdk'

const native = new Native()

// 下载文件到本地
native.downloadFile({
    url: 'http://www.cmbc.com.cn/upload/images/2018/9/542c3569-51f3-4a13-b7df-57f5da454847.jpg',
    filePath: '/test_download/aaa.jpg',
    success: (ret) => {
        // 成功后的回调
    },
    fail: (ret) => {
        // 失败后的回调
    },
    processing: (ret) => {
        // 下载过程中的回调函数
        const { code, data: { progress } } = ret

        console.log(progress) // 下载进度
    },
    complete: (ret) => {
        // 接口调用完成后的回调函数
    }
})

上传文件资源:uploadFile()

客户端发起一个 HTTP POST 请求,其中 content-typemultipart/form-data

参数

属性 类型 默认值 必填 说明
url string 上传至远端地址
filePath string 本地文件路径
fileKey string 文件对应的 key
formData Object 额外的 form data

回调参数

属性 类型 说明
progress string 上传进度
result string 服务器返回的数据

状态码说明

状态码 说明
-1 其他错误
0 成功
1 上传载中
100 非法url
101 参数json格式错误
102 非法文件路径(空、不存在、不是文件)
103 filekey不合法

示例代码

native.uploadFile({
    url:"http://www.httpbin.org/post",
    filePath:"/test_download/aaa.jpg",
    fileKey:"aaa",
    formData:{
        id:"123456",
        key:"67890"
    }},
    success: (ret) => {
        // 成功后的回调
    },
    fail: (ret) => {
        // 失败后的回调
    },
    processing: (ret) => {
        // 下载过程中的回调函数
        const { code, data: { progress } } = ret

        console.log(progress) // 下载进度
    },
    complete: (ret) => {
        // 接口调用完成后的回调函数
    }
})

媒体

相机拍照:cameraTakePhoto()

注意:就苹果设备而言,因为隐私权限调整,需要在App的Info.plist中自行添加NSCameraUsageDescription;若未添加,则可能造成闪退。

参数

属性 类型 默认值 必填 说明
quality string normal 成像质量,取值范围:high、normal、low

回调参数

属性 类型 说明
tempImagePath string 照片文件的临时路径

状态码说明

状态码 说明
-1 其他错误
0 成功

示例代码

native.cameraTakePhoto({
    quality: "normal",
    success: (ret) => {
        // 成功后的回调
    },
    fail: (ret) => {
        // 失败后的回调
    },
    complete: (ret) => {
        // 接口调用完成后的回调函数
    }
})

相机录像:cameraStartRecord()、cameraStopRecord()

注意:就苹果设备而言,因为隐私权限调整,需要在App的Info.plist中自行添加NSMicrophoneUsageDescription;若未添加,则可能造成闪退。

cameraStartRecord参数:

属性 类型 默认值 必填 说明
quality string normal 成像质量,取值范围:high、normal、low
recordDuration number 10 录像时间,取值范围:[0,30],单位秒 ,0秒时不操作直接返回

cameraStopRecord参数:无

共同的回调参数:

属性 类型 说明
tempVideoPath string 视频的文件的临时路径
tempThumbPath string 封面图片文件的临时路径

状态码说明

状态码 说明
-1 其他错误
0 成功

示例代码

native.cameraStartRecord({
    quality: "normal",
    recordDuration: 20,
    success: (ret) => {
        // 成功后的回调
    },
    fail: (ret) => {
        // 失败后的回调
    },
    complete: (ret) => {
        // 接口调用完成后的回调函数
    }
})

选择图片:chooseImage()

从本地相册选择图片或使用相机拍照。

参数

属性 类型 默认值 必填 说明
sourceType Array.\ ["album","camera"] 图片的来源,相册(album)、拍照(camera)

回调参数

属性 类型 说明
tempImagePath string 图片文件的临时路径

状态码说明

状态码 说明
-1 其他错误
0 成功

示例代码

native.chooseImage({
    sourceType:["album"]
    success: (ret) => {
        // 成功后的回调
    },
    fail: (ret) => {
        // 失败后的回调
    },
    complete: (ret) => {
        // 接口调用完成后的回调函数
    }
})

压缩图片:compressImage()

参数

属性 类型 默认值 必填 说明
srcFile string 本地图片路径
quality number 0.8 压缩系数,范围[0,1.0],数值越小,图片质量越低

回调参数

属性 类型 说明
tempImagePath string 图片文件的临时路径

状态码说明

状态码 说明
-1 其他错误
0 成功
100 srcFile非法路径
101 参数json格式错误
102 没有正确解码srcFile文件(多为不支持的图片格式)

示例代码

native.compressImage({
    srcFile: "/xxx/test.jpg",
    quality: 0.7,
    success: (ret) => {
        // 成功后的回调
    },
    fail: (ret) => {
        // 失败后的回调
    },
    complete: (ret) => {
        // 接口调用完成后的回调函数
    }
})

保存图片到系统相册:saveImageToPhotosAlbum()

注意:就苹果设备而言,因为隐私权限调整,需要在App的Info.plist中自行添加NSPhotoLibraryAddUsageDescription;若未添加,则可能造成闪退。

参数

属性 类型 默认值 必填 说明
filePath string 本地图片路径

回调参数

状态码说明

状态码 说明
-1 其他错误
0 成功
100 filePath非法路径
101 参数json格式错误
102 没有正确解码srcFile文件(多为不支持的图片格式)

示例代码

native.saveImageToPhotosAlbum({
    filePath:"/xxx/test.jpg",
    success: (ret) => {
        // 成功后的回调
    },
    fail: (ret) => {
        // 失败后的回调
    },
    complete: (ret) => {
        // 接口调用完成后的回调函数
    }
})

文件

读文件: readFile()

目前仅支持文本文件

参数:

属性 类型 默认值 必填 说明
filePath string 本地文件路径
encoding string utf8 字符编码,取值范围:
utf8/utf-8
utf16/utf-16/utf-16le/ucs2/ucs-2
utf-16be
utf32/utf-32/utf-32le/ucs4/ucs-4
utf-32be

回调参数

属性 类型 说明
data string 文件内容

状态码说明

状态码 说明
-1 其他错误
0 成功
100 filePath非法路径
101 参数json格式错误
102 不支持的编码(encoding)
103 解码错误

示例代码

native.readFile({
    filePath:"/xx/xx/test.txt",
    success: (ret) => {
        // 成功后的回调
    },
    fail: (ret) => {
        // 失败后的回调
    },
    complete: (ret) => {
        // 接口调用完成后的回调函数
    }
})

保存文件: saveFile()

目前仅支持文本文件

参数:

属性 类型 默认值 必填 说明
filePath string 本地文件路径
encoding string utf8 字符编码,取值范围:
utf8/utf-8
utf16/utf-16/utf-16le/ucs2/ucs-2
utf-16be
utf32/utf-32/utf-32le/ucs4/ucs-4
utf-32be
data string 文件内容;若data字段值不可用,则会创建一个空文件

回调参数

状态码说明

状态码 说明
-1 其他错误
0 成功
100 filePath非法路径
101 参数json格式错误
102 不支持的编码(encoding)
103 filePath已经存在

示例代码

native.saveFile({
    filePath:"/xx/xx/test.txt",
    success: (ret) => {
        // 成功后的回调
    },
    fail: (ret) => {
        // 失败后的回调
    },
    complete: (ret) => {
        // 接口调用完成后的回调函数
    }
})

删除文件: removeSavedFile()

参数:

属性 类型 默认值 必填 说明
filePath string 本地文件路径

回调参数

状态码说明

状态码 说明
-1 其他错误
0 成功
100 filePath非法路径
101 参数json格式错误

示例代码

native.removeSavedFile({
    filePath:"/xx/xx/test.txt",
    success: (ret) => {
        // 成功后的回调
    },
    fail: (ret) => {
        // 失败后的回调
    },
    complete: (ret) => {
        // 接口调用完成后的回调函数
    }
})

数据缓存

本地缓存操作

获取缓存: getStorage()

参数:

属性 类型 默认值 必填 说明
key string 缓存的唯一标识

回调参数

属性 类型 说明
value string

状态码说明

状态码 说明
-1 其他错误
0 成功
100 key为空、或长度为0
101 参数json格式错误

示例代码

native.getStorage({
    key:"k1",
    success: (ret) => {
        // 成功后的回调
    },
    fail: (ret) => {
        // 失败后的回调
    },
    complete: (ret) => {
        // 接口调用完成后的回调函数
    }
})

更新缓存: setStorage()

参数:

属性 类型 默认值 必填 说明
key string 缓存的唯一标识
value any 缓存的值,需要存储的内容。只支持原生类型、Date、及能够通过JSON.stringify序列化的对象

回调参数

状态码说明

状态码 说明
-1 其他错误
0 成功
100 key不合法(为空、长度为0)
101 参数json格式错误
102 value不合法

示例代码

native.setStorage({
    key:"k1",
    value:[1,2,3,4],
    success: (ret) => {
        // 成功后的回调
    },
    fail: (ret) => {
        // 失败后的回调
    },
    complete: (ret) => {
        // 接口调用完成后的回调函数
    }
})

移除缓存: removeStorage()

参数:

属性 类型 默认值 必填 说明
key string 缓存的唯一标识

回调参数

状态码说明

状态码 说明
-1 其他错误
0 成功
100 key为空、或长度为0
101 参数json格式错误

示例代码

native.removeStorage({
    key:"k1",
    success: (ret) => {
        // 成功后的回调
    },
    fail: (ret) => {
        // 失败后的回调
    },
    complete: (ret) => {
        // 接口调用完成后的回调函数
    }
})

清除所有缓存: clearStorage()

参数: 无

回调参数: 无

状态码说明

状态码 说明
-1 其他错误
0 成功

示例代码

native.clearStorage({
    success: (ret) => {
        // 成功后的回调
    },
    fail: (ret) => {
        // 失败后的回调
    },
    complete: (ret) => {
        // 接口调用完成后的回调函数
    }
})

设备

获取系统剪贴板的内容: getClipboardData()

回调参数: 无

示例代码

native.getClipboardData({
    success: (ret) => {
        // 成功后的回调
    },
    fail: (ret) => {
        // 失败后的回调
    },
    complete: (ret) => {
        // 接口调用完成后的回调函数
    }
})

设置系统剪贴板的内容: setClipboardData()

参数

属性 类型 默认值 必填 说明
data string 剪贴板的内容

回调参数

属性 类型 说明
data string 剪贴板的内容

示例代码

native.setClipboardData({
    data:"设置剪贴板",
    success: (ret) => {
        // 成功后的回调
    },
    fail: (ret) => {
        // 失败后的回调
    },
    complete: (ret) => {
        // 接口调用完成后的回调函数
    }
})

获取网络类型:getNetworkType()

回调参数

属性 类型 说明
networkType string 网络类型

网络类型 networkType 的合法值:

说明
wifi wifi网络
2g 2g网络
3g 3g网络
4g 4g网络
unknown Android 下不常见的网络类型
none 无网络

示例代码

native.getNetworkType({
    success: (ret) => {
        // 成功后的回调
    },
    fail: (ret) => {
        // 失败后的回调
    },
    complete: (ret) => {
        // 接口调用完成后的回调函数
    }
})

添加更新联系人:addPhoneContact()

注意:就苹果设备而言,因为隐私权限调整,需要在App的Info.plist中自行添加NSContactsUsageDescription;若未添加,则可能造成闪退。

添加手机通讯录联系人。用户可以选择将该表单以「新增联系人」或「添加到已有联系人」的方式,写入手机系统通讯录。

参数

属性 类型 默认值 必填 说明
firstName string 名字
addMode string insert 取值范围:
insert(总是创建新联系人)
update(若firstName联系人存在,则对第一个找到的联系人进行覆盖更新;若不存在,则创建新联系人)
photoFilePath string 头像本地文件路径
nickName string 昵称
lastName string 姓氏
middleName string 中间名
remark string 备注
mobilePhoneNumber string 手机号
email string 电子邮箱
homepage string 网站主页
addressCountry string 联系地址国家
addressState string 联系地址省份
addressCity string 联系地址城市
addressStreet string 联系地址街道
addressPostalCode string 联系地址邮政编码
organization string 公司
title string 职位
workFaxNumber string 工作传真
workPhoneNumber string 工作电话
workAddressCountry string 工作地址国家
workAddressState string 工作地址省份
workAddressCity string 工作地址城市
workAddressStreet string 工作地址街道
workAddressPostalCode string 工作地址邮政编码
homeFaxNumber string 住宅传真
homePhoneNumber string 住宅电话
homeAddressCountry string 住宅地址国家
homeAddressState string 住宅地址省份
homeAddressCity string 住宅地址城市
homeAddressStreet string 住宅地址街道
homeAddressPostalCode string 住宅地址邮政编码

回调参数

状态码说明

状态码 说明
-1 其他错误
0 成功
100 firstName为空、或长度为0
101 参数json格式错误
102 用户不允许该操作(没有授予权限)

示例代码

native.addPhoneContact({
    firstName:"Limi",
    success: (ret) => {
        // 成功后的回调
    },
    fail: (ret) => {
        // 失败后的回调
    },
    complete: (ret) => {
        // 接口调用完成后的回调函数
    }
})

HCE能力:getHCEState()

判断当前设备是否支持 HCE 能力

注意:目前,就苹果而言,该接口不会返回0

参数: 无

回调参数: 无

状态码说明

说明
-1 未知状态
0 正常
1 当前设备不支持NFC
2 当前设备支持NFC,但系统NFC开关未开启
3 当前设备支持NFC,但不支持HCE

示例代码

native.getHCEState({
    success: (ret) => {
        // 成功后的回调
    },
    fail: (ret) => {
        // 失败后的回调
    },
    complete: (ret) => {
        // 接口调用完成后的回调函数
    }
})

拨打电话:makePhoneCall()

参数

属性 类型 默认值 必填 说明
phoneNumber string 电话号码

回调参数: 无

状态码说明

状态码 说明
-1 其他错误
0 成功
100 phoneNumber不合法
101 参数json格式错误
102 用户不允许该操作

示例代码

native.makePhoneCall({
    phoneNumber:"12345678901",
    success: (ret) => {
        // 成功后的回调
    },
    fail: (ret) => {
        // 失败后的回调
    },
    complete: (ret) => {
        // 接口调用完成后的回调函数
    }
})

扫码:scanCode()

参数:无

回调参数

属性 类型 说明
result string 扫描内容

状态码说明

状态码 说明
-1 其他错误
0 成功
1 用户取消操作

示例代码

native.scanCode({
    success: (ret) => {
        // 成功后的回调
    },
    fail: (ret) => {
        // 失败后的回调
    },
    complete: (ret) => {
        // 接口调用完成后的回调函数
        const { code } = ret

        if (code === 1) {
            // 用户取消
        }
    }
})

toast提示:showToast()

参数

属性 类型 默认值 必填 说明
tip string 提示文字
image string 本地文件路径
duration number 1500 提示时间,单位毫秒

回调参数: 无

状态码说明

状态码 说明
-1 其他错误
0 成功
100 tip不合法(空或长度为0)
101 image文件不存在、不支持的图片格式
102 参数json格式错误

示例代码

native.showToast({
    tip:"hello world",
    success: (ret) => {
        // 成功后的回调
    },
    fail: (ret) => {
        // 失败后的回调
    },
    complete: (ret) => {
        // 接口调用完成后的回调函数
    }
})

toast提示:hideToast()

参数:无

回调参数

状态码说明

状态码 说明
-1 其他错误
0 成功

示例代码

native.hideToast({
    success: (ret) => {
        // 成功后的回调
    },
    fail: (ret) => {
        // 失败后的回调
    },
    complete: (ret) => {
        // 接口调用完成后的回调函数
    }
})

导航错误码

状态码 说明
-1 其他错误
0 成功
100 参数json格式错误
101 backgroundColor不合法
102 frontColor不合法
103 导航栏设置显示,但按钮的title或者iconBase64缺失
104 导航栏设置显示,但解码iconBase64失败
105 没有找到webView的控制器(webView可能不是通过控制器添加到屏幕的)
106 webview的控制器是导航栈的根,无法关闭
107 无法确定webview的控制器如何添加到屏幕上

设置导航栏颜色:setNavigationBarColor()

参数

属性 类型 默认值 必填 说明
frontColor string 前景色,当前仅支持十六进制的RGB格式
backgroundColor string 背景色,当前仅支持十六进制的RGB格式

回调参数: 无

状态码说明

参见导航错误码

示例代码

native.setNavigationBarColor({
    frontColor:"#FF0000",
    backgroundColor:"#00FFFF",
    success: (ret) => {
        // 成功后的回调
    },
    fail: (ret) => {
        // 失败后的回调
    },
    complete: (ret) => {
        // 接口调用完成后的回调函数
    }
})

设置导航栏标题:setNavigationBarTitle()

参数

属性 类型 默认值 必填 说明
title string 标题

回调参数: 无

状态码说明

状态码 说明
-1 其他错误
0 成功
100 参数json格式错误

示例代码

native.setNavigationBarTitle({
    title:"page title"
    success: (ret) => {
        // 成功后的回调
    },
    fail: (ret) => {
        // 失败后的回调
    },
    complete: (ret) => {
        // 接口调用完成后的回调函数
    }
})

设置导航栏内容:setNavigationBarContent()

参数

属性 类型 默认值 必填 说明
hide number 0 显示/隐藏导航栏
1 : 隐藏(无动画) 0:显示(无动画) 如果设置隐藏导航栏,则忽略其他参数
title string 标题
leftButton Object 左侧标题 参见导航栏按钮
rightButton Object 右侧侧标题 参见导航栏按钮

导航栏按钮(leftButton, rightButton):

属性 类型 默认值 必填 说明
hide number 0 显示/隐藏导航栏
1 : 隐藏(无动画) 0:显示(无动画) 如果设置隐藏,则忽略其他参数
title string 按钮标题
优先显示title
iconBase64 string 优先显示title; 按钮图标,Base64编码
callback Function 点击按钮时,调用前端的方法名
方法接受一个参数,如果导航栏显示,则该参数必填
callbackData string 点击按钮时,调用前端的方法接受的参数
方法接受一个参数

回调参数: 无

状态码说明

参见导航错误码

示例代码

native.setNavigationBarTitle({
    hide:0,
    title:"page title",
    leftButton: {
        title:"返回",
        callback:"closepage", //closepage接受一个参数
        callbackData:"123456"
    },
    rightButton: {
        hide:0
    },
    success: (ret) => {
        // 成功后的回调
    },
    fail: (ret) => {
        // 失败后的回调
    },
    complete: (ret) => {
        // 接口调用完成后的回调函数
    }
})

关闭本页面:navigationCloseThisPage()

参数

属性 类型 默认值 必填 说明
animated number 1 1 : 有动画 0:无动画

回调参数: 无

状态码说明

参见导航错误码

示例代码

native.navigationCloseThisPage({
    animated: 10,
    success: (ret) => {
        // 成功后的回调
    },
    fail: (ret) => {
        // 失败后的回调
    },
    complete: (ret) => {
        // 接口调用完成后的回调函数
    }
})

系统

异步获取系统信息: getSystemInfo()

回调参数

属性 类型 说明
brand string 手机品牌
model string 手机型号
pixelRatio number 设备像素比
screenWidth number 屏幕宽度
screenHeight number 屏幕高度
windowWidth number 可使用窗口宽度
windowHeight number 可使用窗口高度
statusBarHeight number 状态栏的高度
language string 当前使用的语言
system string 操作系统版本
platform string 客户端平台
SDKVersion string Firefly版本

示例代码

native.getSystemInfo({
    success: (ret) => {
        // 成功后的回调
    },
    fail: (ret) => {
        // 失败后的回调
    },
    complete: (ret) => {
        // 接口调用完成后的回调函数
    }
})

同步获取系统信息: getSystemInfoSync()

返回值:

属性 类型 说明
brand string 手机品牌
model string 手机型号
pixelRatio number 设备像素比
screenWidth number 屏幕宽度
screenHeight number 屏幕高度
windowWidth number 可使用窗口宽度
windowHeight number 可使用窗口高度
statusBarHeight number 状态栏的高度
language string 当前使用的语言
system string 操作系统版本
platform string 客户端平台
SDKVersion string Firefly版本

示例代码

const str = native.getSystemInfoSync()

同步获取app版本: getAppVersion()

返回值:

属性 类型 说明
appVersion string app版本

示例代码

const str = native.getAppVersion()

基础

判断Jsbridge是否在当前版本可用: hasNativeMethod()

判断小程序的API是否在当前版本可用。

参数

string

使用 ${API} 方式来调用

返回值

boolean

当前版本是否可用

示例代码

const boolean = cmbc.hasNativeMethod('chooseImage')

console.log(boolean)
Copyright © 民生科技有限公司 2019 all right reserved,powered by Gitbook联系方式: wanglihang@mskj.com
修订时间: 2019-08-02 16:19:34

results matching ""

    No results matching ""