You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
114 lines
3.0 KiB
114 lines
3.0 KiB
import { Component } from 'react' |
|
import SDK from 'sr-sdk-h5' |
|
|
|
import { Provider } from 'react-redux' |
|
import store from './store' |
|
|
|
import './app.scss' |
|
import { getInstance, redirectTo } from '@/utils/application' |
|
import { getStorage, removeStorage } from '@/utils/storage' |
|
import websocket from '@/api/websocket' |
|
import {fetchOpMap, fetchRouteWs} from '@/api/api' |
|
|
|
// IOS Promise finally 兼容 |
|
const promiseFinally = require('promise.prototype.finally'); |
|
promiseFinally.shim(); |
|
|
|
/** |
|
* 有数埋点SDK 默认配置 |
|
* 使用方法请参考文档 https://mp.zhls.qq.com/youshu-docs/develop/sdk/Taro.html |
|
* 如对有数SDK埋点接入有任何疑问,请联系微信:sr_data_service |
|
*/ |
|
|
|
window.srt = new SDK({ |
|
|
|
/** |
|
* 有数 - ka‘接入测试用’ 分配的 app_id,对应的业务 |
|
*/ |
|
token: 'bi72fccc7184ef45f9', |
|
|
|
/** |
|
* 传入自定义的后台上报接口,若传入则token将无意义 |
|
*/ |
|
// serverUrl: 'aaa.baidu.com', |
|
|
|
/** |
|
* 开启打印调试信息, 默认 false |
|
*/ |
|
debug: false, |
|
|
|
/** |
|
* 代理配置,自动代理页面浏览事件、页面离开事件、点击事件,默认 false。建议开启 |
|
*/ |
|
autoTrack: false, |
|
|
|
/** |
|
* 自动开始上报,默认 true。建议开启 |
|
*/ |
|
autoStart: false, |
|
|
|
/** |
|
* 上报返回的钩子函数,返回 false 则代表不通过,SDK不会清除本地记录,会继续重拾 |
|
*/ |
|
// onUploaded?: () => {}, |
|
|
|
/** |
|
* 跳过初始化时对 token 的必要检查 |
|
* 满足场景:服务商转发SDK上报数据,在服务端回填appid,解决大量小程序同时接入的问题,默认false |
|
*/ |
|
// skipTokenCheck: false, |
|
|
|
/** |
|
* 小程序appid |
|
*/ |
|
appid: '' |
|
}); |
|
|
|
// window.srt.setChan({chan_id: 'xxx'}) // 设置渠道,渠道信息将会被设置在props.chan对象中 |
|
|
|
// window.srt.setUser({user_id: 'xxx'}) // 设置用户信息,用户信息将会被设置在props.wx_user对象中 |
|
|
|
class App extends Component { |
|
componentDidMount() { |
|
} |
|
|
|
componentDidShow() { |
|
console.log('instance', getInstance(), 'app mount') |
|
|
|
if (!getInstance().router.path.startsWith('/pages/login/login')) { |
|
// 非登录页,检查token是否存在 |
|
const token = getStorage('_t'); |
|
if (!token) { |
|
setTimeout(() => redirectTo({url: '/pages/login/login'}), 500) |
|
} else { |
|
// 尝试连接 websocket |
|
// const [opMap, wsRes] = await ; |
|
Promise.all([fetchOpMap(), fetchRouteWs()]) |
|
.then(([opMap, wsRes]) => { |
|
console.log('token', token, opMap, wsRes) |
|
websocket.init(token, opMap.data, wsRes.data); |
|
window.websocket = websocket; |
|
}) |
|
.catch(err => { |
|
console.log('ws conn error:', err) |
|
removeStorage('_t') |
|
setTimeout(() => redirectTo({url: '/pages/login/login'}), 500) |
|
}) |
|
} |
|
} |
|
} |
|
|
|
componentDidHide() { } |
|
|
|
// this.props.children 是将要会渲染的页面 |
|
render() { |
|
return ( |
|
<Provider store={store}> |
|
{this.props.children} |
|
</Provider> |
|
) |
|
|
|
} |
|
} |
|
|
|
export default App
|
|
|