- 优化小程序内的激励视频广告
加入了激励视频后,进入页面可以看到明显的卡顿,为了增加体验,我们需要做些优化。 首先,广告模板代码会让你在onLoad()函数中初始化广告代码。这里,我们需要将其封装在一个独立函数中。 [图片] 然后,我们定义一个全局变量hasLoadAd,默认为false,当调用播放按钮时,先判断该变量是否为真,当不是真时,我们调用上面封装的loadAd()函数加载广告。 经实践,发现第一次调用vAd.show()时,通常会失败,此时,可参考模板中的示例代码,进行第二次加载。代码如下: [图片] 这样有个弊端,就是第一次会初始化加载两次,并且时间有点长,为了用户体验,我们在调用前,就调用wx.showLoading()。 最后,在onUnload()函数中,将vAd =null ;这样可以避免退出再进入时卡顿。 你有好的想法和建议,欢迎留言。
2024-05-12 - 微信小程序开发自定义导航栏
微信小程序默认提供了一个标准的导航栏,但是有些时候我们需要自定义导航栏来满足我们的业务需求。本文将介绍如何自定义微信小程序导航栏,并且讲解自定义导航栏的优缺点。 自定义导航栏与微信自带导航栏的区别 微信小程序自带导航栏具有固定的样式和布局,开发者无法更改其外观和功能。而自定义导航栏可以根据业务需求自由定义样式和功能,例如可以在导航栏中添加搜索框、返回按钮等功能。 自定义导航栏的优缺点 自定义导航栏可以帮助开发者更好地控制小程序的样式和功能,提高小程序的用户体验。自定义导航栏可以将品牌特色和设计元素融入到导航栏中,从而提高品牌曝光度和用户满意度。但是自定义导航栏也存在一些缺点,例如在处理页面返回时需要自己处理逻辑,并且需要适配不同设备的宽度和高度。 如何配置自定义导航栏 要自定义微信小程序导航栏,需要在app.json文件中设置导航栏的样式和功能。例如,以下代码将创建一个自定义导航栏,其中包含一个返回按钮和一个标题: [代码]{ "navigationBarTitleText": "自定义导航栏", "navigationBarBackgroundColor": "#fff", "navigationBarTextStyle": "black", "usingComponents": { "custom-nav": "/components/custom-nav/custom-nav" } } [代码] 在自定义导航栏的组件中,可以使用wx.getSystemInfoSync()获取当前设备的信息,以适配不同设备的宽度和高度。例如,以下代码将创建一个适配所有设备的自定义导航栏组件: [代码]<view class="custom-nav" style="height: {{statusBarHeight + 44}}px; width: {{screenWidth}}px;"> <view class="custom-nav__back" wx:if="{{showBack}}" bindtap="goBack"> <image src="/images/back.png" mode="aspectFit"></image> </view> <view class="custom-nav__title">{{title}}</view> <view class="custom-nav__right"></view> </view> [代码] 在自定义导航栏组件的js文件中,可以使用wx.getSystemInfoSync()获取设备信息,例如获取状态栏高度: [代码]const systemInfo = wx.getSystemInfoSync(); const statusBarHeight = systemInfo.statusBarHeight; [代码] 这样就完成了适配各种机型的导航栏
2023-05-17 - 同一页面创建多个激励视频广告组件,为什么只统计第一个创建的广告位?
目前小程序激励视频广告组件为单例模式(小程序是单页面单例,小游戏是全局单例),也就是说,尽管使用多个广告位id创建多个激励视频广告,返回的仍然是第一个创建的广告实例,所以广告数据只会统计到第一个创建的广告位里面。官方正在计划把激励视频广告改成多例模式,后续请关注开发者文档的更新。更多内容请参考文档:https://ad.weixin.qq.com/guide/1209 [图片]
2019-10-18 - 「激励式视频广告」向非游戏类小程序流量主开放
[图片] [图片] [图片] [图片] [图片] [图片] [图片] [图片] [图片] [图片] [图片] [图片] [图片] [图片] [图片] [图片] [图片]
2019-04-16 - shareFileMessage:fail can only be invoked by user?
这样子点击就能将文件分享出去 [图片] 可以加上请求就不行了。。,在线请问应该怎么才能成功,谢谢各位大佬 [图片]
2022-01-12 - 微信小程序如何实现页面传参?
前言 只要你的小程序超过一个页面那么可能会需要涉及到页面参数的传递,下面我总结了 4 种页面方法。 路径传递 通过在url后面拼接参数,参数与路径之间使用 ? 分隔,参数键与参数值用 = 相连,不同参数用 & 分隔;如 ‘path?key=value&key2=value2’。 案例:A页面带参数跳转到B页面 A页面跳转代码 [代码]goB(){ wx.navigateTo({ url: '/pages/B/index?id=value', }) }, [代码] B页面接收代码 [代码]onLoad: function (options) { console.log('id', options.id) } [代码] 上面的案例是字符串参数,但是很多情况下需要传递对象,如下方代码。 [代码]Page({ data: { userInfo:{ name:'cym', age:16 } }, goB(){ wx.navigateTo({ url: '/pages/B/index?id='+this.data.userInfo, }) }, }) [代码] 如果使用上面同样的方式结构,输出的结果是:[object Object] 这个时候需要先把对象通过JSON.stringify(obj)将 object 对象转换为 JSON 字符串进行参数传递,再到接收页面通过JSON.parse解析使用。 A页面跳转代码 [代码] goB(){ let userStr = JSON.stringify(this.data.userInfo) wx.navigateTo({ url: '/pages/B/index?id='+userStr, }) } [代码] B页面接收代码 [代码]onLoad: function (options) { console.log('id', JSON.parse(options.id)) } [代码] 全局变量 通过App全局对象存放全局变量。 app.js代码 [代码]App({ // 存放对象的全局变量 globalData:{}, }) [代码] A页面跳转代码 [代码]// 获取App对象 const app = getApp() Page({ /** * 页面的初始数据 */ data: { userInfo: { name: 'cym', age: 16 } }, goB() { app.globalData.userInfo = this.data.userInfo wx.navigateTo({ url: '/pages/B/index', }) }, }) [代码] B页面接收代码 [代码]// 获取全局对象 const app = getApp() Page({ onLoad: function (options) { console.log(app.globalData.userInfo) } }) [代码] 存放在 App 全局变量里面,可以被多个页面使用,直接从 App 对象获取即可。这个数据是保持在内测中,每次小程序销毁就没有了。 数据缓存 通过存储到数据缓存中。 A页面跳转代码 [代码] goB() { wx.setStorageSync('userInfo', this.data.userInfo) wx.navigateTo({ url: '/pages/B/index', }) } [代码] B页面接收代码 [代码] onLoad: function (options) { let userInfo = wx.getStorageSync('userInfo', this.data.userInfo) console.log(userInfo) } [代码] 存放在数据缓存里面,可以被多个页面使用,直接用 getStorageSync 获取即可。这个数据是保持在数据缓存中,除非清楚数据缓存或者删除小程序否则一直存在。 事件通信 通过事件通信通道。 A页面跳转代码 [代码]goB() { wx.navigateTo({ url: '/pages/B/index', success:(res)=>{ // 发送一个事件 res.eventChannel.emit('toB',{ userInfo: this.data.userInfo }) } }) } [代码] B页面接收代码 [代码]onLoad: function (options) { // 获取所有打开的EventChannel事件 const eventChannel = this.getOpenerEventChannel(); // 监听 index页面定义的 toB 事件 eventChannel.on('toB', (res) => { console.log(res.userInfo) }) } [代码] 总结 大家可以针对具体业务场景来进行选择合适自己的传参方式。
2022-02-19 - 激励视频广告出现视频号广告,关闭视频号广告时没触发onClose?
[图片][图片]这种视频号广告无论看没看完点击左上角的叉关闭后都不会调用onClose,导致用户看了广告后没得到奖励也没任何提示,该如何解决?
2023-03-16 - 公众号跳转H5页面,IOS可以正常跳转,Android显示无法打开网页
请开发者先自查出现404异常的资源响应头部,检查content-length是否小于2048, 如果小于2048,建议在出现404异常的html 末尾增加一个隐藏的 div标签,display设置为none: <div> this is padding data: xxxx 填充整个页面content-length到2048字节以上即可 </div> 以上是暂时的解决策略,我们会在后续的版本解决。
2019-11-26