0.0.10 • Published 1 year ago

@gf-tech/gfsdk v0.0.10

Weekly downloads
-
License
ISC
Repository
-
Last release
1 year ago

app sdk(移动端壳交互 sdk)

冠方原生 App 壳交互文档

H5 应用在嵌入 App(公司开发的 App)中,存在一些原生交互行为。

原理:原生 App 在打开 webview 时,可以全局注入 js 脚本代码,然后嵌入的 wen 网页调用注入的 js 脚本实现与原生 App 的交互。

默认全局注入 GFAPP 变量,区分是否在 APP 内

目录

  1. 事件

    1.1 激活程序

  2. 获取设备信息

    2.1 获取网络状态

    2.2 获取加速度信息

    2.3 获取地理位置信息

  3. App 原生操作

    3.1 关闭 webview

    3.2 拍照

    3.3 录音

    3.4 录像[暂不支持]

    3.5 播放音频、视频[待完善]

    3.6 调用震动

    3.7 文件系统(上传、保存文件

install

npm i @gf-tech/gfsdk

Or

down the js

use

import GFSdk from "@gf-tech/gfsdk";

const gfSdk = new GFSdk();

Or

<script src="../GFSdk.min.js"></script>

<script>
  var gfSdk = new GFSdk();
</script>

事件

激活程序

原生 App 锁屏、切换至后台后重新激活时可以触发激活事件.

gfSdk.on("actived", function () {
  console.log("app is actived");
});

获取设备信息

获取网络状态

出参: "data" | "WIFI" | "offLine" | "unknow", data 为手机流量

gfSdk
  .getNetwork()
  .then((res) => console.log(res))
  .catch((err) => console.log(err));
// "data"

获取地理位置信息

出参:经纬度坐标

gfSdk
  .getGeoInfo()
  .then((res) => console.log(res))
  .catch((err) => console.log(err));
// { latitude: 100, longitude: 160 }

获取加速度信息(常用场景:摇一摇)暂不支持

出参:

gfSdk
  .getAcceleration()
  .then((res) => console.log(res))
  .catch((err) => console.log(err));
// { x: 120; y: 140; z: 10; }

App 原生操作

H5 门户向 App 注册用户 ID

gfSdk.login(userId);

H5 退出向 App 注销

gfSdk.logout();

打开 webview

gfSdk.openWebview(url: string);

关闭 webview

gfSdk.closeWebview();

拍照

可以选择图片来源和指定返回数据类型。默认返回类型为临时路径列表,临时路径可使用 sdk 上传方法进行上传。在某些情况也可以返回图片 base64 编码,但是 base64 存在许多问题(主要是原生程序与 H5 交互问题,存在不稳定性),所以base64 场景下尽量少选择图片,并且会将图片进行压缩

参数:

{
  type: "temp" | "base64"; // 返回类型,默认返回临时路径,当使用base64时,
  sourceType: Array<"album" | "camera"| "transcribe"| "video">; // 指定来源是相册、相机、录制、视频,默认四者都有
}

出参: 图片路径(base64)数组

gfSdk
  .chooseImage({
    type: "temp",
    sourceType: ["album", "camera", "transcribe", "video"],
  })
  .then((res) => console.log(res))
  .catch((err) => console.log(err));
// [temp://gfApp/cache/xxxx.jpg]

扫一扫(调用系统相机完成扫码)

入参: 扫码类型:二维码:"QR", 条形码:"Bar"

出参: 二维码、条形码字符串

gfSdk
  .scanCode(type)
  .then((res) => console.log(res))
  .catch((err) => console.log(err));
// 999888werrw

录音

录音仅支持不间断录音,如果之前录音未结束又开启了新录音则不会执行任何操作。开始录音后返回当前录音的 id,录音停止成功后返回当前录音的临时文件路径(使用 sdk 上传方法进行上传)。

// start
gfSdk
  .startRecord()
  .then((res) => console.log(res))
  .catch((err) => console.log(err));
// 001

// end
gfSdk
  .stopRecord(id)
  .then((res) => console.log(res))
  .catch((err) => console.log(err));
// temp://gfApp/cache/xxxx.mp3

录像

与录音相同

// start
gfSdk
  .startVideoRecord()
  .then((res) => console.log(res))
  .catch((err) => console.log(err));
// 002

// end
gfSdk
  .stopVideoRecord()
  .then((res) => console.log(res))
  .catch((err) => console.log(err));
// temp://gfApp/cache/xxxx.mp4

播放音频、视频暂不支持

一般来说,H5 网页能够自行播放音视频。但一些缓存的文件,或者一些不支持的文件格式可以使用该 api 进行播放。调用该 api 后将播放控制权则交由原生程序。

gfSdk.playAudio(url:string).catch(err => console.log(err))

gfSdk.playVideo(url:string).catch(err => console.log(err))

调用震动

开始震动接受 3 个参数:

duration number 一次震动的时长(毫秒 interval number 两次震动的间隔(毫秒 totalTime number 震动的总时长(毫秒),如不设置则会一直进行

// startShock
gfSdk
  .startShock(duration, interval, totalTime)
  .then((res) => console.log(res))
  .catch((err) => console.log(err));
// 003

// stopShock
gfSdk.stopShock(id);

文件系统(上传、保存、打开文件

保存文件传入文件路径,自动打开文件浏览器选择保存路径进行保存

入参:

// 上传时
{
  url: string, // 上传文件地址
  fileKey?: string, // 上传文件参数的key, 默认file
  path?: string, // 临时文件路径,没有该参数时则打开文件浏览器选择文件
  params?: object, // 上传时附带参数
  headers?: object, // 上传时的请求头
}
// 下载时为下载文件远程路径
// uploadFile
gfSdk
  .uploadFile(config)
  .then((res) => res)
  .catch((err) => err);
// http://xxx.xxx.com/xxx/xxx

// saveFile
gfSdk
  .saveFile(path)
  .then(() => console.log("ok"))
  .catch((err) => console.log(err));
// openFile
gfSdk
  .openFile(path)
  .then(() => console.log("ok"))
  .catch((err) => console.log(err));

支付

参数:

{
 type?: "wx"; //支付类型 目前只支持微信支付,默认为wx
 params:string;//支付参数json字符串 微信支付所带参数(应用ID appid; 商户号 partnerid; 预支付交易会话ID prepayid;订单详情扩展字符串 package; 随机字符串 noncestr;时间戳 timestamp;签名	sign)
}

出参: 支付结果

gfSdk
  .pay({
    type: "wx",
    params: "{}",
  })
  .then((res) => console.log(res))
  .catch((err) => console.log(err));
0.0.10

1 year ago

0.0.3

2 years ago

0.0.9

2 years ago

0.0.8

2 years ago

0.0.5

2 years ago

0.0.4

2 years ago

0.0.7

2 years ago

0.0.6

2 years ago

0.0.2

2 years ago

0.0.1

3 years ago