index.js 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. /**
  2. * SoundChain 第三方平台功能聚合
  3. * @version 1.0.3
  4. * @author lidongtony
  5. * @param {String} name - 厂商+平台名称
  6. * @param {String} provider - 厂商
  7. * @param {String} platform - 平台名称
  8. * @param {String} os - 系统型号
  9. * @param {Object} device - 设备信息
  10. */
  11. import { isEmpty } from 'lodash-es';
  12. // #ifdef H5
  13. import { isWxBrowser } from '@/common/helper/utils';
  14. // #endif
  15. const device = uni.getWindowInfo();
  16. const os = uni.getDeviceInfo().platform;
  17. let name = '';
  18. let provider = '';
  19. let platform = '';
  20. let isWechatInstalled = true;
  21. // #ifdef H5
  22. if (isWxBrowser()) {
  23. name = 'WechatOfficialAccount';
  24. provider = 'wechat';
  25. platform = 'officialAccount';
  26. } else {
  27. name = 'H5';
  28. platform = 'h5';
  29. }
  30. // #endif
  31. // #ifdef APP-PLUS
  32. name = 'App';
  33. platform = 'openPlatform';
  34. // 检查微信客户端是否安装,否则AppleStore会因此拒绝上架
  35. if (os === 'ios') {
  36. isWechatInstalled = plus.ios.import('WXApi').isWXAppInstalled();
  37. }
  38. // #endif
  39. // #ifdef MP-WEIXIN
  40. name = 'WechatMiniProgram';
  41. platform = 'miniProgram';
  42. provider = 'wechat';
  43. // #endif
  44. if (isEmpty(name)) {
  45. uni.showToast({
  46. title: '暂不支持该平台',
  47. icon: 'none',
  48. });
  49. }
  50. /**
  51. * 检查网络
  52. * @param {Boolean} silence - 静默检查
  53. */
  54. async function checkNetwork() {
  55. const networkStatus = await uni.getNetworkType();
  56. if (networkStatus.networkType == 'none') {
  57. return Promise.resolve(false);
  58. }
  59. return Promise.resolve(true);
  60. }
  61. // 获取小程序胶囊信息
  62. const getCapsule = () => {
  63. // #ifdef MP
  64. let capsule = uni.getMenuButtonBoundingClientRect();
  65. if (!capsule) {
  66. capsule = {
  67. bottom: 56,
  68. height: 32,
  69. left: 278,
  70. right: 365,
  71. top: 24,
  72. width: 87,
  73. };
  74. }
  75. return capsule;
  76. // #endif
  77. // #ifndef MP
  78. return {
  79. bottom: 56,
  80. height: 32,
  81. left: 278,
  82. right: 365,
  83. top: 24,
  84. width: 87,
  85. };
  86. // #endif
  87. };
  88. const capsule = getCapsule();
  89. // 标题栏高度
  90. const getNavBar = () => {
  91. return device.statusBarHeight + 44;
  92. };
  93. const navbar = getNavBar();
  94. const _platform = {
  95. name,
  96. device,
  97. os,
  98. provider,
  99. platform,
  100. checkNetwork,
  101. capsule,
  102. navbar,
  103. isWechatInstalled,
  104. };
  105. export default _platform;