gogogwl
gogogwl
  • 发布:2021-06-10 10:40
  • 更新:2021-06-11 12:53
  • 阅读:590

【报Bug】IOS离线打包的App使用websocket无法访问本地网络

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: Windows 10

HBuilderX类型: 正式

HBuilderX版本号: 3.1.11

手机系统: iOS

手机系统版本号: IOS 14

手机厂商: 苹果

手机机型: iPad(第5代)

页面类型: vue

打包方式: 离线

项目创建方式: HBuilderX

示例代码:
connect()  
            {  
                if(!this.control.connecting)  
                {  
                    let server ='http://192.168.1.187:8888/test';  
                    this.control.socket = uni.connectSocket({  
                            url: server,  
                            success:(res)=>{  
                            },  
                            complete:()=>{  
                                this.control.connecting = false;  
                            },  
                    });  

                    this.control.socket.onOpen((res)=>{  
                        this.control.connected = true;  
                    });  
                    this.control.socket.onError((res)=>{  
                        console.log('onSocketError');  
                        this.control.connected = false;  
                    });  
                    this.control.socket.onClose((res)=>{  
                        console.log('onSocketClose');  
                        this.control.connected = false;  
                    });  
                }  
            }

操作步骤:

使用uni.connectSocket连接内网服务器立刻会触发onError

预期结果:

可以连接服务器

实际结果:

无法连接服务器

bug描述:

APP使用websocket连接到内网的PC,在IOS14以前的系统上没有问题,因为IOS14引入了本地网络权限,APP在使用websocket时不会触发本地网络授权的弹框,导致无法访问本地网络。 但是真机调试和云端打包都没有问题,只有离线打包时无法访问本地网络,是不是离线打包的Demo里缺少某些设置导致的问题? 示例代码如下,socket在连接时会立即触发onError,无法连接成功。
另:已经在离线打包项目的app-info.plist文件中添加了NSLocalNetworkUsageDescription描述,但并没有起作用。

2021-06-10 10:40 负责人:无 分享
已邀请:
DCloud_iOS_WZT

DCloud_iOS_WZT

自定义基座调试有问题吗

  • gogogwl (作者)

    没试过自定义调试基座,理论上来说应该也没问题,因为自定义调试基座也是云端生成的。

    2021-06-11 15:44

  • gogogwl (作者)

    从目前的情况来看应该是离线打包的项目缺少某些东西导致的。

    2021-06-11 15:44

  • DCloud_iOS_WZT

    这个只能找找配置了,内网的别人应该也无法测试,试下其他外网地址能请求到么

    2021-06-11 15:53

  • gogogwl (作者)

    回复 DCloud_iOS_WZT: 外网请求没有问题,是因为没有本地网络权限导致的,并不需要访问到实际的数据,随便访问一个内网不存在的ip地址都行,正常应该是过几秒连接超时,现在是没有限权瞬间就返回error了

    2021-06-16 10:24

该问题目前已经被锁定, 无法添加新回复