关于uniapp制作app后台保活或后台运行问题(不花钱)

后台持续播放无声音频,流氓做法实现

在app.vue里初始化

<script>
	import Vue from 'vue';
	let AUDIO = uni.createInnerAudioContext()
	export default {
		// 司机端
		onLaunch: function() {
			
			this.initAudio(AUDIO)
			console.log('App Launch');
			uni.getSystemInfo({                    
				success: e => {
					// 状态栏高度px
					Vue.prototype.statusHeight = e.statusBarHeight;
					Vue.prototype.screenHeight = e.screenHeight;
					Vue.prototype.screenWidth = e.screenWidth;
					Vue.prototype.platform = e.platform;
					Vue.prototype.widthRatio = e.screenWidth / 750;
					Vue.prototype.AUDIO = AUDIO
				}
			});
			// #ifdef MP
			uni.setEnableDebug({
				enableDebug: true
			});
			// #endif
		},
		onShow: function() {
			// AUDIO.src = '/static/msg.mp3'
			console.log('App Show');
			
		},
		onHide: function() {
			console.log('App Hide');
		},
		methods:{
			initAudio(AUDIO) {
				let _this = this
				console.log('初始化音频播放', AUDIO);
				// onCanplay	callback	音频进入可以播放状态,但不保证后面可以流畅播放	
				// onPlay	callback	音频播放事件	
				// onPause	callback	音频暂停事件	
				// onStop	callback	音频停止事件	
				// onEnded	callback	音频自然播放结束事件	
				// onTimeUpdate	callback	音频播放进度更新事件	
				// onError	callback	音频播放错误事件	
				// onWaiting
				AUDIO.
				onCanplay((e) => {
					console.log('音频进入可以播放状态,但不保证后面可以流畅播放', e);
					// AUDIO.play()
				})
			
				AUDIO.onPlay((e) => {
					console.log('音频播放事件', e);
				})
				AUDIO.onPause((e) => {
					console.log('音频暂停事件', e);
				})
				AUDIO.onStop((e) => {
					console.log('音频停止事件', e);
				})
				AUDIO.onEnded((e) => {
					AUDIO.play()
					// AUDIO.stop()
					// _this.voiceLoading = false
					console.log('音频自然播放结束事件', e);
				})
				AUDIO.onTimeUpdate((e) => {
					// console.log('音频播放进度更新事件', e);
				})
				AUDIO.onError((e) => {
					console.log('音频播放错误事件', e);
				})
				AUDIO.onWaiting((e) => {
					console.log('音频等待事件', e);
				})
			
			},
		}
	};
</script>

<style lang="scss">
	// 全局CSS样式在这里引入
	@import "@/uni_modules/uview-ui/index.scss";
</style>

然后在需要的页面使用

<template>
	<view class="tabbar-page">
		
		<u-popup :show="updateTask==1" mode="center" :round="10" @close="close">
			<view class="popup ">
				<view class="popup-content">有新任务,请注意更新!</view>
				<u-button type="success" iconColor='#000' size="large" shape='circle' text="关闭"
					customStyle="width: 200rpx" @click="close"></u-button>
			</view>
		</u-popup>
		
	</view>
</template>

<script>
	// 引入组件

	import {
		mapActions,
		mapState
	} from "vuex"
	export default {
		data() {
			return {
				start: false,
				// 请求次数
				reqNum: 0,
				timer: null,
				show: false,
				
			};
		},
		computed: {
	
			...mapState({
				"updateTask": state => state.user.updateTask,
			}),
		},
		watch: {
			// 全局弹窗
			updateTask(newvalue) {
				if (this.start) {
					if (newvalue == 1) {
						this.AUDIO.stop()
						this.AUDIO.src = '/static/update-msg.MP3'
						this.AUDIO.play()
					} else {
						this.AUDIO.stop()
						this.AUDIO.src = '/static/msg.mp3'
						this.AUDIO.play()
					}
				}

			}
		},
		components: {
			// 注册组件
			
		},
		onReady() {
		
		},
		onShow() {
			this.start = true
			// this.$store.commit('user/SET_UPDATE_TASK', 0)
//接口
			this.getUpdate()
			this.AUDIO.play()
			if (this.PageCur == 0) {
				setTimeout(() => {
					this.$refs.home.getIndex(null, 1)
				}, 0)
			}
			console.log('indexshow----------', this.updateTask);
		},
		// 下拉刷新
		onPullDownRefresh() {
			setTimeout(() => {
				uni.stopPullDownRefresh()
			}, 2000)
		},
		onLoad(e) {
			
		},
		methods: {
			...mapActions(['getUpdateTask', 'readTask']),
			getUpdate() {
				if (this.timer) {

				} else {
					this.timer = setInterval(() => {
						this.reqNum++
						this.getUpdateTask()
						console.log('开始请求接口', this.reqNum);
					}, 10000)
				}

				// this.getUpdateTask()
			},
			close() {
				console.log('关闭');
				if (this.readTask()) {
					if (this.getUpdateTask()) {
						this.AUDIO.stop()
						this.AUDIO.src = '/static/msg.mp3'
						this.AUDIO.play()
						this.$refs.home.getIndex('Refresh', 2)
					}

				}
				// this.$store.state.user.newTask = '2'
				// if (this.PageCur == 0) {
				// 	this.$refs.home.getIndex('Refresh', 2)
				// }

			},
			
		}
	};
</script>

<style lang="scss" scoped>
	
	.popup {
		padding: 40rpx;
		width: 50vw;
		height: 40vh;
		font-size: 40rpx;
		display: flex;
		flex-direction: column;
		justify-content: space-between;

		.popup-content {
			// margin-bottom: 20rpx;
		}
	}

	
</style>

  • 10
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值