关于uniapp开发app的坑(有些可能是app开发都会遇到的),仅做个人记录,目前为安卓版本

  • 首先第三方授权登录(如微信登录)中的签名为app证书的md5,方法按照Dcloud官方走就完事,Java可以选择下载qq的,更快,用Oracle的贼麻烦还要注册账户,然后就到了坑,再输入密码的时候会发现输入的内容不显示,一度怀疑人生,后来发现只是是隐藏了而已,为了安全…*
  • 所有页面样式失效还是样式与小程序不符先想想这个页面有没有input,video,textarea这类使用了原生组件的组件,解决办法官方有,但看不懂,笨办法是使用v-if来隐藏,然后v-else写个假的放上面,用的时候显示真的,其他时候显示假的*
  • 还有显示隐藏样式出问题想想有没有用v-show,换成v-if,还有什么属性不能为null的报错,对象最好初始化写成空{},而不是null*
  • 云端打包时,videoplayer项如果使用到video必须打钩,其他能力类似,还有uni-app Error: Cannot find module ‘node-ipc’ 把uni-app编译插件卸载重装,还有编译sdk与打包sdk版本不一样,但实际上hbuilderx已经是最新版也可以这样操作*
  • 新浪开发的签名为证书md5去掉:并且字母全部小写,必须提供下载地址,下面是驳回理由

不能只用弹出方式提供下载,安卓客户端下载必须要有对应的下载页面和下载按钮。,应用地址处请填写客户端专用下载页面或在软件商店页面地址(网盘,论坛页面无效)

  • 现在的各大市场上架app需要软件著作权证书,最好提前备好,应用宝上架需要隐私政策截图,所以现在软件的用户协议和隐私政策几乎必备
    *分享这块目前完成了qq、微信、朋友圈分享,切记分享图片(视频)地址正确,不为空,不然会返回出神奇的错误信息(fail:{“errMsg”:“share:fail http://ask.dcloud.net.cn/article/287”}),新浪分享需要回调地址,麻烦,抖音对图片视频分辨率有限制,坑货
  • 支付功能几乎全是后端的活,前端一个uni.requestPayment就行,官方有php的demo
  • 支付宝支付时出现路ALIN10146错误,原因是应用未上架(指的是阿里开放平台那申请的应用),阿里的查错文档挺详细了
  • 登录部分,微信登录uni.login可以直接得到后端请求所需token,直接拿来用就行,不必code换token这么复杂,dcloud牛逼,其他的第三方登录没有做
  • 对于有些可能是app需要小程序不需要的页面(或者相反),采用官方文档的条件编译是极佳的选择

整体目录条件编译
如果想把各平台的页面文件更彻底的分开,也可以在uni-app项目根目录创建platforms目录,然后在下面进一步创建app-plus、mp-weixin等子目录,存放不同平台的文件。

  • 对于第三方功能,最好做下判断,如果没有此应用跳转到下载地址

// 判断用户是否安装抖音
export function checkDouyin(instal) {
	if (plus.runtime.isApplicationExist({
			pname: 'com.ss.android.ugc.aweme',
			action: 'wb1462309810://'
		})) {
			if(instal){
				instal()
			}
			
		console.log("抖音应用已安装");
	} else {
		// uninstal()
	plus.runtime.openURL('https://www.douyin.com/');
		console.log("抖音应用未安装");
	}

}



// 判断用户是否安装支付宝
export function checkAlipay(instal) {
	if (plus.runtime.isApplicationExist({
			pname: 'com.eg.android.AlipayGphone',
			action: 'alipay://'
		})) {
			if(instal){
				instal()
			}
		console.log("支付宝应用已安装");
	} else {
		// uninstal()
		
		console.log("支付宝应用未安装");
		plus.runtime.openURL('https://d.alipay.com/?nojump=true');
	}
}


// 判断用户是否安装QQ
export function checkQQ(instal) {
	if (plus.runtime.isApplicationExist({
			pname: 'com.tencent.mobileqq',
			action: 'mqq://'
		})) {
			if(instal){
				instal()
			}
		console.log("QQ应用已安装");
	} else {
		// uninstal()
		console.log("QQ应用未安装");
		
		plus.runtime.openURL('https://im.qq.com/mobileqq/touch/android/');
	}
}

// 判断用户是否安装新浪微博
export function checkSinaweibo(instal) {
	if (plus.runtime.isApplicationExist({
			pname: 'com.sina.weibo',
			action: 'sinaweibo://'
		})) {
			if(instal){
				instal()
			}
		console.log("新浪微博应用已安装");
	} else {
		// uninstal()
		plus.runtime.openURL('https://c.weibo.cn/');
		console.log("新浪微博应用未安装");
	}
}



// 判断用户是否安装微信,传入判断函数
export function checkWeixin(instal) {
	if (plus.runtime.isApplicationExist({
			pname: 'com.tencent.mm',
			action: 'weixin://'
		})) {
			if(instal){
				instal()
			}
		console.log("微信应用已安装");
	} else {
		// uninstal()
		// 
		plus.runtime.openURL('https://weixin.qq.com/d ');
		console.log("微信应用未安装");
	}
}
  • 如果给uni.showToast不加title的话,会显示成一个小黑点

  • uni.getSystemInfoSync()最好在onReady中获取,不然某些手机会获取出问题

  • 然后功能差不多了,等软著上架…修bug…

你可能感兴趣的:(javascript,安卓,vue)