Browse Source

停留时间

dev_des
1054425342@qq.com 2 months ago
parent
commit
68677fa7e5
  1. 603
      App.vue

603
App.vue

@ -1,211 +1,402 @@
<script> <script>
export default { export default {
globalData: { globalData: {
mainSliderIndex: 0, mainSliderIndex: 0,
randomImages: [], randomImages: [],
bgMusic: null, bgMusic: null,
isMusicPlaying: false, isMusicPlaying: false,
musicSrc: 'https://static.ticket.sz-trip.com/epicSoul/EpicSouls.mp3' musicSrc: "https://static.ticket.sz-trip.com/epicSoul/EpicSouls.mp3",
}, // 使
onLaunch: function() { userSessionId: null,
console.warn('当前组件仅支持 uni_modules 目录结构 ,请升级 HBuilderX 到 3.1.0 版本以上!') networkStartTime: null, //
console.log('App Launch') networkEndTime: null, //
// },
// this.initBackgroundMusic(); onLaunch: function () {
// // 使
this.Post({id: 10217},'/api/article/getArticleById').then(res => { this.initUserUsageStats();
try {
let SHFlag = res.data.title // 使
// let SHFlag = res.data.subtitle this.retryReportLocalStats();
uni.setStorageSync('SHFlag', SHFlag)
} catch(e) {} //
}); // this.initBackgroundMusic();
}, //
onShow: function() { this.Post({ id: 10217 }, "/api/article/getArticleById").then((res) => {
console.log('App Show') try {
}, let SHFlag = res.data.title;
onHide: function() { // let SHFlag = res.data.subtitle
console.log('App Hide') uni.setStorageSync("SHFlag", SHFlag);
}, } catch (e) {}
methods: { });
initBackgroundMusic() { },
try { onShow: function () {
console.log('bgMusic',this.globalData.bgMusic) //
// this.recordAppShow();
if (this.globalData.bgMusic) { },
this.globalData.bgMusic.stop(); onHide: function () {
this.globalData.bgMusic.destroy() // 退
this.globalData.bgMusic = null; this.recordAppHide();
} },
methods: {
let bgMusic; // 使
initUserUsageStats() {
// - 使H5使 // ID
// #ifdef MP-WEIXIN this.globalData.userSessionId = this.generateSessionId();
// try { },
// bgMusic = uni.getBackgroundAudioManager();
// // title // ID
// bgMusic.title = ''; generateSessionId() {
// // ID const timestamp = Date.now();
// bgMusic.id = 'mp-audio'; const random = Math.random().toString(36).substring(2, 15);
// } catch (e) { return `session_${timestamp}_${random}`;
// console.error('', e); },
// bgMusic = uni.createInnerAudioContext();
// } // -
bgMusic = uni.createInnerAudioContext(); recordAppShow() {
// #endif //
this.getNetworkTime()
// #ifndef MP-WEIXIN .then((networkTime) => {
bgMusic = uni.createInnerAudioContext(); this.globalData.networkStartTime = networkTime;
// #endif })
.catch((err) => {
// //
bgMusic.src = this.globalData.musicSrc; });
console.log(bgMusic.src) },
bgMusic.loop = true; //
// -
// 使 recordAppHide() {
if (bgMusic.onPlay) { //
// BackgroundAudioManager this.getNetworkTime()
bgMusic.onPlay(() => { .then((networkTime) => {
this.globalData.isMusicPlaying = true; this.globalData.networkEndTime = networkTime;
}); // 使1
this.reportUserUsageStats();
bgMusic.onPause(() => { })
this.globalData.isMusicPlaying = false; .catch((err) => {
}); //
});
bgMusic.onStop(() => { },
this.globalData.isMusicPlaying = false; getUserId() {
}); const userInfoFromStorage = uni.getStorageSync("userInfo");
if (userInfoFromStorage) {
bgMusic.onEnded(() => { const userInfo = JSON.parse(userInfoFromStorage);
// (BackgroundAudioManagersrc) if (userInfo.id) {
bgMusic.src = this.globalData.musicSrc; return userInfo.id;
bgMusic.play(); }
}); }
} else { return store.state.user.userInfo.id;
// InnerAudioContext },
bgMusic.onPlay(() => {
this.globalData.isMusicPlaying = true; // 使
}); reportUserUsageStats() {
if (
bgMusic.onPause(() => { !this.globalData.networkStartTime ||
this.globalData.isMusicPlaying = false; !this.globalData.networkEndTime
}); ) {
return;
bgMusic.onStop(() => { }
this.globalData.isMusicPlaying = false; let userId = this.getUserId();
}); const usageData = {
sessionId: this.globalData.userSessionId,
bgMusic.onEnded(() => { startTime: this.globalData.networkStartTime.toString(),
// InnerAudioContextloop endTime: this.globalData.networkEndTime.toString(),
this.globalData.isMusicPlaying = false; userId: userId,
}); method: "POST",
} };
if (!userId) {
// this.saveUsageStatsToLocal(usageData);
this.globalData.bgMusic = bgMusic; return;
}
//
uni.$bgMusic = { //
play: () => { this.Post(usageData, "/api/visit/end", "DES")
if (bgMusic && bgMusic.play) { .then((res) => {
bgMusic.play(); //
} this.clearUsageStats();
return this.globalData.isMusicPlaying; })
}, .catch((err) => {
pause: () => { //
if (bgMusic && bgMusic.pause) { this.saveUsageStatsToLocal(usageData);
bgMusic.pause(); });
} },
return this.globalData.isMusicPlaying;
}, //
toggle: () => { getPlatform() {
if (!bgMusic) return false; // #ifdef MP-WEIXIN
return "weixin";
if (this.globalData.isMusicPlaying) { // #endif
if (bgMusic.pause) bgMusic.pause();
} else { // #ifdef H5
if (bgMusic.play) bgMusic.play(); return "h5";
} // #endif
return this.globalData.isMusicPlaying;
}, // #ifdef APP-PLUS
isPlaying: () => this.globalData.isMusicPlaying return "app";
}; // #endif
} catch (err) {
console.error('初始化背景音乐失败:', err); return "unknown";
} },
},
updateMusicSrc(newSrc) { //
this.globalData.musicSrc = newSrc; getNetworkTime() {
if (this.globalData.bgMusic) { return new Promise((resolve, reject) => {
this.globalData.bgMusic.src = newSrc; //
} this.Post({}, "/api/visit/currentTime", "DES")
} .then((res) => {
} if (res.code == 1 || res.code == 200) {
} // serverTime
const networkTime = res.data;
resolve(networkTime);
} else {
reject(new Error(res.msg || "获取网络时间失败"));
}
})
.catch((err) => {
reject(err);
});
});
},
//
getDeviceInfo() {
try {
const systemInfo = uni.getSystemInfoSync();
return {
model: systemInfo.model || "",
system: systemInfo.system || "",
platform: systemInfo.platform || "",
version: systemInfo.version || "",
};
} catch (e) {
return {};
}
},
// 使
clearUsageStats() {
this.globalData.networkStartTime = null;
this.globalData.networkEndTime = null;
this.globalData.userSessionId = null;
},
// 使
saveUsageStatsToLocal(usageData) {
try {
const localStats = uni.getStorageSync("pendingUsageStats") || [];
localStats.push(usageData);
uni.setStorageSync("pendingUsageStats", localStats);
} catch (e) {
//
}
},
// 使
retryReportLocalStats() {
try {
const localStats = uni.getStorageSync("pendingUsageStats") || [];
if (localStats.length === 0) {
return;
}
let userId = this.getUserId();
if (!userId) {
return;
}
//
localStats.forEach((stats, index) => {
stats.userId = userId;
this.Post(stats, "/api/visit/end", "DES")
.then((res) => {
//
localStats.splice(index, 1);
uni.setStorageSync("pendingUsageStats", localStats);
})
.catch((err) => {
//
});
});
} catch (e) {
//
}
},
initBackgroundMusic() {
try {
console.log("bgMusic", this.globalData.bgMusic);
//
if (this.globalData.bgMusic) {
this.globalData.bgMusic.stop();
this.globalData.bgMusic.destroy();
this.globalData.bgMusic = null;
}
let bgMusic;
// - 使H5使
// #ifdef MP-WEIXIN
// try {
// bgMusic = uni.getBackgroundAudioManager();
// // title
// bgMusic.title = '';
// // ID
// bgMusic.id = 'mp-audio';
// } catch (e) {
// console.error('', e);
// bgMusic = uni.createInnerAudioContext();
// }
bgMusic = uni.createInnerAudioContext();
// #endif
// #ifndef MP-WEIXIN
bgMusic = uni.createInnerAudioContext();
// #endif
//
bgMusic.src = this.globalData.musicSrc;
console.log(bgMusic.src);
bgMusic.loop = true; //
// 使
if (bgMusic.onPlay) {
// BackgroundAudioManager
bgMusic.onPlay(() => {
this.globalData.isMusicPlaying = true;
});
bgMusic.onPause(() => {
this.globalData.isMusicPlaying = false;
});
bgMusic.onStop(() => {
this.globalData.isMusicPlaying = false;
});
bgMusic.onEnded(() => {
// (BackgroundAudioManagersrc)
bgMusic.src = this.globalData.musicSrc;
bgMusic.play();
});
} else {
// InnerAudioContext
bgMusic.onPlay(() => {
this.globalData.isMusicPlaying = true;
});
bgMusic.onPause(() => {
this.globalData.isMusicPlaying = false;
});
bgMusic.onStop(() => {
this.globalData.isMusicPlaying = false;
});
bgMusic.onEnded(() => {
// InnerAudioContextloop
this.globalData.isMusicPlaying = false;
});
}
//
this.globalData.bgMusic = bgMusic;
//
uni.$bgMusic = {
play: () => {
if (bgMusic && bgMusic.play) {
bgMusic.play();
}
return this.globalData.isMusicPlaying;
},
pause: () => {
if (bgMusic && bgMusic.pause) {
bgMusic.pause();
}
return this.globalData.isMusicPlaying;
},
toggle: () => {
if (!bgMusic) return false;
if (this.globalData.isMusicPlaying) {
if (bgMusic.pause) bgMusic.pause();
} else {
if (bgMusic.play) bgMusic.play();
}
return this.globalData.isMusicPlaying;
},
isPlaying: () => this.globalData.isMusicPlaying,
};
} catch (err) {
console.error("初始化背景音乐失败:", err);
}
},
updateMusicSrc(newSrc) {
this.globalData.musicSrc = newSrc;
if (this.globalData.bgMusic) {
this.globalData.bgMusic.src = newSrc;
}
},
},
};
</script> </script>
<style lang="scss"> <style lang="scss">
@font-face { @font-face {
font-family: 'Futura'; font-family: "Futura";
src: url(https://static.ticket.sz-trip.com/epicSoul/taozi/fonts/Futura.ttc); src: url(https://static.ticket.sz-trip.com/epicSoul/taozi/fonts/Futura.ttc);
} }
/*每个页面公共css */ /*每个页面公共css */
@import '@/uni_modules/uni-scss/index.scss'; @import "@/uni_modules/uni-scss/index.scss";
@import "@/static/css/base.css"; @import "@/static/css/base.css";
/* #ifndef APP-NVUE */ /* #ifndef APP-NVUE */
// //
page { page {
background-color: #f5f5f5; background-color: #f5f5f5;
} }
/* #endif */ /* #endif */
.example-info { .example-info {
font-size: 14px; font-size: 14px;
color: #333; color: #333;
padding: 10px; padding: 10px;
} }
/* 清除按钮默认样式 */ /* 清除按钮默认样式 */
button::after { button::after {
border: none; border: none;
} }
@keyframes bounce { @keyframes bounce {
0%,
0%, 20%,
20%, 50%,
50%, 80%,
80%, 100% {
100% { transform: translateY(0);
transform: translateY(0); }
}
40% {
40% { transform: translateY(-20rpx);
transform: translateY(-20rpx); }
}
60% {
60% { transform: translateY(-10rpx);
transform: translateY(-10rpx); }
} }
}
/* 音乐控制按钮动画 */
/* 音乐控制按钮动画 */ @keyframes rotate {
@keyframes rotate { from {
from { transform: rotate(0deg);
transform: rotate(0deg); }
}
to {
to { transform: rotate(360deg);
transform: rotate(360deg); }
} }
}
/* 隐藏微信小程序默认音频组件 */
/* 隐藏微信小程序默认音频组件 */ #mp-audio {
#mp-audio { display: none;
display: none; }
}
</style> </style>
Loading…
Cancel
Save