作為跨平台開發的利器,uniapp在開發過程中有著許多便利之處,但在進行雲端打包時,我們可能會遭遇要求網路時出現的問題。
最近在uniapp開發過程中,我使用了uniCloud的雲端函數,以及聚合資料的API接口,但在雲端打包時卻遇到了無法請求網路的問題,一度讓我苦惱不已。
經過多次測試和查詢相關文檔,我發現這是由於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雲端打包無法要求網絡的詳細內容。更多資訊請關注PHP中文網其他相關文章!