描述
使用uniApp打包IOSApp发布后,在初次进入APP时,会有网络连接权限获取的过程,然而,在获取权限时,调用接口的过程并没有停下来。所以会需要自己手动再次调用接口才行。
解决方案
可以在对接口封装时,添加uniApp的监听网络变化的APIuni.onNetworkStatusChange,获取网络变化时刷新当前页面。
实现代码
- // An highlighted block
- const BASE_URL = "这里是地址"
- export const request = ( url='', data={}, method="GET" ) => {
- let reLaunchPage = 1; //给个标志,预防多次刷新
- const header_tmp = {
- "token": "这里是token"
- };
- return new Promise((resolve,reject) => {
- //监听网络变化
- uni.onNetworkStatusChange(function (res) {
- // res.isConnected == true 网络连接 ;res.networkType是网络类型2G、3G、4G、WIFI等,可以通过判断类型,反馈网络情况的好坏
- if ( res.isConnected && res.networkType != 'none' ) {
- console.log('网络已连接, 欢迎回来!');
- setTimeout(() => {
- // 刷新当前页
- if ( reLaunchPage == 1 ) {
- reLaunchPage += 1;
- const page = getCurrentPages(); //获取当前页面的路由信息
- const { options, route } = page[page.length - 1];
- const path = `/${route}?${qsRouterStringify(options)}`;
- uni.reLaunch({ url: path });//从新跳转当前页面
- return false;
- }
- }, 1500)
- }
- })
- // 连接网络后,继续调用接口
- uni.request({
- url: BASE_URL + url,
- method: method,
- data: data,
- header: header_tmp,
- success: (res) => {
- //自己写处理方法
- },
- fail: (err) => {
- //自己写处理方法
- },
- complete (res) {
- //自己写处理方法
- },
- });
- });
- };
复制代码- export const qsStringify = ( obj ) => { // 格式转换: { a: 'b', b: 'c' } => 'a=b&b=c'
- return Object.keys(obj).map((key) => `${key}=${obj[key]}`).join("&");
- };
复制代码 来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |