亚洲乱色熟女一区二区三区丝袜,天堂√中文最新版在线,亚洲精品乱码久久久久久蜜桃图片,香蕉久久久久久av成人,欧美丰满熟妇bbb久久久

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

[轉(zhuǎn)帖]DCloud關(guān)于Appstore審核反饋廢棄UIWebview APIs問題的說明

freeflydom
2023年5月29日 16:34 本文熱度 1754


此文檔將不再維護,請參考新文檔:https://uniapp.dcloud.io/tutorial/app-ios-uiwebview

iOS有UIWebview和WKWebview兩種webview。從iOS13開始蘋果將UIWebview列為過期API。

2020年4月起App Store將不再接受使用UIWebView的新App上架、2020年12月起將不再接受使用UIWebView的App更新。

從HBuilderX 2.2.5起,iOS上默認均已經(jīng)是WKWebview,除非開發(fā)者手動在代碼中指定要用UIWebview,否則實際渲染的頁面都是在WKWebview里渲染的。
不過,雖然實際頁面是WKWebview渲染的,但App底層引擎源碼里仍然有UIWebview的可選引用。Appstore的機審會發(fā)現(xiàn)二進制代碼中包括對UIWebview的引用,從而引發(fā)告警。
從HBuilderX 2.6.6起,uiWebview從基礎(chǔ)引擎中移除,變成可選模塊(manifest里選擇)。機審也沒有提示了。

老HBuilder和HBuilderX 2.2.5之前的版本,App端策略如下:

  • 5+ APP(含wap2app)
    默認為UIWebview。

  • uni-app
    vue頁面中web-view組件默認使用UIWebview,nvue頁面中web-view組件使用WKWebview。

HBuilderX 2.2.5+版本已將iOS上所有webview的默認內(nèi)核由UIWebview調(diào)整為WKWebview。


HBuilderX 2.6.6+版本已將iOS中所有UIWebview代碼從基礎(chǔ)引擎中摘除,獨立為UIWebview模塊,如繼續(xù)使用UIWebview則需在manifest中勾選使用UIWebview模塊

配置使用UIWebview模塊

打開項目的manifest.json文件,在“App模塊配置”項中勾選“iOS UIWebview”:

配置后需提交云端打包生效

5+App(含wap2app)如何切換iOS默認使用UIWebview或WKWebview內(nèi)核?

HBuilderX 2.2.5以前的版本,iOS上webview的默認為UIWebview,HBuilderX2.2.5及以后的版本默認改為WKWebview。
如果要修改默認值,可在manifest.json中配置。
在manifest.json文件源碼視圖中設置plus -> kernel -> ios 的值為 "WKWebview"或"UIWebview":

    "plus": {  
        "kernel": {  
            "ios": "UIWebview"    //或者 "WKWebview"  
        },  
        // ...  
    }

uni-app 如何配置web-view組件默認使用UIWebview或WKWebview內(nèi)核?

HBuilderX 2.2.5以前的版本,iOS上vue頁面中web-view組件或調(diào)用5+ API創(chuàng)建的Webview窗口默認為UIWebview,HBuilderX2.2.5及以后的版本默認改為WKWebview。
如果要修改默認值,可在manifest.json中配置。
在manifest.json文件源碼視圖中設置 app-plus -> kernel -> ios 的值為 "WKWebview"或"UIWebview":

    "app-plus": {  
        "kernel": {  
            "ios": "UIWebview"    //或者 "WKWebview"  
        },  
        // ...  
    }

nvue頁面中的web-view組件強制使用WKWebview,不可配置

如何使用5+ API(plus.webview.create)創(chuàng)建Webview窗口時指定使用UIWebview或WKWebview內(nèi)核?

創(chuàng)建Webvie窗口時可通過kernel屬性指定內(nèi)核,如下:

// 通過kernel屬性指定Webview的內(nèi)核  
var w = plus.webview.create('https://xxx.xxx.xxx', 'id', {  
    'kernel': 'UIWebview'       //或者'WKWebview'  
    });

更多規(guī)范參考5+ API的 WebviewStyles

使用WKWebview的影響

使用WKWebview替換UIWebview將會影響以下功能:

  • 更嚴格的跨域訪問限制
    WKWebview認為本地html通過js訪問網(wǎng)絡及本地文件都算跨域訪問(這種情況UIWebview不是跨域),跨域時訪問網(wǎng)絡資源使用5+ API(plus.net)來替換xmlhttp等傳統(tǒng)ajax寫法;ajax也不能訪問本地文件,需使用5+ API(plus.io)讀取本地文件,后者有個單獨文章可參考:https://ask.dcloud.net.cn/article/36858。
    使用exif.js等三方庫可能涉及跨目錄的本地圖片下載請求,圖像方向獲取和旋轉(zhuǎn)Plus有專門的API,無需使用js庫做。

  • 由于WKWebview不支持跨域訪問,標準的xhr或jq的ajax,都無法跨域。mui框架中網(wǎng)絡請求判斷為跨域訪問會自動調(diào)用5+ API(plus.net),如果在mui.plusReady觸發(fā)前調(diào)用,因為5+ API沒有準備好會報“script error.filename:lineno:0”錯誤,這時必須保證mui的網(wǎng)絡請求在mui.plusReady后調(diào)用,或者直接改用plus.net寫法。

  • WKWebview下canvas也有跨域問題,比如canvas.toDataURL。
    如果canvas使用網(wǎng)絡圖像遇到跨域問題,需要服務端設置圖像的響應頭:Access-Control-Allow-Origin
    如果canvas使用本地圖像遇到跨域問題,可以使用plus接口將圖像轉(zhuǎn)換為base64再使用,相關(guān)插件:https://ext.dcloud.net.cn/plugin?id=123

  • iOS手機內(nèi)存不足時,如果是UIWebview的應用,系統(tǒng)會整體回收這個App,現(xiàn)象是在重新打開已打開過的App時App整體重啟。而WKWebview則是單個頁面回收,這帶來的壞處就是內(nèi)存不足時,會單個頁面白屏。詳見https://ask.dcloud.net.cn/article/35913。uni-app不涉及此問題,如果是5+App,方式1是在manifest切回UIWebview,暫時UIWebview還可以上架,只是會收到警告。方式2時監(jiān)聽白屏事件,自行恢復頁面:https://ask.dcloud.net.cn/article/36540

  • iOS8、9上的WKWebview不支持websql,iOS10恢復支持

  • 不支持plus.navigator.setCookie

  • 不支持webview的overrideresource方法

  • wk第一次渲染速度略慢于uiwebview;

  • 由于資源攔截的API overrideresource 無法再使用,5+ APP(含wap2app)項目中,云打包時的js原生混淆功能會失效。如果要使用js原生混淆必須使用UIWebview。uni-app有單獨的原生js加密方案,因為uni-app的js不運行在webview里,而是在獨立的jscore里,所以不受影響。

