16.百度小程序遇到的问题
2018-12-06 本文已影响0人
jqClub
总的来说,百度小程序和微信小程序的差别不是很大,下面根据自己开发项目中碰到的问题,做一点总结
1.html文件相关
1. .html文件名字,改成.swan(页面中组件的html文件也要改)
尽量不要使用组件,在低版本库(已知1.10.37,百度app10.10)中,会报错,导致无法调用,
因为这个问题,被拒了几次。如果必须要用,建议提高基础库的版本
2.这个是html页面中标签的问题
微信小程序 wx:for wx:if
百度小程序 s-for="imgUrl in imgs" s-if
一键将文件中的wx:替换成s-
3.百度s-for和s-if不能用在同一行,微信那边没有限制
2.css相关
1.wxss文件加改成.css后缀--可以使用rpx单位和vw
3.api相关
1.api接口,由wx改成swan,有些api的参数可能会有改变,需要在用到的时候,进行相应的修改。
比如下面的小程序跳转方法
//上面的是微信的方法
wx.navigateToMiniProgram
//下面是百度的方法
swan.navigateToSmartProgram({
// 要打开的小程序 App Key---小程序的为appId: appid
appKey: '4fecoAqgCIUtzIyA4FAPgoyrc4oUc25c',
});
并且百度小程序跳转的方法,可以直接调用api,而微信现在有限制(需要点击按钮)
2.获取用户信息,可以直接调用api。而微信需要点击按钮
3.需要使用swan.isLoginSync(),先判断是否有登录过
需要先判断是否可用,因为百度可以不登录也可以玩,而微信必须要先强制登录。
"这里可以先获取百度设备唯一的SwanID,然后先去登录"
百度文档:https://smartprogram.baidu.com/docs/develop/api/open_userinfo/#getSwanId/
4.分享的功能(获取自定义的属性有坑,开发工具上的和线上的返回不同),
基础库不同的话,返回的不同,所以使用的下面方法
另外分享有成功的回调(但是很鸡肋,因为根本无法判断分享到微信等第3方平台的回调,
所以再给奖励的时候,加上次数的限制等),而微信那边现在拿不到成功的回调。
// 10.30新增获取分享的类型
var getShareType = function(e) {
if(e.from == 'button' || e.from.from == 'button') {
//这里说明点击的是按钮,而不是右上角的默认分享
//然后再获取自定义属性
}
}
5.音频播放,百度没有下面的方法
wx.playVoice({})
wx.playBackgroundAudio({})
6.setInnerAudioContext修改:百度的使用innerAudioContext,无法切换音频
处理方法:先在播放前销毁,再去设置新的src地址(微信的可以直接切换)
不建议使用playBackgroundAudio,因为会在有些机型上继续轮播,而且在onload里无法关闭背景音乐
7.在断网或特殊情况下,不建议使用reLaunch去重新加载首页,因为无法重新加载整个页面的,
比如旋转图片,即有些接口无法继续调用。
后来我直接使用下面的方法,重新去请求onload和onshow里的接口等
that.onLoad()
that.onShow()
8.ad组件的使用,和微信相同,小程序可以使用ad组件,而小程序还可以使用视频广告
需要注册百度mssp,然后去审核,通过后,复制代码即可使用(详见官网文档)
官网:https://mssp.baidu.com/home
<view style='position: relative; margin-top: 20rpx; width: 750rpx;height: 250rpx !important;'>
<ad id="banner" appid="xxx" apid="xxx" aspect-ratio="7:3" class="ad" backend="bes" type="banner"></ad>
</view>
4.其他方面
1.新增了一个总的文件pkginfo.json
2.project.config.json改成project.swan.json
3.需要使用腾讯统计,需要修改mta_analysis里的函数
(直接全局修改wx.为swan. 就可以直接使用腾讯统计)