<script>
|
import WebSocketServices from "./utils/WebSocketServices";
|
import {
|
getOpenId,
|
setUserInfo,
|
setToken,
|
getToken,
|
getUserInfo
|
} from "./utils/auth";
|
import getuiUtils from "./utils/getuiUtils";
|
export default {
|
onLaunch: function() {
|
console.log('App Launch')
|
// #ifdef H5
|
// 测试时,H5页面刷新会丢失WebSocket连接,需触发重连 (需要测试的时候再解除注释,否则会影响热更新)
|
// if (uni.getStorageSync("userinfo")) {
|
// if (WebSocketServices.wsInstance) { // 假设你的 WebSocket 实例存在 wsInstance 中
|
// WebSocketServices.closeConnect(); // 调用你封装的“关闭连接”方法
|
// }
|
|
// setTimeout(() => {
|
// WebSocketServices.createConnect(
|
// getUserInfo()["Czybm"],
|
// getUserInfo()["Czymc"],
|
// )
|
// }, 500)
|
|
// }
|
|
// // 关键:监听热更新模块替换,销毁旧连接
|
// if (module.hot) {
|
// module.hot.accept(); // 允许当前模块热更新
|
// module.hot.dispose(() => {
|
// // 热更新替换模块前,销毁 WebSocket 连接
|
// if (WebSocketServices.wsInstance) {
|
// WebSocketServices.closeConnect();
|
// WebSocketServices.wsInstance = null; // 重置实例
|
// }
|
// });
|
// }
|
// #endif
|
|
// #ifdef APP-PLUS || APP
|
// 监听 App 启动时的推送参数(冷启动:App 关闭后点击通知启动)
|
const launchOpts = plus.runtime.launchArguments;
|
if (launchOpts && launchOpts.payload) {
|
this.handlePushJump(launchOpts.payload); // 处理跳转
|
}
|
|
// 监听通知点击事件(热启动:App 后台运行时点击通知)
|
plus.push.addEventListener("click", (msg) => {
|
let payload = {};
|
console.log('msg: ', msg);
|
// 兼容不同格式的 payload(本地推送 vs 远程推送)
|
if (typeof msg.payload === "string") {
|
payload = JSON.parse(msg.payload); // 远程推送可能是字符串,需解析
|
} else {
|
payload = msg.payload; // 本地推送是对象
|
}
|
this.handlePushJump(payload); // 处理跳转
|
});
|
|
// 个推v1版本只能通过透传传参
|
plus.push.addEventListener('receive', (msg) => {
|
console.log('收到 V1 版本透传消息:', msg);
|
// 仅透传模板需要(通知模板无需处理)
|
if (msg.payload) {
|
this.handlePushJump(msg.payload);
|
}
|
}, false);
|
// #endif
|
},
|
onShow: function() {
|
console.log('App Show')
|
|
},
|
onHide: function() {
|
console.log('App Hide')
|
},
|
methods: {
|
// 处理通知跳转逻辑
|
handlePushJump(payload) {
|
console.log('payload-enter: ', payload);
|
if (!payload || !payload.pagePath) return;
|
|
// 确保 App 处于前台
|
// plus.runtime.foreground();
|
|
// 跳转到指定页面
|
setTimeout(() => {
|
uni.navigateTo({
|
url: `${payload.pagePath}?itemId=${payload.itemId}`, // 携带参数
|
fail: (err) => {
|
// 若页面栈满(最多10层),使用 redirectTo 替换当前页面
|
uni.redirectTo({
|
url: `${payload.pagePath}?itemId=${payload.itemId}`,
|
});
|
}
|
});
|
}, 300)
|
}
|
}
|
}
|
</script>
|
|
<style>
|
/*每个页面公共css */
|
.over {
|
color: #888;
|
font-size: 28rpx;
|
text-align: center;
|
padding: 60rpx 0;
|
}
|
|
/* 用于解决picker内部设置 disabled input 时不响应的问题 */
|
.picker-overlay {
|
box-sizing: border-box;
|
position: absolute;
|
top: 0;
|
left: 0;
|
width: 100%;
|
height: 100%;
|
background-color: transparent;
|
/* 透明背景 */
|
z-index: 1;
|
/* 确保在 input 上方 */
|
}
|
</style>
|