| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175 | /** * Shopro 第三方平台功能聚合 * @version 1.0.3 * @author lidongtony * @param {String} name - 厂商+平台名称 * @param {String} provider - 厂商 * @param {String} platform - 平台名称 * @param {String} os - 系统型号 * @param {Object} device - 设备信息 */import { isEmpty } from 'lodash';// #ifdef H5import { isWxBrowser } from '@/sheep/helper/utils';// #endifimport wechat from './provider/wechat/index.js';import apple from './provider/apple';import share from './share';import Pay from './pay';const device = uni.getSystemInfoSync();const os = device.platform;let name = '';let provider = '';let platform = '';let isWechatInstalled = true;// #ifdef H5if (isWxBrowser()) {  name = 'WechatOfficialAccount';  provider = 'wechat';  platform = 'officialAccount';} else {  name = 'H5';  platform = 'h5';}// #endif// #ifdef APP-PLUSname = 'App';platform = 'openPlatform';// 检查微信客户端是否安装,否则AppleStore会因此拒绝上架if (os === 'ios') {  isWechatInstalled = plus.ios.import('WXApi').isWXAppInstalled();}// #endif// #ifdef MP-WEIXINname = 'WechatMiniProgram';platform = 'miniProgram';provider = 'wechat';// #endifif (isEmpty(name)) {  uni.showToast({    title: '暂不支持该平台',    icon: 'none',  });}// 加载当前平台前置行为const load = () => {  if (provider === 'wechat') {    wechat.load();  }};// 使用厂商独占sdk name = 'wechat' | 'alipay' | 'apple'const useProvider = (_provider = '') => {  if (_provider === '') _provider = provider;  if (_provider === 'wechat') return wechat;  if (_provider === 'apple') return apple;};// 支付服务转发const pay = (payment, orderType, orderSN) => {  return new Pay(payment, orderType, orderSN);};/** * 检查更新 (只检查小程序和App) * @param {Boolean} silence - 静默检查 */const checkUpdate = (silence = false) => {  let canUpdate;  // #ifdef MP-WEIXIN  useProvider().checkUpdate(silence);  // #endif  // #ifdef APP-PLUS  // TODO: 热更新  // #endif};/** * 检查网络 * @param {Boolean} silence - 静默检查 */async function checkNetwork() {  const networkStatus = await uni.getNetworkType();  if (networkStatus.networkType == 'none') {    return Promise.resolve(false);  }  return Promise.resolve(true);}// 获取小程序胶囊信息const getCapsule = () => {  // #ifdef MP  let capsule = uni.getMenuButtonBoundingClientRect();  if (!capsule) {    capsule = {      bottom: 56,      height: 32,      left: 278,      right: 365,      top: 24,      width: 87,    };  }  return capsule;  // #endif  // #ifndef MP  return {    bottom: 56,    height: 32,    left: 278,    right: 365,    top: 24,    width: 87,  };  // #endif};const capsule = getCapsule();// 标题栏高度const getNavBar = () => {  return device.statusBarHeight + 44;};const navbar = getNavBar();function getLandingPage() {  let page = '';  // #ifdef H5  page = location.href.split('?')[0];  // #endif  return page;}// 设置ios+公众号网页落地页 解决微信sdk签名问题const landingPage = getLandingPage();const _platform = {  name,  device,  os,  provider,  platform,  useProvider,  checkUpdate,  checkNetwork,  pay,  share,  load,  capsule,  navbar,  landingPage,  isWechatInstalled,};export default _platform;
 |