uni-app 在最新的ios15.4下uni.request请求无反应

uni-app 在最新的ios15.4下uni.request请求无反应

开发环境 版本号 项目创建方式
Windows win10 HBuilderX
产品分类:uniapp/App

PC开发环境操作系统:Windows

HBuilderX类型:正式

HBuilderX版本号:3.3.13

手机系统:iOS

手机系统版本号:iOS 15

手机厂商:苹果

手机机型:ipad

页面类型:vue

vue版本:vue2

打包方式:云端

项目创建方式:HBuilderX

示例代码:

uni.request({ url: baseUrl + options.url, method: options.method || ‘POST’, data: options.data || {}, header: { //Authorization: uni.getStorageSync(‘token’) token: uni.getStorageSync(‘token’) }, success: (res) => { console.log(’--------res--------’ + JSON.stringify(res)); if (res == ‘’) { return uni.showToast({ icon: ‘loading’, title: ‘获取数据失败’ }); } if (res.statusCode == 200) { if (res.data.code == 10001 || res.data.code == 10002 || res.data.code == 10003 || res.data.code == 10004) {

uni.hideLoading(); uni.reLaunch({ url: ‘/pages/login/login’ }); } else { resolve(res); }

} else { console.log(’--------statusCode!=200--------’ + JSON.stringify(err)); uni.hideLoading(); return uni.showToast({ icon: ‘none’, title: res.data.message }); } }, fail: (err) => { console.log(’--------fail--------’ + JSON.stringify(err)); uni.hideLoading(); return uni.showToast({ icon: ‘loading’, title: ‘请求失败’ }) reject(err) } })


操作步骤:
开发的app,在苹果ipad下ios15.1之前都好用,最新的ios15.4下uni.request请求没有任何反应

预期结果:
ios15.4下uni.request请求好用

实际结果:
ios15.4下uni.request请求没有返佣

bug描述:
开发的app,在苹果ipad下ios15.1之前都好用,最新的ios15.4下uni.request请求没有任何反应

更多关于uni-app 在最新的ios15.4下uni.request请求无反应的实战教程也可以访问 https://www.itying.com/category-93-b0.html

4 回复

接口问题,我手机是ios15.4.1

更多关于uni-app 在最新的ios15.4下uni.request请求无反应的实战教程也可以访问 https://www.itying.com/category-93-b0.html


解决问题了吗,我也遇到了,望指教

有找到原因吗?我这边是ios16.1。用的离线打包环境3.3.10。发布到商店的正式版有的正常,有的不正常。从本地xcode离线工程下载不正常的手机也能正常使用了。

在使用 uni-app 开发时,如果在 iOS 15.4 下 uni.request 请求无反应,可能是由于以下几个原因导致的。你可以按照以下步骤进行排查和解决:


1. 检查网络权限

  • iOS 15.4 对网络请求的权限要求更加严格,确保在 manifest.json 中正确配置了网络权限。
  • manifest.json 中添加以下配置:
    "app-plus": {
      "distribute": {
        "ios": {
          "permissions": {
            "NSAppTransportSecurity": {
              "NSAllowsArbitraryLoads": true
            }
          }
        }
      }
    }
    
  • 如果请求的是非 HTTPS 地址,确保开启 NSAllowsArbitraryLoads

2. 检查请求地址

  • 确保请求的 URL 是正确的,并且服务器可以正常访问。
  • 如果是本地调试,确保使用的是真实的 IP 地址(如 192.168.x.x),而不是 localhost127.0.0.1

3. 检查请求头

  • iOS 15.4 对请求头的处理更加严格,确保请求头中不包含非法字符或未定义的字段。
  • 例如,Content-Type 需要正确设置:
    uni.request({
      url: 'https://example.com/api',
      method: 'POST',
      header: {
        'Content-Type': 'application/json'
      },
      success: (res) => {
        console.log(res.data);
      }
    });
    

4. 检查 SSL 证书

  • 如果请求的是 HTTPS 地址,确保服务器的 SSL 证书是有效的。
  • iOS 15.4 对 SSL 证书的要求更加严格,如果证书无效或过期,请求可能会被阻止。

5. 检查网络环境

  • 确保设备网络连接正常,可以尝试切换到其他网络(如 Wi-Fi 或蜂窝数据)进行测试。
  • 如果是模拟器,确保模拟器的网络设置正确。

6. 调试代码

  • uni.request 中添加完整的回调函数,检查是否有错误信息:
    uni.request({
      url: 'https://example.com/api',
      method: 'GET',
      success: (res) => {
        console.log('请求成功', res.data);
      },
      fail: (err) => {
        console.log('请求失败', err);
      },
      complete: () => {
        console.log('请求完成');
      }
    });
    
  • 如果有错误信息,可以根据错误信息进一步排查。

7. 更新 uni-app 版本

  • 确保使用的是最新版本的 uni-app,旧版本可能存在兼容性问题。
  • 更新方法:
    npm update @dcloudio/uni-app
    

8. iOS 系统问题

  • 如果上述方法都无效,可能是 iOS 15.4 系统的 Bug 或限制。可以尝试在真机上测试,或者等待系统更新。

9. 使用原生请求

  • 如果 uni.request 仍然无法使用,可以尝试使用原生请求(如 XMLHttpRequestfetch)进行测试:
    fetch('https://example.com/api')
      .then(response => response.json())
      .then(data => console.log(data))
      .catch(error => console.error(error));
回到顶部