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

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