App.vue 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. <script>
  2. export default {
  3. onLaunch: function() {
  4. // 获取并保存设备信息
  5. if (!uni.getStorageSync("deviceInfo")) {
  6. const deviceInfo = uni.getDeviceInfo()
  7. uni.setStorageSync("deviceInfo", deviceInfo)
  8. console.log("初始化设备信息", deviceInfo)
  9. }
  10. // ⚠️ 在小程序启动时立即设置通话结束页(关键:处理被叫接听场景)
  11. this.setupVoipEndPage()
  12. },
  13. onShow: function() {
  14. // 每次小程序显示时也设置通话结束页(确保被唤起时也生效)
  15. this.setupVoipEndPage()
  16. },
  17. onHide: function() {
  18. console.log('App Hide')
  19. },
  20. methods: {
  21. // 设置 VoIP 通话结束页面
  22. setupVoipEndPage() {
  23. try {
  24. // 判断是否在 WMPF 环境
  25. if (typeof wmpf === 'undefined') {
  26. // 非 WMPF 环境,直接返回
  27. return
  28. }
  29. // 尝试获取插件(开发环境可能不可用)
  30. const wmpfVoip = requirePlugin('wmpf-voip')?.default
  31. if (wmpfVoip && typeof wmpfVoip.setVoipEndPagePath === 'function') {
  32. wmpfVoip.setVoipEndPagePath({
  33. url: '/pages/device/index', // 通话结束直接返回首页
  34. key: 'Call',
  35. routeType: 'redirectTo'
  36. })
  37. console.log('✅ [App.vue] 已设置通话结束跳转到首页')
  38. }
  39. } catch (e) {
  40. // 开发环境插件不可用,静默忽略
  41. // console.error('❌ [App.vue] 设置通话结束页失败:', e)
  42. }
  43. }
  44. }
  45. }
  46. </script>
  47. <style lang="scss">
  48. @import "uview-plus/index.scss";
  49. </style>