关于APICloud 开发文档

介绍:
APICloud是国内低代码开发平台的引领者与效率革命的探索者,基于云原生、混合开发、API连接、DevOps等能力的广泛应用,在APICloud低代码开发平台,可将原有数月甚至数年的开发时间成倍缩短,加速企业级应用的研发与落地,从而为企业降本增效,轻松应对创新性数字化挑战...

废话不多说,总之在移动端运用它可以轻便的完成很多功能的开发与实现~

此篇文章介绍部分我在开发中运用它解决过的问题

目录:

app内禁用某个页面手势滑动返回

将屏幕像素转换成图片保存至手机相册

单个页面强制横屏

选择本地图片前获取设备权限

那么就开始逐一介绍啦!!!

1. app内禁用某个页面手势滑动返回

如果想禁用某个单独的页面手势滑动返回,在api文档上只找到了ios的禁用滑动返回,但是安卓却没有,为此请教了移动组相关人员,总结出可以使用以下api来实现

ios:如果是通过openwin跳转的,则在跳转中加这个参数即可,或添加监听参数,看下面keyback事件

php 复制代码
     api.openWin({
         name: this.RandomPass(10),
         url: `${userHost}/icve-m/#/whiteboard`,
         bounces: true,
         slidBackEnabled: false,//禁用ios手势滑动返回
         softInputMode: 'resize'
        })

安卓:监听安卓设备 back 键被点击事件,以及 TabLayout 中的返回按钮点击事件,iOS 中可传入 slidBackIntercept 参数监听页面右滑返回事件

php 复制代码
api.addEventListener({
    name: 'keyback',
    extra:{
    slidBackIntercept:false //打开页面时若 slidBackType 参数为 edge,可通过此参数设置是否拦截页面右滑返回,只 iOS 有效,默认值为 false,布尔类型
}},
   function(ret, err) {
 //这里可以做单独的安卓操作,滑动时关闭此页面
   api.closeWin()
});
2. 将屏幕像素转换成图片保存至手机相册-saveMediaToAlbum

如果想将一个图片保存至手机相册,除了处理图片url外,最重要的是怎么保存至手机相册

javascript 复制代码
let aUrl = `${userHost.slice(0, -1)}${res}`
      api.saveMediaToAlbum(
        {
          path: aUrl
        },
        function (ret, err) {
          if (ret && ret.status) {
            alert('保存成功')
          } else {
            alert('保存失败')
          }
        }
      )
3. 单个页面强制横屏

近期开发白板,需要将白板页变成横屏,尝试过用css旋转或者用定位进行视觉上的横屏,但是由于白板功能较多,关系到绘制/旋转/文本框移动等功能的x与y轴的偏移

在询问各个大佬过后,得出了一下api监听方法:

javascript 复制代码
// 监听页面显示事件
        api.addEventListener(
          {
            name: 'viewappear'
          },
          function (ret, err) {
            // 设置为横屏
            api.setScreenOrientation({
              orientation: 'landscape_left' // 设置为横屏左侧朝上
            })
          }
        )

但是发现这样做横屏极其不稳定,比如app从前台退到后台后再进入app就会变成竖屏、ios横屏需要等待半分钟、直接返回会让整个app都变成横屏

其中用到了事件轮询去检测api是否获取到,获取到再执行以上方法,这样就解决了时而横屏时而竖屏的问题:

另外增加了监听app从后台到前台的方法,这样就都解决啦:

以下是完整代码:获取到api对象后就清除不执行检测

javascript 复制代码
this.apiTimer = setInterval(() => {
      if (api != null) {
        window.clearInterval(this.apiTimer)
        // 监听页面显示事件
        api.addEventListener(
          {
            name: 'viewappear'
          },
          function (ret, err) {
            // 设置为横屏
            api.setScreenOrientation({
              orientation: 'landscape_left' // 设置为横屏左侧朝上
            })
          }
        )
        api.addEventListener(
          {
            name: 'resume'
          },
          function (ret, err) {
            api.setScreenOrientation({
              orientation: 'landscape_left' // 设置为横屏左侧朝上
            })
          }
        )
      }
    }, 500)

那横屏影响了整个app该怎么做呢?由于我们跳转用的是vue路由跳转,可能里面有什么影响吧,所以改成了api的跳转方式,跳过去后返回的时候再关闭当前页面,这样就解决了影响app其他页面的问题:

javascript 复制代码
  //跳转白板页
    whiteboard() {
      api.openWin({
        name: this.RandomPass(10),
        url: `${userHost}/icve-m/#/whiteboard`,
        bounces: true,
        softInputMode: 'resize'
      })
    },
javascript 复制代码
//返回上一页
onClickLeft() {
      api.setScreenOrientation({
        orientation: 'portrait_up' // 设置为横屏左侧朝上
      })
      setTimeout(function () {
        api.closeWin()
      }, 500)
    },
4. 选择本地图片前获取设备权限-requestPermission
javascript 复制代码
 openPermission() {
      //获取相机和文件访问权限
      if (typeof api != 'undefined') {
        let permissionList = api.hasPermission({ list: ['camera', 'photos'] })
        if (!permissionList[0].granted || !permissionList[0].granted) {
          api.confirm(
            {
              msg: '应用需要您的授权才能访问相机及本地相册',
              buttons: ['取消', '去设置']//调起权限时的按钮选择
            },
            function (ret) {
              if (ret.buttonIndex == 2) {
                api.requestPermission(
                  {
                    list: ['camera', 'photos']//获取权限后调起选择时文件还是照片
                  },
                  function (res) {
                    if (res.list[0].granted && res.list[1].granted) {
                      this.$refs.file.click()//选择后调起本地文件选择框
                    }
                  }
                )
              }
            }
          )
        } else {
          this.$refs.file.click()
        }
      }

关于APICloud 部分介绍就到这里啦,学艺不精,请多多指教

相关推荐
生椰拿铁You几秒前
09 —— Webpack搭建开发环境
前端·webpack·node.js
狸克先生12 分钟前
如何用AI写小说(二):Gradio 超简单的网页前端交互
前端·人工智能·chatgpt·交互
baiduopenmap26 分钟前
百度世界2024精选公开课:基于地图智能体的导航出行AI应用创新实践
前端·人工智能·百度地图
loooseFish34 分钟前
小程序webview我爱死你了 小程序webview和H5通讯
前端
请叫我欧皇i1 小时前
html本地离线引入vant和vue2(详细步骤)
开发语言·前端·javascript
533_1 小时前
[vue] 深拷贝 lodash cloneDeep
前端·javascript·vue.js
guokanglun1 小时前
空间数据存储格式GeoJSON
前端
zhang-zan1 小时前
nodejs操作selenium-webdriver
前端·javascript·selenium
猫爪笔记2 小时前
前端:HTML (学习笔记)【2】
前端·笔记·学习·html
brief of gali2 小时前
记录一个奇怪的前端布局现象
前端