1***@qq.com
1***@qq.com
  • 发布:2025-06-21 16:19
  • 更新:2026-02-04 16:46
  • 阅读:229

uniapp x 打包ios 第一次运行空白,重新运行正常显示

分类:uni-app x

uniapp x 打包IOS APP 后,第一次运行 手机页面空白,是由于IOS需要进行网络授权,导致没授权时,请求不通;授权后无法重新加载数据,请问如何处理???????

2025-06-21 16:19 负责人:无 分享
已邀请:
DCloud_App_Array

DCloud_App_Array

网络请求失败后提供一个重试按钮,用户点击后再重新加载。
或者添加定时刷新机制,失败后定时更新。

ttbobo

ttbobo

···js
// iOS网络轮询检测函数
function startNetworkCheck() {
// 先检查当前网络状态
uni.getNetworkType({
success: (res) => {
const isConnected = res.networkType !== 'none';
lastNetworkState = isConnected;

  // 如果当前有网络,标记已加载,不需要轮询  
  if (isConnected) {  
    hasLoadedData = true;  
    console.log('当前有网络,无需轮询');  
    return;  
  }  

  // 无网络时才启动轮询  
  console.log('当前无网络,启动轮询检测');  
  let checkCount = 0;  
  const maxChecks = 120; // 最多检测120次,即120秒  

  networkCheckTimer = setInterval(() => {  
    checkCount++;  
    uni.getNetworkType({  
      success: (res) => {  
        const isConnected = res.networkType !== 'none';  
        console.log(`网络检测第${checkCount}次:`, res.networkType, isConnected);  

        // 从无网络变为有网络  
        if (isConnected && !hasLoadedData) {  
          console.log('=== 检测到网络恢复,重新加载数据 ===');  
          hasLoadedData = true;  
          reloadDataFlag.value++;  
          initData();  
          stopNetworkCheck();  
        }  

        lastNetworkState = isConnected;  

        // 超过最大检测次数,停止  
        if (checkCount >= maxChecks) {  
          stopNetworkCheck();  
        }  
      }  
    });  
  }, 1000); // 每秒检测一次  
}  

});
}

function stopNetworkCheck() {
if (networkCheckTimer) {
clearInterval(networkCheckTimer);
networkCheckTimer = null;
}
} 用轮训去检测可以解决
onUnmounted(() => {
stopNetworkCheck();
});
// iOS网络轮询检测
let networkCheckTimer = null;
let lastNetworkState = true; // 上次网络状态
let hasLoadedData = false; // 是否已成功加载过数据
const reloadDataFlag = ref(0); // 通知子组件重新加载
provide('reloadDataFlag', reloadDataFlag); // 通知子组件

子组件:
// 监听网络恢复后重新加载
const reloadDataFlag = inject('reloadDataFlag', ref(0));
watch(reloadDataFlag, (val) => {
if (val > 0 && dataList.value.length === 0) {
console.log('FindProduct: 重新加载');
getProductTypeList();
}
});

要回复问题请先登录注册