uniapp云打包无法请求网络

作为跨平台开发的利器,uniapp在开发过程中有着许多便利之处,但在进行云打包时,我们可能会遭遇请求网络时出现的问题。

最近在uniapp开发过程中,我使用了uniCloud的云函数,以及聚合数据的API接口,但在云打包时却遇到了无法请求网络的问题,一度让我苦恼不已。

经过多次测试和查询相关文档,我发现这是由于uniapp云打包默认开启沙箱模式导致的,而在沙箱模式下,网络请求处于限制状态,无法请求到外部网络。

那么,接下来我将为大家详细介绍如何解决uniapp云打包无法请求网络的问题。

解决uniapp云打包无法请求网络的问题

方案一:开启非沙箱模式

在云打包之前,我们需要修改打包配置,将uniapp的沙箱模式关闭,这样就可以解决云打包无法请求网络的问题。我们在manifest.json文件中添加以下代码:

"app-plus":{
    "sandbox":false
}

如上述代码所示,我们需要在app-plus节点中添加sandbox配置,将其设置为false即可开启非沙箱模式。

但需要注意的是,开启非沙箱模式会有一定的安全风险,因此在应用场景非常必要的情况下才进行操作。

方案二:添加网络白名单

另外一种解决方案是,添加网络白名单,允许应用程序访问外部网络。我们可以在manifest.json文件中,通过添加以下代码来实现:

"app-plus":{
    "networkTimeout":{
        "request":30000,
        "connectSocket":30000,
        "uploadFile":30000,
        "downloadFile":30000
    },
    "debug":false,
    "subpackages":[],
    "permission":{
        "scope.userLocation":{
            "desc":"你的位置信息将用于小程序位置接口的效果展示"
        }
    },
    "navigateToMiniProgramAppIdList":[],
    "preloadRule":{
        "page":{
            "alias":[],
            "path":[]
        },
        "network":{
            "include":[
                "**/**/*.png",
                "**/**/*.jpg",
                "**/**/*.jpeg",
                "**/**/*.gif",
                "**/**/*.svg",
                "**/**/*.js",
                "**/**/*.css",
                "**/**/*.wxss",
                "**/**/*.wxml"
            ],
            "exclude":[]
        },
        "package":{
            "exclude":[],
            "include":[]
        },
        "plugin":{
            "exclude":[],
            "include":[]
        }
    },
    "navigateToKeepAliveList":[],
    "subscribeMessage":{
        "tmplIds":[]
    },
    "usingComponents":{},
    "sandbox":false,
    "style":{
        "navigationBarTitleText":""
    },
    "window":{
        "navigationBarBackgroundColor":"#fff",
        "navigationBarTextStyle":"black",
        "navigationBarTitleText":"uni-app",
        "backgroundColor":"#F5F5F5",
        "backgroundTextStyle":"light",
        "enablePullDownRefresh":false,
        "enableBackToTop":false,
        "navigationStyle":"default"
    },
    "networkTimeout":{
        "request":10000,
        "connectSocket":10000,
        "uploadFile":10000,
        "downloadFile":10000
    },
    "networkSecurity":{
        "sslPinning":true
    },
    "navigateToMiniProgram":{
        "appParam":{
            "xxParam":"yy"
        }
    },
    "plugins":{
        "myPlugin":{
            "version":"*",
            "provider":"wxidxxxxxxxxxxxxxxxxx"
        }
    },
    "cloud":{
        "functionUrl":"https://api.xxx.com"
    },
    "requiredBackgroundModes":["audio"]
},
"networkTimeout":{
    "request":10000,
    "connectSocket":10000,
    "uploadFile":10000,
    "downloadFile":10000
},
"networkSecurity":{
    "sslPinning":true
},
"navigateToMiniProgram":{
    "appParam":{
        "xxParam":"yy"
    }
},
"plugins":{
    "myPlugin":{
        "version":"*",
        "provider":"wxidxxxxxxxxxxxxxxxxx"
    }
},
"cloud":{
    "functionUrl":"https://api.xxx.com"
},
"requiredBackgroundModes":["audio"]
}

具体来说,我们需要在app-plus节点下添加以下配置:

"networkSecurity":{
    "sslPinning":true
},
"cloud":{
    "functionUrl":"https://api.xxx.com"
}

以上代码中,networkSecurity节点中的sslPinning属性用于保证网络请求的安全性,而cloud节点的functionUrl属性则为我们的应用程序添加了网络请求白名单,允许我们的应用访问API接口。

至此,我们已经成功解决了uniapp云打包无法请求网络的问题,如果你也遇到了类似的困扰,希望本文能够对你有所帮助。

以上就是uniapp云打包无法请求网络的详细内容,更多请关注www.sxiaw.com其它相关文章!