踩坑
- 自定义
vue
组件不可以使用 页面的生命周期?- 是的,只能使用Vue原生的生命周期。
- 每次线上打包APP之前要先去检查HbuilderX是不是最新版本
- 使用不同的
dcloud
账号 需要重新获取appid
(应用程序的唯一标识),appid
更换后,之前安装的应用程序是没有办法自动更新的,会生成两个APP解决方案
:app升级通知用户,手动卸载之前的app,使用新安装的app,避免出现这种情况解决方案
:可以让APP的拥有者(最开始获取Appid的账号),点击帮助
=>开发者云端控制台
=>我创建的应用
=>点击应用名
=>项目成员管理
(左侧)=>添加就可以了
- 使用的
Android
证书不同,AppId
一样,会导致App无法安装。 plus.runtime.version
获取版本号,只有经过云打包后才会生效,所以在本地获取与设置的可能有出入解决方案
: 可以通过plus.runtime.getProperty
的方式来获取应用信息,从中获取版本号
- 获取
uniapp
中的节点设置样式,document
在 uniapp 中是不存在的解决方案
: 可以使用vue
的$refs
去获取节点,注意生命周期节点渲染顺序。也可以提前写好样式,通过双向数据绑定,控制变量添加
/移除
类名
<view :class="flag:'className':null "></view>
- 抽屉(uni-drawer)弹出后,在抽屉上触发滚动事件,也会引起遮罩层下方页面同时滚动
解决方案
:
<template>
<view class='container' :class="isOpen?'stop-move-scroll':''" >
<uni-drawer ref="drawer" @change="changeDrawer">
<!-- 内容区 -->
</uni-drawer>
<button type="default" @click="open"></button>
</view>
</template>
<script>
export default{
data(){
return {
isOpen:false,
}
},
methods:{
open(){
// 打开抽屉
this.$refs.drawer.open();
this.isOpen = true;
},
// 监听抽屉状态变化
changeDrawer(state){
this.isOpen = state;
// 一些处理 ...
}
}
}
</script>
<style>
.stop-move-scroll {
height: 100vh;
overflow: hidden;
}
</style>
附加一个官方的解决方案
+- 把原生导航栏去掉,自己自定义了导航栏发现,在APP端会把手机的状态栏给遮挡住
- uni-app H5端调用 uni.getLocation 获取位置失败,提示
errMsg: "getLocation:fail 此key每日调用量已达到上限"
解决方案
: 需要在manifest
H5 配置
中 添加 自己申请的 腾讯地图 key
uni.upx2px(750) == 750rpx
-
调试运行APP基座的时候,发现老是调用之前开发过的APP,调用起来后,里面确实是现在开发的APP,但是无法启用调试,原因是选中了这个
自定义基座
解决方案
:修改成标准运行基座就好了
-
支付
uni.requestPayment
支付宝支付报错62009 原因是 没按规定格式传参
-
已经上线的
App
修改过名字之后,在以前的版本上安装更新更换过名字的App
会提示该应用含不良信息 -
uniapp
的包名
和appid
的关系- 两者没有任何关系
- 包名是指在打包的时候填的(默认为应用的
appid
,但格式不完全一样),包名可以自己任意填,但最好按照规范填写。 appid
是 应用的唯一标识。
-
在使用高德地图,
逆编码(根据地址获取经纬度)api
时,提示10009
在查阅错误码后,发现原因是因为 申请的key
类型不一样,之前申请的是js API
,逆编码需要申请Web服务API
,在已经申请的应用上面新申请对应服务key
就好了。 -
使用 uniapp 开发微信小程序的时候,预览的时候,出现文件体积过大,可以 在
manifest.json
配置文件,找到微信小程序配置 勾选上 上传代码时 自动压缩 ,就可以了。 -
在使用 定位的时候 ,需要勾选定位权限,需要选择 定位 和地图 ,H5 端需要使用 腾讯地图key,其他端需要使用 高德或者百度 key 。在选择 key 类型的时候,申请 安卓端 的 key
-
uniapp 中 父子组件之间自定义方法
- 子组件
uni.$emit(自定义事件名,参数);
- 父组件
uni.on(自定义事件名,回调函数)
- 子组件
// 调用第三方程序
function launchApp() {
if ( plus.os.name == "Android" ) {
plus.runtime.launchApplication( {pname:"com.android.browser"
,extra:{url:"http://www.html5plus.org"}}, function ( e ) {
alert( "Open system default browser failed: " + e.message );
} );
} else if ( plus.os.name == "iOS" ) {
plus.runtime.launchApplication( {action:"http://www.html5plus.org"}, function ( e ) {
alert( "Open system default browser failed: " + e.message );
} );
}
}