HBuilderX

HBuilderX

极客开发工具
uni-app

uni-app

开发一次,多端覆盖
uniCloud

uniCloud

云开发平台
HTML5+

HTML5+

增强HTML5的功能体验
MUI

MUI

上万Star的前端框架

【经验分享】部分安卓手机无法搜索到蓝牙设备问题(onReceive不执行)

搜索设备 蓝牙打印

直接上解决方案:
经过排查,最后发现是因为部分手机需要授权位置信息的原因,权限管理已勾上但是未弹出授权提示,故直接在搜索蓝牙前调用plus.android.requestPermissions提示授权;

plus.android.requestPermissions(['android.permission.BLUETOOTH','android.permission.BLUETOOTH_ADMIN','android.permission.WRITE_EXTERNAL_STORAGE','android.permission.ACCESS_COARSE_LOCATION','android.permission.ACCESS_FINE_LOCATION'])
继续阅读 »

直接上解决方案:
经过排查,最后发现是因为部分手机需要授权位置信息的原因,权限管理已勾上但是未弹出授权提示,故直接在搜索蓝牙前调用plus.android.requestPermissions提示授权;

plus.android.requestPermissions(['android.permission.BLUETOOTH','android.permission.BLUETOOTH_ADMIN','android.permission.WRITE_EXTERNAL_STORAGE','android.permission.ACCESS_COARSE_LOCATION','android.permission.ACCESS_FINE_LOCATION'])
收起阅读 »

淘宝客APP开源

nvue

基于uniapp nvue开发的一款淘客APP 现全部开源:https://ext.dcloud.net.cn/plugin?id=2641#detail

基于uniapp nvue开发的一款淘客APP 现全部开源:https://ext.dcloud.net.cn/plugin?id=2641#detail

uni-app中使用webview加载网页,支持后退和关闭

Webview
  1. pages.json
"pages": [  
    {  
            "path" : "pages/index/web",  
            "style": {  
              "app-plus": {  
                "titleNView": {  
                  "buttons": [{  
                    "type": "close",  
                    "float": "left",  
                    "color": "#FFFFFF"  
                  }]  
                }  
              }  
            }  
        }  
]
  1. web.vue
<template>  
  <view>  
  </view>  
</template>  

<script>  
  export default {  
    data () {  
      return {  
        wv: null,  
        canBack: false  
      }  
    },  
    onLoad(params) {  
      if (!params.url) {  
        return  
      }  
      if (params.title) {  
        uni.setNavigationBarTitle({  
          title: params.title  
        })  
      }  

      // #ifdef APP-PLUS  
      const url = params.url  
      const wv = plus.webview.create("", "custom-webview", {  
        plusrequire: "none", //禁止远程网页使用plus的API,有些使用mui制作的网页可能会监听plus.key,造成关闭页面混乱,可以通过这种方式禁止  
        'uni-app': 'none', //不加载uni-app渲染层框架,避免样式冲突  
        top: uni.getSystemInfoSync().statusBarHeight + 44 //放置在titleNView下方。如果还想在webview上方加个地址栏的什么的,可以继续降低TOP值  
      })  
      wv.loadURL(url)  

      const currentWebview = this.$scope.$getAppWebview(); //此对象相当于html5plus里的plus.webview.currentWebview()。在uni-app里vue页面直接使用plus.webview.currentWebview()无效,非v3编译模式使用this.$mp.page.$getAppWebview()  
      currentWebview.append(wv); //一定要append到当前的页面里!!!才能跟随当前页面一起做动画,一起关闭  

      const self = this  
      wv.addEventListener('loaded', e => {  
        wv.canBack(e => {  
          self.canBack = e.canBack  
          currentWebview.setTitleNViewButtonStyle(0, {  
            color: e.canBack ? '#000' : '#fff',    
          });  
        })  
      })  
      this.wv = wv  
      // #endif  
    },  
    onBackPress(e) {  
      if (e.from === 'navigateBack') {    
        return false  
      }  
      // #ifdef APP-PLUS  
      if (this.wv && this.canBack) {  
        this.wv.back()  
        return true  
      }  
      // #endif  
    },  
    onNavigationBarButtonTap (e) {  
      uni.navigateBack()  
    }  
  }  
