- 首先第三方授权登录(如微信登录)中的签名为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…
-
关于webview方面,app的webview布局采用flex布局,千万不要用浮动,关于app内与webview互相传参可以参考此文章