美文网首页
hybrid app 调用JSAPI

hybrid app 调用JSAPI

作者: 甜点cc | 来源:发表于2022-04-09 17:54 被阅读0次

Cordova框架做的webview

当调用JSAPI时,必须在页面完全加载完成之后才能够拿到全局的JSAPI,Cordova框架提供deviceready事件,该事件触发的时候表示全局的JSAPI挂载成功。

简单写下如下:

document.addEventListener('deviceready', function () {
  console.log('deviceready OK!');
  JSAPI.showToast(0, '提示信息')
}, false)

需要注意的是,在开发环境,是没有 deviceready 事件的,所以上面的代码并不会执行,只有在app里面运行的时候才会执行。于是,就可以用到上一篇写的: 自定义事件CustomEvent, 通过自定义事件模拟触发deviceready事件,这样上面 deviceready 事件监听就可以执行了。

这里还要确定一个问题,在什么时候触发自定义事件deviceready。

执行顺序:load -> deviceready

window.addEventListener('load', function () {
  console.log('load OK!');
}, false);
 
document.addEventListener('deviceready', function () {
  console.log('deviceready OK!');
}, false);

// 输出: load OK! -> deviceready OK!

自定义事件模拟Cordova deviceready事件

并模拟一些用到的JS-API,比如下面写到的 JSAPI.showToast() 方法

// mockEvent.js
if (process.env.NODE_ENV === 'development') {
  // 触发
  let myEvent = new CustomEvent('deviceready');
  
  // 模拟JSAPI事件
  window['JSAPI'] = {
    showToast(type, desc) {
      console.log(type, desc)
    }
  }
  // ...

  // 在 原生 load 方法之后 触发自定义事件
  window.addEventListener('load', function () {
    console.log('load OK!');
    setTimeout(() => {
      document.body.dispatchEvent(myEvent);
    }, 100)
  }, false);
}

封装deviceReady方法

实现在Cordova框架触发deviceready事件的时候感知到,以便于在deviceReady方法返回后执行JS-API。

可用于开发环境和非开发环境。

deviceReady() {
  return new Promise((resolve) => {
    window.addEventListener('deviceready', function () {
      resolve("ready go!")
    }, false);
  })
}

组件内使用JS-API

使用JSAPI可以如下这么写

this.deviceReady().then((res) => {
  console.log(res) // ready go!
  JSAPI.showToast(0, '提示')
})


this.deviceReady().then((res) => {
  // JSAPI.getUserInfo((res) => {
  //  console.log(res)
  //}, (err) => {
  //  console.log(err)
  //})
})

开发环境执行效果如下:

image.png

注意(先看这里)

当应用发布到app上,就是监听的真实的 Cordova框架的 deviceready 事件了,之后也就可以拿到真实的JSAPI了,以上只是为了在开发环境的时候模拟使用JSAPI。防止在开发环境下直接调用JSAPI飘红的情况,当然也是可以加try catch处理的,只不过个人感觉模拟事件使得代码看起来更加优雅别致一点,酌情食用。

相关文章

  • hybrid app 调用JSAPI

    Cordova框架做的webview 当调用JSAPI时,必须在页面完全加载完成之后才能够拿到全局的JSAPI,C...

  • Hybrid APP - 混合式开发

    Hybrid APP基础篇(一)->什么是Hybrid App Hybrid APP基础篇(二)->Native、...

  • 微信支付-六种支付模式

    JSAPI--JSAPI支付(或小程序支付)、NATIVE--Native支付、APP--app支付,MWEB--...

  • JSAPI 简介

    JSAPI 简介 JSAPI支付是指商户通过调用微信支付提供的JSAPI接口,在支付场景中调起微信支付模块完成收款...

  • HybridApp

    iOS Hybrid 框架 - PhoneGap iOS Hybrid 框架Hybrid App 开发(开篇) ...

  • Hybrid App—— WKWebView demo

    市场现有3类主流APP类型,分别为:Web App、Hybrid App、 Native App。 Hybrid ...

  • Framework7+Vue+Flask开发实战 - PT保种管

    参考:PhoneGap Hybrid APP 开发实战(3):用户登录 鉴权PhoneGap Hybrid APP...

  • iOS-Hybrid App入门实战

    Hybrid App概述 移动端APP种类可分为三类:Web APP(网页应用)、Hybrid APP(混合应用)...

  • Hybrid App

    Hybrid App Hybrid App(混合模式移动应用)是指介于web-app、native-app这两者之...

  • Hybrid App中原生页面 VS H5页面

    现有3类主流APP,分别为:Web App、Hybrid App(混合模式移动应用,Hybrid有“混合的”...

网友评论

      本文标题:hybrid app 调用JSAPI

      本文链接:https://www.haomeiwen.com/subject/orgpsrtx.html