</script>
继续阅读 »
  1. pages.json
"pages": [  
    {  
            "path" : "pages/index/web",  
            "style": {  
              "app-plus": {  
                "titleNView": {  
                  "buttons": [{  
                    "type": "close",  
                    "float": "left",  
                    "color": "#FFFFFF"  
                  }]  
                }  
              }  
            }  
        }  
]
  1. web.vue
<template>  
  <view>  
  </view>  
</template>  

<script>  
  export default {  
    data () {  
      return {  
        wv: null,  
        canBack: false  
      }  
    },  
    onLoad(params) {  
      if (!params.url) {  
        return  
      }  
      if (params.title) {  
        uni.setNavigationBarTitle({  
          title: params.title  
        })  
      }  

      // #ifdef APP-PLUS  
      const url = params.url  
      const wv = plus.webview.create("", "custom-webview", {  
        plusrequire: "none", //禁止远程网页使用plus的API,有些使用mui制作的网页可能会监听plus.key,造成关闭页面混乱,可以通过这种方式禁止  
        'uni-app': 'none', //不加载uni-app渲染层框架,避免样式冲突  
        top: uni.getSystemInfoSync().statusBarHeight + 44 //放置在titleNView下方。如果还想在webview上方加个地址栏的什么的,可以继续降低TOP值  
      })  
      wv.loadURL(url)  

      const currentWebview = this.$scope.$getAppWebview(); //此对象相当于html5plus里的plus.webview.currentWebview()。在uni-app里vue页面直接使用plus.webview.currentWebview()无效,非v3编译模式使用this.$mp.page.$getAppWebview()  
      currentWebview.append(wv); //一定要append到当前的页面里!!!才能跟随当前页面一起做动画,一起关闭  

      const self = this  
      wv.addEventListener('loaded', e => {  
        wv.canBack(e => {  
          self.canBack = e.canBack  
          currentWebview.setTitleNViewButtonStyle(0, {  
            color: e.canBack ? '#000' : '#fff',    
          });  
        })  
      })  
      this.wv = wv  
      // #endif  
    },  
    onBackPress(e) {  
      if (e.from === 'navigateBack') {    
        return false  
      }  
      // #ifdef APP-PLUS  
      if (this.wv && this.canBack) {  
        this.wv.back()  
        return true  
      }  
      // #endif  
    },  
    onNavigationBarButtonTap (e) {  
      uni.navigateBack()  
    }  
  }  
</script>
收起阅读 »

uniapp父组件请求数据再渲染并传递子组件

很多时候都会遇见在父组件中请求数据,然后在子组件中使用。但结果是还在父组件请求数据时,子组件就已经渲染出来了,传递的数据为父组件data中设置的默认值。为解决这个问题,我选择的方案是:采用 v-if,一开始先不渲染子组件,再数据请求结果出来后,再进行渲染。

很多时候都会遇见在父组件中请求数据,然后在子组件中使用。但结果是还在父组件请求数据时,子组件就已经渲染出来了,传递的数据为父组件data中设置的默认值。为解决这个问题,我选择的方案是:采用 v-if,一开始先不渲染子组件,再数据请求结果出来后,再进行渲染。

第一次下载,发现官网下载页有个bug

下载
  • 打开下载页面后,怎么都找不到下载按钮

  • 想了想,是不是藏起来了

  • 果不其然
  • 打开下载页面后,怎么都找不到下载按钮

  • 想了想,是不是藏起来了

  • 果不其然

解决iOS下wap2app打开页面或Ajax请求慢的问题

启动慢

问题:iOS下wap2app打开页面和Ajax请求数据非常慢,但是Android和浏览器打开却正常。
原因:我使用的是Let's Encrypt 免费SSL服务,抓包发现域名http://ocsp.int-x3.letsencrypt.org长时间无响应,最终返回503,意识到这是因为iOS下访问https链接时会先校验其有效性,所以导致了上述问题。
解决方案:更换其他ssl证书,如宝塔SSL。

踩了一坑,记录下来,以便日后查询。

继续阅读 »

问题:iOS下wap2app打开页面和Ajax请求数据非常慢,但是Android和浏览器打开却正常。
原因:我使用的是Let's Encrypt 免费SSL服务,抓包发现域名http://ocsp.int-x3.letsencrypt.org长时间无响应,最终返回503,意识到这是因为iOS下访问https链接时会先校验其有效性,所以导致了上述问题。
解决方案:更换其他ssl证书,如宝塔SSL。

踩了一坑,记录下来,以便日后查询。

收起阅读 »

在uni-app开发过程中新建page的时候可以同时新增页面title

新需求

在新增页面的输入页面名称的同时可以在下方增加页面的title,即page.json中注册的页面同步"navigationBarTitleText"。

在新增页面的输入页面名称的同时可以在下方增加页面的title,即page.json中注册的页面同步"navigationBarTitleText"。

A-承接uni-app开发,联系QQ:543610866

本人开发的插件地址:https://ext.dcloud.net.cn/publisher?id=22130,有需要开发uni-app插件的,联系QQ:543610866,欢迎骚扰

继续阅读 »

本人开发的插件地址:https://ext.dcloud.net.cn/publisher?id=22130,有需要开发uni-app插件的,联系QQ:543610866,欢迎骚扰

收起阅读 »

没找到如何删除文章

video

想了想 没人做就没人反馈,没人反馈就不会更新...还是不警告了吧

想了想 没人做就没人反馈,没人反馈就不会更新...还是不警告了吧

操作云函数失败, 提示npm install 失败 的解决方法。

云函数npm install 失败

问题: 部分用户在操作云函数(阿里云)时, 控制台会报错。 显示 npm install 失败, 请检查环境... 的提示语。

现状:针对用户出现的问题已经进行了分析排查, 最新版已经进行了优化修复。现将可能的问题总结如下, 请大家
对照相应的现象进行排查, 如果有以下没有提到的现象, 请跟帖回复。 我们会继续进行排查修复。

目前已知的现象如下:

  1. 部分用户使用淘宝源之后,出现了npm install 失败的问题。 针对这一现象最新版本已经做了相应优化。
    解决方法: 旧版本的话, 大家尝试下切换官方源, 或其他源。

  2. 部分用户自己安装了node并在HBuilder X 设置了 npm 的可执行路径 (可以在 顶部菜单 工具->设置->运行设置 node运行配置 分类中查看 该路径), node 在 windows 系统上一般默认安装在 C:\Program Files 路径下(如C:/Program Files/nodejs/npm), 在部分版本中, 该路径中带有空格导致npm install 失败, 现该问题已经修复。

解决方法:旧版本如果出现该问题可以尝试 更改node 的安装路径然后在HBuilder X 中再次设置npm 的可执行路径。 或者 配置 npm 环境变量, 并将HBuilder X中设置的npm 可执行路径删除。

继续阅读 »

问题: 部分用户在操作云函数(阿里云)时, 控制台会报错。 显示 npm install 失败, 请检查环境... 的提示语。

现状:针对用户出现的问题已经进行了分析排查, 最新版已经进行了优化修复。现将可能的问题总结如下, 请大家
对照相应的现象进行排查, 如果有以下没有提到的现象, 请跟帖回复。 我们会继续进行排查修复。

目前已知的现象如下:

  1. 部分用户使用淘宝源之后,出现了npm install 失败的问题。 针对这一现象最新版本已经做了相应优化。
    解决方法: 旧版本的话, 大家尝试下切换官方源, 或其他源。

  2. 部分用户自己安装了node并在HBuilder X 设置了 npm 的可执行路径 (可以在 顶部菜单 工具->设置->运行设置 node运行配置 分类中查看 该路径), node 在 windows 系统上一般默认安装在 C:\Program Files 路径下(如C:/Program Files/nodejs/npm), 在部分版本中, 该路径中带有空格导致npm install 失败, 现该问题已经修复。

解决方法:旧版本如果出现该问题可以尝试 更改node 的安装路径然后在HBuilder X 中再次设置npm 的可执行路径。 或者 配置 npm 环境变量, 并将HBuilder X中设置的npm 可执行路径删除。

收起阅读 »

解决tabbar加上subnvue侧滑菜单,通过api的hide方法有时无法关闭侧滑界面的问题

侧滑菜单 侧滑导航 subNVues subnvue

一、出现问题的步骤重新:登陆页-》tabbar主页-》侧滑菜单退出登陆-》登陆页-》tabbar主页-》侧滑菜单点击菜单项,调用hide方法,侧滑无法关闭

二、具体解决办法:
1、侧滑菜单的subnvue是公共的,目录为platforms\app-plus\subNVue\left-drawer;

2、程序入口页是登陆页,登陆成功后通过uni.reLaunch到含tabbar的主页,tabbar有四个页面,每个页面都有subnvue侧滑菜单,subNVues节点中id分别为leftDrawerTab1、leftDrawerTab2、leftDrawerTab3、leftDrawerTab4;

3、tabbar页面
3.1、在onNavigationBarButtonTap导航按钮监听中,通过getSubNVueById获取到subnvue,并通过subnvue的show方法显示侧滑菜单
const leftDrawerTab1 = uni.getSubNVueById('leftDrawerTab1')
leftDrawerTab1.show('slide-in-left', 200)

3.2、在onload方法中,通过getSubNVueById获取到subnvue,并通过subnvue的hide方法隐藏侧滑菜单,解决第一次加载可能会默认显示的问题
uni.getSubNVueById('leftDrawerTab1').hide('slide-out-left',200)

4、侧滑菜单的subnvue页中,在点击菜单项时,通过subnvue的hide方法,和plus.webview.WebviewObject的hide方法关闭侧滑,通过plus.webview的all方法,找到所有的webview,然后根据第二步设定的id,找到所有的侧滑菜单的view,通通关一遍。

uni.getCurrentSubNVue().hide('auto')
// 获取所有Webview窗口
var wvs = plus.webview.all();
for(var i=0; i<wvs.length; i ){
if(wvs[i].id.indexOf('leftDrawerTab') != -1) {
wvs[i].hide()
}
}

三、效果:代码比较难看,但是目前好像管用。

继续阅读 »

一、出现问题的步骤重新:登陆页-》tabbar主页-》侧滑菜单退出登陆-》登陆页-》tabbar主页-》侧滑菜单点击菜单项,调用hide方法,侧滑无法关闭

二、具体解决办法:
1、侧滑菜单的subnvue是公共的,目录为platforms\app-plus\subNVue\left-drawer;

2、程序入口页是登陆页,登陆成功后通过uni.reLaunch到含tabbar的主页,tabbar有四个页面,每个页面都有subnvue侧滑菜单,subNVues节点中id分别为leftDrawerTab1、leftDrawerTab2、leftDrawerTab3、leftDrawerTab4;

3、tabbar页面
3.1、在onNavigationBarButtonTap导航按钮监听中,通过getSubNVueById获取到subnvue,并通过subnvue的show方法显示侧滑菜单
const leftDrawerTab1 = uni.getSubNVueById('leftDrawerTab1')
leftDrawerTab1.show('slide-in-left', 200)

3.2、在onload方法中,通过getSubNVueById获取到subnvue,并通过subnvue的hide方法隐藏侧滑菜单,解决第一次加载可能会默认显示的问题
uni.getSubNVueById('leftDrawerTab1').hide('slide-out-left',200)

4、侧滑菜单的subnvue页中,在点击菜单项时,通过subnvue的hide方法,和plus.webview.WebviewObject的hide方法关闭侧滑,通过plus.webview的all方法,找到所有的webview,然后根据第二步设定的id,找到所有的侧滑菜单的view,通通关一遍。

uni.getCurrentSubNVue().hide('auto')
// 获取所有Webview窗口
var wvs = plus.webview.all();
for(var i=0; i<wvs.length; i ){
if(wvs[i].id.indexOf('leftDrawerTab') != -1) {
wvs[i].hide()
}
}

三、效果:代码比较难看,但是目前好像管用。

收起阅读 »

hbuilder的地址栏占一行

hbuilder的地址栏占一行能不能增加让内置浏览器的地址栏单独占一行
左边的功能和右边的地址栏在一栏相当的不好调试 一会拉过去一会拉过来
通常调试传id的话单独一行修改方便的多

hbuilder的地址栏占一行能不能增加让内置浏览器的地址栏单独占一行
左边的功能和右边的地址栏在一栏相当的不好调试 一会拉过去一会拉过来
通常调试传id的话单独一行修改方便的多