但WKWebview的好處是:節(jié)省內(nèi)存;滾動時懶加載的圖片也可以實時渲染,而uiwebview在滾動停止后懶加載的圖片才能顯示。

如果同時在一個app里使用ui和wk兩種webview,注意2種webview之間的cookie、localstorage、session不共享,但plus.storage是共享的。

uni-app中Webview的使用注意

uni-app的js運行在獨立的jscore中,而不是Webview中,不存在跨域問題。
uni-app的渲染層,在iOS下是強制wkwebview。如果你編寫了renderjs代碼,在渲染層執(zhí)行js,則同樣會遇到跨域問題。此時盡量把與跨域相關(guān)的操作放到普通的js邏輯層操作。
除了渲染層,還有一個web-view組件的問題要注意:

  • uni-app的vue頁面的web-view組件,從HBuilderX 2.2.5+起是WKWebview,之前版本默認是UIWebview

  • uni-app的非自定義組件模式的js邏輯層,在HBuilderX 2.2.5之前是UIWebview。升級到HBuilderX2.3+后可能導致網(wǎng)絡跨域問題,fail{"statusCode":0,"errMsg":"request:fail abort"}。不過非自定義組件已于2019年11月1日起停止支持。

如果需要調(diào)整uni-app下web-view組件的渲染內(nèi)核設置,將manifest.json源碼視圖的app-plus -> kernel -> ios 的值設為 UIWebview。

uni-app的nvue頁面問題

nvue頁面不使用webview渲染,但其中的web-view組件說明如下。

  • nvue的weex 組件模式
    weex模式下的web-view組件是weex自己實現(xiàn)的,它目前仍然使用UIWebview。官方會追蹤weex的升級。

  • nvue的uni-app組件模式
    web-view組件使用WKWebview。不可修改為uiWebview。

三方SDK中UIWebview的使用

目前如下SDK中仍然使用了UIWebview,不管是5+App還是uni-app。

  • DCloud開屏廣告
    HBuilderX 2.2.5版之前,點擊廣告打開的內(nèi)置網(wǎng)頁仍然使用UIWebview加載
    HBuilderX 2.2.5+版本已調(diào)整改為WKWebview。

  • 支付寶
    HBuilderX 2.6.10版本之前,支付寶SDK為15.5.7版本,包含了UIWebview
    HBuilderX 2.6.10+版本已更新支付寶SDK為15.7.4,沒有使用UIWebview

  • 微信登錄、分享、支付
    HBuilderX 2.6.6+版本已更新微信SDK為1.8.6.2版本,沒有使用UIWebview。
    注意微信登錄支付的SDK升級后,會強制要求通用鏈接。另見文檔:https://ask.dcloud.net.cn/article/36445

  • 微博登錄、分享
    HBuilderX 2.6.10版本之前,微博SDK為3.2.5版本,包含了UIWebview
    HBuilderX 2.6.10+版本已更新微博SDK為3.2.7版本,沒有使用UIWebview

  • QQ登錄、分享
    HBuilderX 2.3.4+版本已更新QQSDK為3.3.6,沒有使用UIWebview。

  • 小米登錄
    小米官方SDK中使用了UIWebview,如果提交appstore建議不要使用小米登錄

5+App開發(fā)者建議直接升級為uni-app,一勞永逸,不會有跨域、白屏和無法加密等各種問題。

離線打包配置UIWebview模塊

如果開發(fā)者需要在離線打包工程中使用UIWebview功能,需要在自己的離線工程中配置UIWebview模塊

注意事項

如果配置正確后,提交Appstore,仍然被提示含有UIWebview,那么請檢查你的app是否使用了其他原生插件。
一般或者是配置錯誤,或者是三方原生插件造成。



該文章在 2023/5/29 16:34:52 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點晴ERP是一款針對中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內(nèi)大量中小企業(yè)的青睞。
點晴PMS碼頭管理系統(tǒng)主要針對港口碼頭集裝箱與散貨日常運作、調(diào)度、堆場、車隊、財務費用、相關(guān)報表等業(yè)務管理,結(jié)合碼頭的業(yè)務特點,圍繞調(diào)度、堆場作業(yè)而開發(fā)的。集技術(shù)的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點晴WMS倉儲管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved