BeforeMount
BeforeMount
  • 发布:2025-08-19 10:41
  • 更新:2025-08-20 12:03
  • 阅读:53

ios给了网络权限并且有网但是app没网,getNetworkType为none

分类:uni-app

跑自定义基座是没问题,
发testflight有的机器没问题,有的有问题,上线了之前有客户反馈,我说是ios系统低打回了,因为我复现不了,偶尔能复现但是重下或者等几分钟好像能正常,
有的可以通过切网络就正常了,
现在我的机器必现,一直显示没网,怎么处理都显示没网,
看代码networkType拿到的一直是none,但是基座调试不出来,基座给了网络权限就有网,不弹提示
然后我排查测试发现个情况,我开了抓包请求和图可以正常请求回来,但是networkType还是反的none,关了抓包请求和图就反不回来,可能是什么问题呢?

如果是请求和图能正常返回,我还可以从代码上规避下,现在是确实是有网拿不到网络,没什么思路

cli是4.66 hb是4.65

function getNetworkOk() {  
  return new Promise((resolve, reject) => {  
    const timeoutId = setTimeout(() => {  
      console.log('获取网络状态超时,默认认为有网络');  
      resolve(true);  
    }, 2000);  

    const maxRetries = 2;  
    let retryCount = 0;  
    const retryDelay = 500;  

    function checkNetworkStatus() {  
      uni.getNetworkType({  
        success: function (res) {  
          clearTimeout(timeoutId);  
          uni.showToast({  
            title: '!!!' + JSON.stringify(res),  
            icon: 'none',  
          })  

          if (res && res.networkType) {  
            if (res.networkType === 'none') {  
              console.log('当前无网络');  
              resolve(false);  
            } else {  
              resolve(true);  
            }  
          } else {  
            console.warn('获取网络类型失败: res为空或不包含networkType');  
            // 重试逻辑  
            if (retryCount < maxRetries) {  
              retryCount++;  
              console.log(`重试获取网络状态 (第 ${retryCount} 次)`);  
              setTimeout(checkNetworkStatus, retryDelay);  
            } else {  
              resolve(true);  
            }  
          }  
        },  
        fail: function (err) {  
          clearTimeout(timeoutId);  
          console.log('获取网络状态失败', err);  
          if (retryCount < maxRetries) {  
            retryCount++;  
            console.log(`重试获取网络状态 (第 ${retryCount} 次)`);  
            setTimeout(checkNetworkStatus, retryDelay);  
          } else {  
            resolve(true);  
          }  
        }  
      });  
    }  

    checkNetworkStatus();  
  });  
}
2025-08-19 10:41 负责人:无 分享
已邀请:
BeforeMount

BeforeMount (作者)

我想抓包试试,开着stream抓包有网,页面可以正常加载了,但是还是弹没有网弹窗,关了抓包,页面就又恢复没网加载不出来,谁帮我分析下是哪的问题

2***@qq.com

2***@qq.com

初步怀疑是ios“本地网络”权限的问题,首次安装App时,一但拒绝过/同意过,ios的系统设置中上就无法重新显示设置“本地网络”。

  • BeforeMount (作者)

    本地网络影响上网吗 感觉所有权限每次都给了

    2025-08-20 13:17

  • BeforeMount (作者)

    我在manifest里加了 "infoPlist" : {

    "NSLocalNetworkUsageDescription" : "需要访问网络以检测网络状态"

    }也没有效果

    2025-08-20 16:20

要回复问题请先登录注册